ORACLE之exp,imp数据备份

一. 分三种模式:
1.表模式,导出一张或多张table
exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2
导出某张表的部分数据
exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\”where col1=\’…\’
 备注:query参数配置经常遇到这样问题:LRM-00112: multiple values not allowed for parameter 'query'
      原因:where条件中一般都会有空格, 而命令行下就会被释成几个命令行参数, 需要用单引号或双引号将整个where条件括起
来,  另在linux下对于转义字符用\进行处理,在Windows下, 指定query参数:
   exp system/123123@TEST FILE=(E:\1.DMP,E:\2.DMP) FILESIZE=10M TABLES=SYS.TEST query='where ID">"2000'
    在linux下, 指定query参数:
   exp ..... query=\"where col1 \< 1000\"
最好是写在一个参数文件里, 不拘于各种平台的区别
2.用户模式
  exp system/123123@TEST FILE=(E:\1.DMP,E:\2.DMP) FILESIZE=10M WNER=(USER1,USER2) ROW=N
  N表示不导数据,只导表结构,Y表示数据和结构全导
3.全库模式
  exp system/123123@TEST FILE=(E:\1.DMP,E:\2.DMP) FILESIZE=10M FULL=YES ROW=N
  imp exp system/123123@TEST FILE=(E:\1.DMP,E:\2.DMP) FILESIZE=10M fromuser=dbUSER1 touser=dbUSER2

二.重点:用exp,imp进行表空间传输
     1.限制:
      源和目标数据库必须使用相同的字符集和国家字符集;
      目标数据库不能已经包含同名的表空间;
      传输表空间不支持:物化视图或复制、基于函数的索引、Scoped REFs和兼容性设置为8.0时,带有多个收件人的高级队列。
     2.步骤:
       2.1 检测表空间是否符合传输标准的方法:
         SQL > exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true);
         SQL > select * from sys.transport_set_violations;
         如果没有行选择,表示该表空间只包含表数据,并且是自包含的。对于有些非自包含的表空间,如数
         据表空间和索引表空间,可以一起传输。
       2.2 设置表空间为只读(假定表空间名字为APP_Data 和APP_Index)
         SQL > alter tablespace app_data read only;
         SQL > alter tablespace app_index read only;
       2.3 发出EXP 命令
         SQL> host exp 'system/password as sysdba' transport_tablespace=y tablespaces=(app_data, app_index)
         注意'system/password as sysdba'出的格式容易出问题,不同平台设置不一样
       2.4 拷贝.dbf数据文件(以及.dmp 文件)到另一个地点,即目标数据库可以是cp(unix)或copy(windows)
          或通过ftp 传输文件(一定要在bin方式)
       2.5 在目标数据库附加该数据文件 (直接指定数据文件名)
          (表空间不能存在,必须建立相应用户名或者用fromuser/touser)
         imp file=expdat.dmp 'system/password as sysdba' transport_tablespace=y datafiles=                        

       (c:\app_data.dbf,c:\app_index.dbf) tablespaces=app_data,app_index tts_owners=hr,oe
         注:TABLESPACES:指定导入的表空间集合名称。这个参数可以不指定,如果指定则必须和导入的表空间名称一致。
             TTS_OWNERS:指定导入的表空间集合中包含对象的用户名。这个参数可以不指定,如果指定则必须保证正确性。
             FROMUSER和TOUSER:如果不指定这两个参数,则导入的时候会根据表空间集合中对象的原始用户名导入,如果
             用户名在目标数据库不存在,则会报错。可以通过指定FROMUSER和TOUSER来改变对象的属主
       2.6 设置目标数据库表空间为读写
           alter tablespace app_data read write;
           alter tablespace app_index read write;
三.exp,imp优化
      1. 加快exp速度
         加大large_pool_size,可以提高exp 的速度
         采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查.
         设置较大的buffer,如果导出大对象,小buffer 会失败。
         export文件不在ORACLE 使用的驱动器上
         不要export到NFS 文件系统
          UNIX环境:用管道模式直接导入导出来提高imp/exp 的性能
      2. 加快imp速度
         建立一个indexfile,在数据import完成后在建立索引
         将import 文件放在不同的驱动器上
         增加DB_BLOCK_BUFFERS
         增加LOG_BUFFER
         用非归档方式运行ORACLE:ALTER DATABASE NOARCHIVELOG;
         建立大的表空间和回滚段,OFFLINE 其他回滚段,回滚段的大小为最大表的1/2
         使用COMMIT=N
         使用ANALYZE=N
         单用户模式导入
         UNIX环境:用管道模式直接导入导出来提高imp/exp 的性能
四.常见问题
     1,字符集问题
        分客户端的字符集与数据库端字符集,客户端字符集主要就是环境变量或注册表项NLS_LANG,注
        意NLS_LANG的优先级别为:参数文件如果客户端字符集和服
        务器端字符集不一样,而且字符集的转换也不兼容,那么客户端的数据显示与导出/导入的与字符
        集有关的数据将都是乱码。
        使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里
        需要一个2 进制文件编辑工具即可,如uedit32。用编辑方式打开导出的dmp 文件,获
        取2、3 字节的内容,如00 01,先把它转换为10 进制数,为1,使用函数
        NLS_CHARSET_NAME 即可获得该字符集:
        SQL> select nls_charset_name(1) from dual;
        NLS_CHARSET_NAME(1)
        -------------------
        US7ASCII
        可以知道该dmp 文件的字符集为US7ASCII,如果需要把该dmp 文件的字符集换
        成ZHS16GBK,则需要用NLS_CHARSET_ID 获取该字符集的编号:
        SQL> select nls_charset_id('zhs16gbk') from dual;
        NLS_CHARSET_ID('ZHS16GBK')
        --------------------------
        852
       把852 换成16 进制数,为354,把2、3 字节的00 01 换成03 54,即完成了把该
       dmp 文件字符集从us7ascii 到zhs16gbk的转化,这样,再把该dmp 文件导入到zhs16gbk
       字符集的数据库就可以了。
     2.版本问题
       总是使用IMP 的版本匹配数据库的版本,如果要导入到816,则使用816 的导入工具
       exp高版本不能导出低版本数据库
       总是使用EXP的版本匹配两个数据库中低的那个版本,如在815 与816之间互导,则使用815的EXP工具
       imp 和exp 版本不能往上兼容: imp 可以导入低版本exp 生成的文件, 不能导入高版本exp 生成的文件

注:上述内容多参照网上多个作者内容,结合个人使用过程遇到的问题进行备注说明。各示例无前后一致关系。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22804047/viewspace-683110/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22804047/viewspace-683110/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值