当前位置: 代码迷 >> 综合 >> oracle standby 归档日志删除脚本和standby数据库启动脚本
  详细解决方案

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

热度:49   发布时间:2023-12-06 15:01:04.0

        最近因为系统维护人员对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
现在你不用担心了吧,是人都可以看懂的提示。希望对各位有用。
  相关解决方案