这段时间认真学习了一下Data Guard的一些知识, 在学习过程中得到了ITPUB上不少DX的帮助, 昨天把生产上的两套ORACLE在同一台机器上作好了DG, 呵呵, 现在放心多了.
再此再感谢一下所有帮助过我的人.
怕自己忙起来忘了删DG上的归档文件, 早上编了一个删DG上归档日志的脚本, 在此贡献出来, 希望对大家有点小用处.
脚本说明:
1. WINDOWS平台上使用
2. 使用时只需把前面几个参数改成自己的实际情况就行了
3. KEEP_DAY是指归档日志多保存的天数, 如果是0, 那么应用过的就会删掉
4. 在WINDOWS中用at 加入自动运行就可以了, SKLW和LCBJ是我机器上的DG的SERVER_NAME
@echo off
rem Oracle Data Guard archivelog delete scripts
rem Create by Kangoo.
rem 2008/2/14
if "%1" == "sklw" goto paramok
if "%1" == "SKLW" goto paramok
if "%1" == "lcbj" goto paramok
if "%1" == "LCBJ" goto paramok
echo "Usage: %0 {sklw|lcbj}"
goto finish
aramok
set ORACLE_SID=%1
set ORACLE_HOME=D:\ORACLE\ORA92
set CMDFILE_PATH=D:\DG_SCRIPTS
set TMP_FILE1=%CMDFILE_PATH%\%ORACLE_SID%1SQLPLUSDUSS1PQQX.TMP
set TMP_FILE2=%CMDFILE_PATH%\%ORACLE_SID%2SQLPLUSCMDDSIPTS.TMP
set TMP_FILE3=%CMDFILE_PATH%\%ORACLE_SID%3RMANSCRIPTSSASDF.TMP
set KEEY_DAY=5
echo @%TMP_FILE2% > %TMP_FILE1%
echo EXIT >> %TMP_FILE1%
echo SET FEED OFF > %TMP_FILE2%
echo SET HEADING OFF >> %TMP_FILE2%
echo SET ECHO OFF >> %TMP_FILE2%
echo SET TERMOUT OFF >> %TMP_FILE2%
echo SET NEWPAGE NONE >> %TMP_FILE2%
echo SET LONG 90000 >> %TMP_FILE2%
echo SET SQLBLANKLINES ON >> %TMP_FILE2%
echo SPOOL %TMP_FILE3% >> %TMP_FILE2%
echo SELECT 'delete noprompt copy of archivelog sequence ' ^|^| sequence# ^|^| ';' >> %TMP_FILE2%
echo FROM v$archived_log >> %TMP_FILE2%
echo WHERE NOT (status = 'D' OR deleted = 'YES') >> %TMP_FILE2%
echo AND applied = 'YES' AND completion_time ^< trunc(sysdate-%KEEY_DAY%) >> %TMP_FILE2%
echo UNION >> %TMP_FILE2%
echo SELECT 'exit' FROM dual; >> %TMP_FILE2%
echo SPOOL OFF >> %TMP_FILE2%
echo EXIT >> %TMP_FILE2%
%ORACLE_HOME%\bin\sqlplus.exe "/ as sysdba" < %TMP_FILE1%
%ORACLE_HOME%\bin\rman.exe target / cmdfile=%TMP_FILE3%
DEL %TMP_FILE1%
DEL %TMP_FILE2%
DEL %TMP_FILE3%
:finish