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