oracle 10g备份,Oracle 10g备份指南

5、创建归档日志备份包括恢复目录内务

归档日志每天都要备份,我们已经叙述过正常情况下每周执行一次0级备份,因为这个备份天天都要发生,这一步我们执行我们的RMAN恢复目录维护,脚本叫做DBNAME_arc_only_disk.rcv。

代码清单8:

#************* Configure controls for Recovery Manager ************

#************* in case they have been changed *********************

configure controlfile autobackup on;

configure controlfile autobackup format for device type disk

to 'X:\rman\CFILE_%F.bks';

configure retention policy to recovery window of 34 days;

#************* Perform nightly RMAN Archivelog Backup *************

backup archivelog all format 'X:\rman\ARC_%d_%U_%T_%s.bks';

#************* Maintenance Step to remove old Archivelogs *********

delete noprompt archivelog until time 'SYSDATE - 3';

#************* Maintenance Steps to clean Recovery Catalog ********

report obsolete device type disk;

crosscheck backup completed before 'sysdate-34';

delete noprompt obsolete recovery window of 34 days device type disk;

delete noprompt expired backup device type disk;

#************* Show all controls configured for this **************

#************* Database in RMAN ***********************************

show all;

#************* List all RMAN disk backups *************************

list backup of database device type disk;

最前面的两行命令配置RMAN自动备份控制文件和spfile,第一个命令开启它,因此运行备份命令时控制文件和spfile就被备份了;第二个命令告诉RMAN如何用指定的格式命名文件,在本例中,备份到磁盘上叫做‘X:\rman\CFILE_F%.bks’的文件;第三行告诉恢复目录目标数据库的备份保留34天;第四行才真正地执行备份,它告诉RMAN用指定的格式备份磁盘上的所有归档日志;接下来移除所有超过3天的旧归档日志,我们想在磁盘上保持归档日志3天;接下来我们就进入恢复目录维护小节了,目录维护非常重要,如果这些文件被删除维护步骤不能执行,那么恢复目录将不再包含关于备份的有效信息,紧接着报告备份作废,使磁盘满足我们的保留34天的策略,任何被认为是作废的旧的备份可以被删除,交叉检查命令将向你报告是否有文件丢失了,如果发现了丢失的文件,它们将被标记为过期的,接下来的两个删除命令从目录中移除作废的和过期的信息,记住,我们每7天从磁盘删除所有的RMAN备份文件,我们的保留策略设置为34天,因为我们的现场磁带保留策略也是这样,如果需要,我们可以在一个服务器上恢复RMAN文件到34天前,我们可以恢复文件到数据库吗?是的,我们可以!怎么做呢?因为我们有一个34天保留策略以及我们所有关于那些备份的RMAN信息都还在恢复目录中!下面的show all命令给出了我们在RMAN中配置参数,list命令显示了所有仍然保留在恢复目录中的磁盘备份。

提示:显然,恢复目录很重要所以它也需要备份,它也很容易恢复,如果你丢失了恢复目录而且处于紧要关头,你只需要导入恢复目录方案到任何数据库即可!你就得到一个新的恢复目录

这个脚本的批处理文件很简单,批处理文件叫做DBNAME_arc_only_disk.bat。

代码清单9:

set NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

set CURDIR=D:\oracle\admin\common\backup

cd %CURDIR%

rman target ID/pword@DBname catalog rcatID/rcatpword@rcatname log=logs\

DBNAME_arc_only_disk.log @DBNAME_arc_only_disk.rcv

page_on_backup.vbs DBNAME_arc_only_disk.log page_DBNAME_arc_only.log DBNAME

最前面两行设置你的环境变量,第三和第四行用于任务计划,很重要,windows需要直接指定RMAN脚本的位置,因此设置好目录后将脚本移动到该目录中,接下来调用RMAN,需要登陆到target和catalog,在当前目录下的子目录logs中会生成一个单独的日志文件,然后调用清单9中的代码,如果出现任何错误哦,一个VB脚本会呼叫支持人员,如果没有错误就发送一封日志文件电子邮件,在第9小节有更详细的介绍。

6、删除数据泵导出文件

每次运行数据泵时它需要为数据泵文件取一个新名字,与导出不同,它不会覆盖旧的数据泵文件,因此以前在夜间调度执行的数据泵导出文件需要被移除,下面是批处理文件:

代码清单10:

set CURDIR=D:\oracle\admin\common\batch

cd %CURDIR%

set logfile=logs\delete_Xdrive_expdp_files.log

echo 'logfile = ' %logfile% >%logfile%

echo . >>%logfile%

echo . >>%logfile%

echo '******************************************************' >>%logfile%

echo '* The following files will be deleted. *' >>%logfile%

echo '******************************************************' >>%logfile%

echo . >>%logfile%

echo . >>%logfile%

FORFILES /p X:\data_pump\DMPs /m *.dmp /d -0 /c "CMD /C echo

@PATH\@FILE @FDATE.@FTIME" >>%logfile%

echo . >>%logfile%

echo . >>%logfile%

echo '******************************************************' >>%logfile%

echo '* Starting deletes now ... *' >>%logfile%

echo '******************************************************' >>%logfile%

echo . >>%logfile%

echo . >>%logfile%

FORFILES /p X:\data_pump\DMPs /d -0 /c "CMD /C del *.dmp" >>%logfile%

echo . >>%logfile%

echo . >>%logfile%

这里和我们在其他批处理脚本中看到的一样,首先我们设置好目录然后将脚本放进去,我们也设置了日志文件为一个变量,因为我们将经常使用它,实际上,第一条进入日志文件的条目是日志文件名,使用点的echo命令只是为了让日志可读性更佳,实际上这里只有两条有效的命令,第一条简单地列出即将删除的文件,第二条命令真正地执行删除操作。

7、执行数据泵导出

作为我们工作中附加的一种安全保护措施,我们也执行了夜间数据泵导出,作为一个额外的优点,当我们需要恢复一到两个表时,它比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%,照这样执行数据泵导出给我们带来了很好的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值