科技行者

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

知识库

知识库 安全导航

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

Oracle 10g备份指南

  • 扫一扫
    分享文章到微信

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

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

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

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

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

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

  8、检查日志错误

  每天晚上服务器上的所有批处理作业执行完后,我们都要在服务器上运行一个错误检查,它是一个简单的批处理文件,在关键日志中用关键字执行qgrep并格式化信息以让其可读性更佳,和前面叙述的一样,你可以通过文件名容易地从“当前的”日志中分辨出“旧的”日志,下面是批处理文件error_check.bat的内容:

  代码清单15:

  error_check.bat

  set SERVER=DBSERVER

  set LOGFILE=error_check.log

  echo ********************************************************* >%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo %SERVER% >>%LOGFILE%

  echo Daily Error Report >>%LOGFILE%

  date /T >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo The following files have been found with errors. >>%LOGFILE%

  echo ******************************************************** >>%LOGFILE%

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  echo Backup files >>%LOGFILE%

  echo . >>%LOGFILE%

  qgrep -l RMAN- D:\oracle\admin\common\backup\logs\* >>%LOGFILE%

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  echo Batch files >>%LOGFILE%

  echo . >>%LOGFILE%

  qgrep -l error D:\oracle\admin\common\batch\logs\* >>%LOGFILE%

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  echo Clone files >>%LOGFILE%

  echo . >>%LOGFILE%

  qgrep -l RMAN- D:\oracle\admin\common\clone\logs\* >>%LOGFILE%

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  echo Alert Logs >>%LOGFILE%

  echo . >>%LOGFILE%

  @rem

  qgrep -l ORA- D:\oracle\product\10.2.0\admin\DBNAME1\udump\* >>%LOGFILE%

  qgrep -l ORA- D:\oracle\product\10.2.0\admin\DBNAME2\udump\* >>%LOGFILE%

  @rem

  echo . >>%LOGFILE%

  echo . >>%LOGFILE%

  备份文件检查是检查RMAN错误,批处理文件检查是检查文件删除和创建动作,克隆文件错误检查是检查数据库复制是否失败,警告日志检查容易使人误解,实际上它是检查udump目录是否有文件错误,在日志创建后,我们使用一个自由邮件客户端Bmail将其发送给我们,下面是我们的邮件批处理文件email_errors.bat内容:

  代码清单16:

  bmail -s 10.10.10.10 -t support2@thecountyoverhere.gov -f Oracle@

  thecountyoverhere.gov -h -a "DBSERVER Daily Error Report" -m

  error_check.log

  bmail -s 10.10.10.10 -t support1@thecountyoverthere.gov -f Oracle@

  thecountyoverhere.gov -h -a "DBSERVER Daily Error Report" -m

  error_check.log

  9、广播和/或发送简短错误描述的电子邮件

  一些作业需要立即通知有故障了,对于这些,我们使用一个VB脚本过滤我们是否遇到了错误并立即向我们发送也个广播,这个脚本一直运行并发送一封内容为日志输出的电子邮件,我们想获取关于这些作业的执行情况而不管它是否成功执行完没有,但是它如果失败的话,我们想得到一封内容为日志的电子邮件和一个广播来定位故障的位置,这个脚本调用3个参数:

  代码清单17:

  page_on_backup.vbs DBNAME_arc_only_disk.log page_DBNAME_arc_only.log DBNAME

  参数是一个日志名、脚本日志名和数据库名,下面是page_on_backup.vbs的内容,它在我们RMAN 0级备份和归档日志备份时执行。

  代码清单18:

  'This script emails the log file for a backup and searches it for the

  phrase "ORA-". If found, pages the recipients

  'Additional pager Numbers

  ' whodat - 7045551212@message.alltel.com

  ' whodis - 7045551313@messaging.nextel.com

  Dim ArgObj, var1, var2

  Set ArgObj = WScript.Arguments

  var1 = ArgObj(0)

  var2 = ArgObj(1)

  var3 = ArgObj(2)

  'email log files

  Dim WshSHell1 : set WshShell1 = CreateObject("WScript.Shell")

  WshShell1.Run("D:\oracle\admin\common\error\bmail -s 10.10.10.10 -t

  support1@thecountyoverthere.gov -f Oracle@thecountyoverhere.gov

  -h -a " &

  var1 &" attached -m d:\oracle\admin\common\backup\logs\" &var1 &"")

  WshShell1.Run("D:\oracle\admin\common\error\bmail -s 10.10.10.10 -t

  support2@thecountyoverhere.gov -f Oracle@thecountyoverhere.gov

  -h -a " &var1

  &" attached -m d:\oracle\admin\common\backup\logs\" &var1 &"")

  'msgbox "var1 = " &var1 &" var2 = " &var2 &""

  Const ForReading = 1, ForWriting = 2

  Set WshNetwork = WScript.CreateObject("WScript.Network")

  Dim lgmain : Set lgmain = CreateObject("Scripting.FileSystemObject")

  Dim lgmain2 : Set lgmain2 =

  lgmain.OpenTextFile("D:\Oracle\Admin\common\backup\logs\" &var2 &"",

  ForWriting, True)

  lgmain2.WriteLine "Processing began: " &Now

  lgmain2.WriteLine ""

  lgmain2.WriteLine ""

  Set objRegEx = CreateObject("VBScript.RegExp")

  objRegEx.Global = True

  objRegEx.Pattern = "ORA-"

  Set objFSO = CreateObject("Scripting.FileSystemObject")

  Set objFile = objFSO.OpenTextFile("D:\oracle\admin\common\backup\

  logs\" &var1 &"", ForReading)

  strSearchString = objFile.ReadAll

  objFile.Close

  Set colMatches = objRegEx.Execute(strSearchString)

  If colMatches.Count >0 Then

  Dim WshSHell2 : set WshShell2 = CreateObject("WScript.Shell")

  WshShell2.Run("D:\oracle\admin\common\error\bmail -s 10.10.10.10 -t

  7045551414@my2way.com -f " &var3 &"@thecountyoverhere.gov -h -a "

  &var3 &

  "_BACKUP_ERRORS_FOUND")

  WshShell2.Run("D:\oracle\admin\common\error\bmail -s 10.10.10.10 -t

  support1@thecountyoverthere.gov -f " &var3 &"@thecountyoverhere.gov

  -h -a "

  &var3 &"_BACKUP_ERRORS_FOUND")

  WshShell2.Run("D:\oracle\admin\common\error\bmail -s 10.10.10.10 -t

  support2@thecountyoverhere.gov -f " &var3 &"@thecountyoverhere.gov

  -h -a "

  &var3 &"_BACKUP_ERRORS_FOUND")

  lgmain2.WriteLine "page completed"

  End If

  If colMatches.Count = 0 Then

  lgmain2.WriteLine "no problems found, no page required"

  End If

  首先发生的事情是发送一内容为日志信息的封电子邮件,接下来,在日志中查找错误代码,如果发现错误,就再发送一个广播,如果没有发现错误,脚本就执行完。

  结尾

  一个成功的备份计划是任何数据库管理员整个数据库策略中主要的组成部分,备份必须精心策划并经常检查,自动化备份是个好事情并非常有用,它也必须充分定义和严格测试,如果你考虑你的环境合乎逻辑它就可以做,问一下你自己“首先必须做什么?下一步必须做什么”等等,当你遇到困难是,思考是否有其他方法完成同一件事情,如果你尝试仔细思考你的环境这将变得更容易,这样你可以按原路返回,有时,改变任务的顺序也可以完成你的目标。

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

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

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