zoukankan      html  css  js  c++  java
  • oracle 导入 导出 备份

    Oracle  学习笔记 

    一、创建 oracle 数据库 

    利用 已经创建完了数据库 car1 ,

    二、利用 语句创建一个新的用户,赋予用户新的权限。

    (创建一个用户,对应的给这个用户创建一个方案,里面存储着这个用户的东西)

    创建用户  create   user  ,一般是具有dba权限的用户才可以进行创建

    Create user  admin  identified by  wqhadmin;

    (密码要以字母开头,用数字开头是不允许的)

    但是创建完后,用户没有任何权限

    Grant  connect  to  admin;

    二、对数据库数据进行导入、导出

    导出分为三种:导出数,导出方案(把一个用户的所有东西都导出),导出数据库

    使用exp命令来完成。该命令的常用的选项有:

    导出、导出的时候,使用的不是在SQL 中直接进行导入导出

    而是要在   oracle目录的  bin  目录下 (使用的是bin文件夹里的exp.exe)

    方法一:

    (具体过程:

    Cmd,打开命令行,

    d: 切换到d盘下,

    cd oracle,切换到oracle目录下,

    d:oracle>cd  product

    一直到

    D:oracleproduct10.1.0Db_1BIN>exp  ……… 

     方法二:如果已经在系统中进行了环境变量的配置,cmd  能够从配置的路径中找到exp ,imp  ,则不用一步步的切换到指定的文件夹中,直接使用就可以了。

    导出表:

    (1)导出自己的表

    Exp  userid=scott/tiger@myoral  tables=(emp)  file=d:e1.dmp

    (不一定非用dmp的后缀名,可以用别的后缀名,要导出多个表,则在tables=(emp,。。。,。。。))

    (2)导出其他方案的表

    如果用户要导出其他方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表:exp userid=system/manager@myoral  tables=(scott.emp)  file=d:e2.dmp

    (3)导出表的结构

    Exp userid=scott/tiger@accp tables=(emp)  file=d:e3.dmp rows=n

    (4)使用知道导出方式

    Exp userid=scott/tiger@accp  tables=(emp)  file=d:e3.dmp  direct=y

    这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。这时需要数据库的字符集要与客户端字符集完全一致,否则会报错。

    导出方案:

    导出方案使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束。。。)和数据,并存放到文件中。

    (1)导出自己的方案

    Exp  scott/tiger@myoral  owner=scott  file=d:scott.emp

    (2)导出其他方案

    如果用户要导出其他方案,则需要dba的权限或是exp_full_database的权限,例如用system用户就可以导出任何方案

    Exp  system/manager@myorcl  owner=(system,scott)  file=d:system.dmp

    这个是同时导出了两个方案,system,scott的

    导出数据库:

    导出数据库是之利用export导出所有数据库中的对象及数据。

    要求该用户具有dba的权限或是exp_full_database权限,

    Exp  userid=system/manager@myor  full=y  inctype=complete file=d:e6.dmp

    (如果不写,盘符,就会导出到bin目录下,)

    full=y ,具有dba,则导出myor实例中所有用户的数据,没有full,则只导出system用户的数据。

    Inctype:增量导出类型,第二次备份的时候要快一些,检查有没有新的数据,速度要快一些,但是具体怎么样,不知道

    导入:

    导入就是使用import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件,与导出相似,导入也分为导入表,导入方案,导入数据库三种方式:

    Imp常用的选项有:

    Userid:用于指定知道导入操作的用户名,口令,链接字符串,

    Tables:用于指定执行导入操作的表

    Fromuser:用于指定源用户

    Touser:用于制定目标用户

    File:用于指定导入文件名

    Full=y:用于指定执行导入整个文件

    Inctype:用于指定执行导入操作的增量类型

    Rows:指定是否要导入表行(数据)

    Ignore:如果表存在,则只导入数据

    导入表:

    (1)导入自己的表

    Imp userid=scott/tyger@myor   tables=(emp)  file=d:xx.dmp

    导出的一是导出全部,二是导出表结构,导入的时候一定要注意

    Drop table emp

    这张表是scott 自己的表,而且这张表和别的表有主外键的关系,所以如果这个语句换成了

    Imp  userid=system/manager@myor  talbes=(emp)  file=d:e6.dmp

    是不能成功的,但是如果emp单单就是一张数据表格,不存在主外键的关系,是可以成功的,因为它就是一张数据表,,

    换了另外一张dept,就把它导入到了system,

    但是在登陆查询的时候,如果是登陆system as sysdba,这时候其实进入的是sys的账户,是查不到这张表的,只有登陆  system  ,(as  normal),才能查到这张表。

    (2)导入表到其他用户

    要求该用户具有dba的权限,或是imp_full_database

    Imp userid=system/manager@myor tables=(emp) file=d:xx.dmp  touser=scott

    (3)导入表结构

    之导入表的结构而不导入数据

    Imp  userid=scott/tiger@myor  tables=(emp)  file=d:xxx.dmp  rows=n

    (4)导入数据

    如果对象(如此表)已经存在可以只导入表的数据

    Imp  userid=scott/tiger@myor  tables=(emp)  file=d:xxx.dmp  ignore=y

    导入方案:

    导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其他方案,要求该用户具有dba的权限,或是  imp_full_database

    (1)导入自身的方案

    Imp  userid=scott/tiger@myor   file=d:xxx.dmp

    (2)导入其他方案,

    要求该用户具有dba的权限

    Imp  userid=system/manger@myor  file=d:xx.dmp  fromuser=system  touser=scott

    把system的方案 导入到 scott中去

    导入数据库

    在默认情况下,当导入数据库,会导入所有对象结构和数据,案例如下

    Imp   userid=system/manager   full=y  file=d:xxx.dmp

    数据库实例@myor 都不要写了,系统会自动创建一个实例

    导入数据库的完整过程:

    /*第1步:创建临时表空间 */
    create temporary tablespace wzf_temp

    tempfile 'D:oracleproduct10.1.0oradatawzf_temp.dbf'

    size 50m

    autoextend on

    next 50m maxsize 20480m

    extent management local;

    /*第2步:创建数据表空间 */

    create tablespace wzf_data

    logging

    datafile 'D:oracleproduct10.1.0oradatawzf_data.dbf'

    size 50m

    autoextend on

    next 50m maxsize 20480m

    extent management local;

    /*第3步:创建用户并指定表空间 */

    create user wengzf identified by wengzf

    default tablespace wzf_data

    temporary tablespace wzf_temp;

    /*第4步:给用户授予权限 */

    grant connect,resource,dba to wengzf ;

    /*第5步:表空间限额设置 */  

    alter user wengzf quota 0M on users;
    alter user wengzf quota unlimited on wzf_data ;

    commit;

    /*第6步:进行倒入操作 */ 

    imp wengzf/wengzf@kaoshi file=D:workspacejtzadatajtza20150121.dmp tablespaces=wzf_data fromuser=jtza touser=wengzf log=D:workspacejtzadatajtza201501222.log

    说明:不进行第五步,则会导入到users  表空间中,不是导入默认的表空间。

    举例说明 :: 

    环境是这样的
    一共2台机器a和b。都是oracle9.
    a机上有一用户a.
    1。用exp命令导出a用户下的所有对象
    exp  a/a file=a.dmp

    2。复制a.dmp到b机上。
    并在b机创建表空间b。 创建新用户b,并赋予默认表空间是b.
    执行imp命令。

    imp b/b file=a.dmp fromuser=a touser=b

    成功导入后,发现b用户的表空间利用率为0,所有的数据均被导入到user表空间中。

    请问如何才能在导入时,将表数据导入b用户的默认表空间b中呢?

    1.创建表空间
    create tablespace example_tablespace datafile 'e:****.dbf' size 10m reuse autoextend on next 1m maxsize unlimited;
     

    2.创建用户,指定表空间,临时表空间

    create user username identified by password default tablespace usertablespace temporary tablespace temp;
     
    3.IMP导入数据库文件注意
    grant dba to username;DBA权限是必需的
    一般默认导入的表空间是导出时候的表空间
     
    revoke unlimited tablespace from username;
     
    alter user username quota 0 on users;表空间限额设置
     
    alter user username quota unlimited on user_define_tablespace;
     
    imp username/password file='e:***.dbf' tablespaces=tbs fromuser=sourcename touser=targetname log='e:a.txt'
  • 相关阅读:
    常用html设置:
    Java Enum
    ajax
    Utils使用
    jdk免安装对应配置
    jdk mvn下载--操作系统
    SpringMvc 文件上传后台处理
    SpringMvc 获取ApplicationContext
    Jenkins 持续集成
    自定义 directive pagination
  • 原文地址:https://www.cnblogs.com/gongyu/p/4238035.html
Copyright © 2011-2022 走看看