2014/03/20

Published 3月 20, 2014 by

Oracle Archive log

Oracle Archive log教學
DB:Oracle 10G R2


ORACLE DATABASE 切換到 Archive LOG NO ARCHIVE LOG 模式必須關閉、重新啟動資料庫
切換到ARCHIVE LOG 模式並不表示系統會自動執行 ARCHIVE LOG,必須下指令執行,如果希望一開機就自動執行必須在 spfile 中作設定
切換到ARCHIVE LOG 模式後應立即作備份的動作,如果使用之前的備份回復資料,資料只能回復至 NOARCHIVE LOG Mode 時的狀況。

檢查是否為 Archive Log 模式
SQL>select  * from v$log;
SQL>archive log list;

更改 ARCHIVE/NOARCHIVE LOG 模式步驟:
1.SQL>shutdown immediate
2.SQL>startup mount
3.SQL>alter database archivelog/noarchivelog;
4.SQL>alter database open;
5.backup full database and control file;

啟動 Archive LOG Mode
SQL>alter system archive log start/stop;

變更啟動 Parameter,讓資料庫一啟動就自動執行 ARCHIVE LOG
SQL>alter system set log_archive_start=true scope=spfile;
或是在 pfile 中加入 log_archive_start=true

查詢 ARCHIVE LOG 狀況
SQL>Archive Log List

切換redo log file: 
alter system switch logfile; 

alter system archive log current; 若有開啟archive log,會產生一個archive log 

Archive log變數設定-Rename log_archive_format

log_archive_format 可以使用參數如下 
%s :log sequence number 
%S: log sequence number, zero filled 
%t :thread number, RAC的節點中設有THREAD參數, 就是這個值了 
%T:thread number, zero filled 
其中這前4項是可以用在 9I 中的 
%a: activation ID 
%d: database ID 
%r: resetlogs ID that ensures unique names are constructed for the archived log files across multiple incarnations of the database


Oracle 10g開始,log_archive_format初始化參數必須包含%s, %t 和 %r,以確保生成的archive log 名稱唯一. 
(原因:10g能做穿越resetlog的恢復,所以要加%r。而9i的不能做穿越resetlog的恢復,所以沒有%r的參數)


SQL> alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile;
SQL> shutdown immediate;
SQL>startup;


其它一些相關的設定參數和查詢 
SQL>show parameter log_archive_format
SQL>alter SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3 scope=spfile sid='*';;
SQL>alter SYSTEM SET log_archive_dest_1 = "location=C:Oracleoradataoradbarchive" scope=spfile sid='*';
SQL>alter SYSTEM SET log_archive_format = %%ORACLE_SID%%T%TS%S.ARC scope=spfile sid='*';



相關連結:
http://yu-minspace.blogspot.tw/search/label/Oracle%20%E7%9B%B8%E9%97%9C