oracle standby 归档日志删除脚本和standby数据库启动脚本

        最近因为系统维护人员对oracle 系统不是很熟悉,特别是对standby 数据库是否正常启动不是很清楚。现在特别制作了相关的启动standby数据库的脚本,如果启动过程中有错误将会提示。如果在删除日志的时候发现因为standby数据没有正常启动导致日志无法应用,不幸日志又删除了,这样standby必须重做。为了对这些不是很负责任的人提供一些保险。现在特制定了如下脚本:

1.删除归档日志脚本:

   a.del_arc.bat 内容:

 



rem                      本程序由radkitty数据库工程师完善



rem 本程序是基于为了预防因为检查的疏漏而导致归档日志的被删除,导致日志无法正确的在备用库上应用的目的编写的



rem 本程序存放的路径说明:d:/del_arc 文件夹下,oracle归档日志数据存放在:d:/ocl9_arc,请根据实际进行修改。



rem 本程序的文件组成:del_arc.bat,delete.log,find.exe,del_arc.sql,默认是保存3天的数据;



rem 如果要修改保留日志的天数:请修改del_arc.sql中的trunc(sysdate)-3和本脚本的:delefile 标签中的/d -3数字



rem ####################################################################################################



rem #  本程序的工作原理:                                                                              #



rem #1.先执行del_arc.sql的语句,将生成delete.log;                                                      #



rem #2.程序查找相关字段,如果找到则说明应用日志没有问题,将执行删除文件的语句;                        #



rem #3.如果找不到相应的关键字,则说明备用库有部分日志没有应用,并及时显示错误提示;                     #



rem #4.如果该脚本运行在备用库中,将会永远执行删除归档日志的操作。                                      #



rem #                                                     脚本编写日期:11:58 2008-06-12               #



rem ####################################################################################################



@echo off



color 1f



Title=---oracle standby 归档日志删除程序V1.0---







cls



sqlplus @d:/del_arc/del_arc.sql



type d:/del_arc/delete.log|c:/windows/system32/find "Be successful Apply."



if "%ERRORLEVEL%"=="0" goto delefile



cls



color 1f



echo.



echo         #########################################################



echo         #                     错    误                          #



echo         #                                                       #



echo         #    有未应用的归档日志,请检查备用库                   # 



echo         # 是否正常启动,确认成功应用后,可以重新运行本程序。    #



echo         #                                                       #



echo         #########################################################



echo         按任意键退出……



pause >nul



goto  exit







:delefile



forfiles /p D:/ocl9_arc /m *.DBF /d -3 /c "cmd /c del @file"



goto exit



:exit



exit

b.调用的del_arc.sql 代码:
/ as sysdba

set echo off

set feedback off 

set heading  off 

spool d:/del_arc/delete.log

select decode(count(*),0,'Be successful Apply.','Including No Applied data.') from v$archived_log 

where DEST_ID=(select DEST_ID from V$ARCHIVE_DEST where TARGET='PRIMARY' and STATUS='VALID' and schedule='ACTIVE')

 and SEQUENCE#=(select LOG_SEQUENCE from V$ARCHIVE_DEST where TARGET='STANDBY' and schedule='ACTIVE') and trunc(COMPLETION_TIME)<=trunc(sysdate)-3;

spool off

exit



2.standby备用数据库自动启动脚本

a.启动standbyUP.bat内容:

 

rem   ###########################################################################

rem   #                 oracle standby 启动脚本                                 #

rem   #编写目的:为了帮助用户了解启动时是否有异常错误,以方便及时予以纠正错误。 #

rem   #本程序由radkitty DBA完善                                            #

rem   #本程序默认的路径存放在d:/standbyup目录下,并且在默认情况下会延迟30秒执行 #

rem   #对于不同的数据库连接请修改start_standby.sql中的数据库连接名。            #

rem   #如果备用库正常启动将不会有任何提示,直接退出。                           #

rem   #                            脚本编写日期:11:58 2008-06-12               #

rem   ###########################################################################

@echo off

color 1f

Title=---oracle standby 启动程序v1.0---

echo.

echo.

echo. 如果不选择默认30秒后,将自动启动数据库的standby模式。

choice /c YN /T 30 /D y /M "如果执行standby脚本请按Y;不启动standby脚本,请按N直接退出:"

if errorlevel 2 goto exit

sqlplus /nolog @d:/standbyup/start_standby.sql

type d:/standbyup/standbyup.log|c:/windows/system32/find "ORA-"

if "%ERRORLEVEL%"=="0" goto errors

goto exit

:errors

cls

color 1f

echo.

echo         #########################################################

echo         #                     错    误                          #

echo         #                                                       #

echo         #    在启动oracle standby 备用库的时候发现了错误,      # 

echo         # 请检查d:/standbyup/standbyup.log日志,确认oracle服务  #

echo         # 已经正常启动后,请重新执行该程序,如果无法解决请及时  #

echo         # 和大区DBA或总部DBA联系处理,谢谢!                    #

echo         #                                                       #

echo         #########################################################

echo.        按任意键退出……

pause >nul

goto  exit



:exit

exit
b.调用的start_standby.sql内容:
set echo off

set feedback off 

set heading  off 

conn / as sysdba

Shutdown immediate;

spool d:/standbyup/standbyup.log

startup nomount;

alter database mount standby database;

alter database recover managed standby database disconnect from session;

spool off;

exit

现在你不用担心了吧,是人都可以看懂的提示。希望对各位有用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值