科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Oracle 10g备份指南

Oracle 10g备份指南

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

数据库备份是一个数据库管理员工作中最重要的部分,部分策略需要在一个正规的基础上进行复审,部分本身需要频繁地进行测试,本文提供一个在Windows 32位和64位服务器上备份Oracle 10g数据库的方法.....

作者:Kevin E. Medlin/黄永兵 译 来源:51CTO.com   2008年7月7日

关键字: 数据库备份 ORACLE 数据库安全

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

  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%,照这样执行数据泵导出给我们带来了很好的效果。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章