2008年(8065)
分类: 服务器与存储
2008-05-21 09:22:18
作为我们工作中附加的一种安全保护措施,我们也执行了夜间数据泵导出,作为一个额外的优点,当我们需要恢复一到两个表时,它比RMAN更容易。
我们使用par文件保存我们的数据泵命令,与导出非常类似,我们在数据库中设置了一些变量,你可以在par文件中看到,下面是创建它们的SQL语句:
代码清单11:
create directory x_dp_dumps as 'X:\data_pump\DMPs'; create directory x_dp_logs as 'X:\data_pump\logs'; 这些信号指定数据泵发送导出文件和日志文件的位置,下面是par文件的内容: 代码清单12: content = all dumpfile = x_dp_dumps:DBNAME_FULL_%U.dmp estimate = statistics full = y job_name = DBNAME_FULL logfile = x_dp_logs:DBNAME_FULL.log filesize = 2G |
content=all意味着我们想导出所有的数据或没有例外,dumpfile参数要求我们指定文件存放位置和文件名,文件文章是一个变量,文件名使用了替换变量U%,U%将被一个两位数的整数(从01开始)替换,可以创建一个或多个文件,依赖于数据库的大小,estimate给你提供了一个数据泵文件可能的大小的主意,block是默认值,但我们使用了statistics,full指定你是否想导出一个完整的数据库,job_name是可选的,实际中你可以给它取一个你喜欢的名字,logfile与dump file的设置类似,logfile要求你指定文件位置和文件名,文件位置和文件名都可以给定一个变量,filesize也是可选的,我们想让文件大小保持为2G或更小,当复制或压缩时,它会更容易和更快地移动或压缩(10个文件比1个大文件要快)。
我们调用数据泵作为一个计划任务,但是我们的设置有一点不同,我们为每个数据库准备有一个特殊的par文件和执行它的一个命令批处理文件,下面是计划任务中使用到的命令:
代码清单13:
D:\oracle\admin\common\expdp\expdp_DATABASE.bat DBNAME |
实际上它是用于调用数据泵par文件的批处理文件。
代码清单14:
set DATABASE=%1 set ORACLE_HOME=D:\oracle\product\10.2.0\db_1 %ORACLE_HOME%\bin\expdp ID/pword@%DATABASE% parfile=D:\oracle\a dmin\common\expdp\expdp_%DATABASE%.par |
需要传递给批处理文件的唯一参数是数据库名,它成了%DATABASE%,照这样执行数据泵导出给我们带来了很好的效果。