首页 > 数据库DBA > oracle知识 > oracle备份 >

oracle 数据备份之exp优化

作者: 初见博客 分类: oracle备份 发布时间: 2022-10-24 11:41
在工作中经常需要对oracle数据库进行备份、异地恢复的情况。
Oracle的常规备份无非是exp/imp,expdp/impdp,rman三种方式。
  1. exp/imp简单方便,适用于跨db版本、跨os平台、异地备份等情况,是大家最常用的一种备份方式。
  2. expdp/impdp是10g以后推出的备份方式,其特点就是效率的大幅改善,据eygle报告,impdp相比与传统imp有20倍速度提升,其最大的缺点是不能跨数据库版本,连小版本号也不行(例如11.1到11.2)。
  3. rman相比前两种备份方式,相对配置复杂,一般是DBA作为前两种方案的备份。

先看看exp/imp的用法:

1.基本的exp写法

  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log
  2. user: oracle用户名
  3. passwd:数据库用户密码
  4. infodb81: 数据库的连接字符串
  5. file:备份后的文件名
  6. log: 备份日志文件

2.exp的参数

参数一:buffer
  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log buffer=4096000000
  2. 注意:buffer的单位是bytes,例如要设置1M,则是1024000,上面的例子设置的是400M。
  3. 根据我们测试的结果,加入buffer参数后,约有40%的性能提升。
  4. 经过反复验证:合理的buffer值是10240000-1024000之间,再大了反而效率更低。
    环境:aix 6.1 16c 32G,sga信息如下
    SQL> show sga
    Total System Global Area 2.0043E+10 bytes
    Fixed Size 2153336 bytes
    Variable Size 1.3690E+10 bytes
    Database Buffers 6174015488 bytes
    Redo Buffers 176394240 bytes
  5. 性能对比:
  6. 加入buffer参数前(数据约9G,共31分钟)
  7. ========== 备份用户sinosybak 11-02-21 02:08:16 ====================
  8. ========== 备份用户shyang 11-02-21 02:35:49 ====================
  9. 加入Buffer参数后(约18分钟)
  10. ========== 备份用户sinosybak 11-02-28 02:25:04 ====================
  11. ========== 备份用户shyang 11-02-28 02:43:52 ====================

 

参数二:direct
  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log direct=y recordlength=65536
  2. direct : 直接导出,数据从磁盘读入到高速缓存,直接写入到最终文件,所以没有数据行检查与匹配的过程。据不权威的评测结果,性能有50%到70%的提升。同样的环境,实测结果,有70%的性能提升
    约70G数据,普通exp模式,未加buffer,约2小时40分
    ========== 备份用户sinosy 11-02-22 22:30:00 ====================
    ========== 开始传输sinosy 11-02-23 01:10:39 ====================
    exp buffer=102400000,约2小时
    ========== 备份用户sinosy 11-02-28 22:30:01 ====================
    ========== 开始传输sinosy 11-03-01 00:39:58 ====================
    exp direct模式,约1个小时
  3. ========== 备份用户sinosy 11-03-01 22:30:00 ====================
    ========== 开始传输sinosy 11-03-01 23:05:43 ====================
  4. 注意:
  5. 1.recordlength参数(IO缓冲大小),与direct参数配对使用,默认该参数为1024bytes,上面的例子为64K(最大值也为64K)。
  6. 2.使用direct后,buffer参数失效;
  7. 3.使用direct,不支持query子句(没有行匹配的过程),不支持带Blob类型字段的表,但是系统会自动判断、自动切换,也就是说不会因为一张表的问题,导致整个schema不能使用direct备份;
  8. 4.direct不支持表空间导出。

 

参数三:consistent

  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log consistent=y
  2. consistent : 交叉一致性,用在序列值小于表中最大值的情况。
  3. 例如:exp默认情况下,先导出序列,后导出表,如果序列导出之后,表又使用序列插入了新的数据,就会导致数据不一致。

 

其他参数:

  1. USERID 用户名/口令
  2. FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小
  3. OWNER 所有者用户名列表
  4. FILE 输出文件 (EXPDAT.DMP)
  5. TABLES 表名列表
  6. COMPRESS 导入一个范围 (Y)
  7. RECORDLENGTH IO 记录的长度
  8. GRANTS 导出权限 (Y)
  9. INCTYPE 增量导出类型
  10. INDEXES 导出索引 (Y)
  11. RECORD 跟踪增量导出 (Y)
  12. ROWS 导出数据行 (Y)
  13. PARFILE 参数文件名
  14. CONSTRAINTS 导出限制 (Y)
  15. CONSISTENT 交叉表一致性
  16. LOG 屏幕输出的日志文件
  17. STATISTICS 分析对象 (ESTIMATE)
  18. DIRECT 直接路径 (N)
  19. TRIGGERS 导出触发器 (Y)
  20. FEEDBACK 显示每 x 行 (0) 的进度
  21. FILESIZE 各转储文件的最大尺寸
  22. QUERY 选定导出表子集的子句
  23. 下列关键字仅用于可传输的表空间
  24. TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
  25. TABLESPACES 将传输的表空间列表

 

有关EXP的讨论到此结束,后面是IMP。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注