oracle 数据备份之exp优化
2015-08-25 22:05
856 查看
在工作中经常需要对oracle数据库进行备份、异地恢复的情况。
Oracle的常规备份无非是exp/imp,expdp/impdp,rman三种方式。
exp/imp简单方便,适用于跨db版本、跨os平台、异地备份等情况,是大家最常用的一种备份方式。
expdp/impdp是10g以后推出的备份方式,其特点就是效率的大幅改善,据eygle报告,impdp相比与传统imp有20倍速度提升,其最大的缺点是不能跨数据库版本,连小版本号也不行(例如11.1到11.2)。
rman相比前两种备份方式,相对配置复杂,一般是DBA作为前两种方案的备份。
先看看exp/imp的用法:
1.基本的exp写法
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
user: oracle用户名
passwd:数据库用户密码
infodb81: 数据库的连接字符串
file:备份后的文件名
log: 备份日志文件
2.exp的参数
参数一:buffer
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
buffer=4096000000
注意:buffer的单位是bytes,例如要设置1M,则是1024000,上面的例子设置的是400M。
根据我们测试的结果,加入buffer参数后,约有40%的性能提升。
经过反复验证:合理的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
性能对比:
加入buffer参数前(数据约9G,共31分钟)
==========
备份用户sinosybak 11-02-21 02:08:16
====================
==========
备份用户shyang 11-02-21 02:35:49
====================
加入Buffer参数后(约18分钟)
==========
备份用户sinosybak 11-02-28 02:25:04
====================
==========
备份用户shyang 11-02-28 02:43:52
====================
参数二:direct
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
direct=y recordlength=65536
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个小时
========== 备份用户sinosy 11-03-01 22:30:00 ====================
========== 开始传输sinosy 11-03-01 23:05:43 ====================
注意:
1.recordlength参数(IO缓冲大小),与direct参数配对使用,默认该参数为1024bytes,上面的例子为64K(最大值也为64K)。
2.使用direct后,buffer参数失效;
3.使用direct,不支持query子句(没有行匹配的过程),不支持带Blob类型字段的表,但是系统会自动判断、自动切换,也就是说不会因为一张表的问题,导致整个schema不能使用direct备份;
4.direct不支持表空间导出。
参数三:consistent
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
consistent=y
consistent : 交叉一致性,用在序列值小于表中最大值的情况。
例如:exp默认情况下,先导出序列,后导出表,如果序列导出之后,表又使用序列插入了新的数据,就会导致数据不一致。
其他参数:
USERID 用户名/口令
FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行
(0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
Oracle的常规备份无非是exp/imp,expdp/impdp,rman三种方式。
exp/imp简单方便,适用于跨db版本、跨os平台、异地备份等情况,是大家最常用的一种备份方式。
expdp/impdp是10g以后推出的备份方式,其特点就是效率的大幅改善,据eygle报告,impdp相比与传统imp有20倍速度提升,其最大的缺点是不能跨数据库版本,连小版本号也不行(例如11.1到11.2)。
rman相比前两种备份方式,相对配置复杂,一般是DBA作为前两种方案的备份。
先看看exp/imp的用法:
1.基本的exp写法
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
user: oracle用户名
passwd:数据库用户密码
infodb81: 数据库的连接字符串
file:备份后的文件名
log: 备份日志文件
2.exp的参数
参数一:buffer
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
buffer=4096000000
注意:buffer的单位是bytes,例如要设置1M,则是1024000,上面的例子设置的是400M。
根据我们测试的结果,加入buffer参数后,约有40%的性能提升。
经过反复验证:合理的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
性能对比:
加入buffer参数前(数据约9G,共31分钟)
==========
备份用户sinosybak 11-02-21 02:08:16
====================
==========
备份用户shyang 11-02-21 02:35:49
====================
加入Buffer参数后(约18分钟)
==========
备份用户sinosybak 11-02-28 02:25:04
====================
==========
备份用户shyang 11-02-28 02:43:52
====================
参数二:direct
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
direct=y recordlength=65536
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个小时
========== 备份用户sinosy 11-03-01 22:30:00 ====================
========== 开始传输sinosy 11-03-01 23:05:43 ====================
注意:
1.recordlength参数(IO缓冲大小),与direct参数配对使用,默认该参数为1024bytes,上面的例子为64K(最大值也为64K)。
2.使用direct后,buffer参数失效;
3.使用direct,不支持query子句(没有行匹配的过程),不支持带Blob类型字段的表,但是系统会自动判断、自动切换,也就是说不会因为一张表的问题,导致整个schema不能使用direct备份;
4.direct不支持表空间导出。
参数三:consistent
exp userid/passwd@infodb81 file=user_$DATE.dmp
log=user_$DATE.log
consistent=y
consistent : 交叉一致性,用在序列值小于表中最大值的情况。
例如:exp默认情况下,先导出序列,后导出表,如果序列导出之后,表又使用序列插入了新的数据,就会导致数据不一致。
其他参数:
USERID 用户名/口令
FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行
(0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
相关文章推荐
- Oracle Tablespace
- Oracle Profile
- navicat连接oracle报错ORA-12737: Instant Client Light: unsupported server character set CHS16GBK”
- 陈焕生:深入理解Oracle 的并行执行
- 深入理解Oracle的并行操作
- 包子的 oracle 学习笔记---创建数据库
- Oracle的常见问题
- 用Oracle的TRIM函数去除字符串首尾指定字符
- 当有多于64合乎逻辑的cpu时刻,Windows 下一个Oracle db 实例启动(startup)什么时候会hang(待定)
- win10 x64下安装oracle 12c出现[INS-30131]报错的解决方案
- oracle根据pid查询出正在执行的执行语句
- 在Oracle中查询表的大小、表的占用情况和表空间的大小
- oracle根据pid查询出正在执行的执行语句
- oracle10g数据库管理艺术
- oracle日期时间段查询遇到问题to_date ora-01847 day of month must be between 1 and last day of month
- Oracle利用数据伪列实现分页功能
- 安装oracle11g rac,报错must be configured to display at least 256
- LINUX 使用DBCA创建ORACLE数据库
- Linux_oracle命令大全(转)
- Oracle分组查询