redo重做日誌對於oracle來說猶如 肝臟 那麼重要,是oracle機能中的排毒恢複健康的重要組件!!
相關的基本概念:
1.scn
2.記錄序號
3.日誌組 和 日誌 成員,尤其是記錄檔的尺寸(影響ckpt自動發出);日誌寫入等待;
4.lgwr
5.ckpt
6.dbwr
7.log_buffer、fast_start_mttr_target、log_checkpoint_interval、log_checkpoit_timeout 初始化參數
基本管理
1.切換日誌:alter system switch logfile;
2.手工發出檢查點:alter sysem checkpoit;
3.增加日誌組:alter database add logfile [group n] file-spec
4.增加日誌群組成員:alter database add logfile member file-spec to group n
5.刪除日誌組:alter database drop logfile group n
6.刪除日誌群組成員:alter database drop logfile member file-spec
7.重新初始化日誌組或日誌群組成員:alter database clear logfile {group n|file-spec|(file-spec,file-spec...)}
8.查看當前的記錄檔組及成員:select * from v$logfile; select * from v$log;
9.移動或|和重新命名日誌群組成員檔案:alter database rename file file-spec to file-spec
archivelog和noarchivelog模式
noarchivelog模式是oracle的預設模式,相當於sqlserver恢複模型的“簡單”模式,只能用於防止常式失效 和 smon的啟動恢複
noarchivelog的特點:
1.簡單,redo日誌組不歸檔,只要要足夠的size,完全不用考慮redo日誌空間的佔用問題
2.備份資料庫有要求:必須保證資料庫的一致性,不能使用shutdown abort模式;而且必須和控制檔案一併備份
3.資料庫無法還原到某個scn、time或日誌序列
archivelog模式是最重要、主要的模式,一般的情況下,我們應該採用該種模式。
archivelog的特點:
1.具有額外的歸檔進程,需要相應的歸檔目錄和磁碟空間
2.具有完全的資料庫保護功能:只要有備份和之後的redo歸檔日誌,可以還原到某個scn、time或日誌序列
3.管理方便:在資料庫處於open狀態時,可以備份、還原!!!
archivelog和noarchivelog模式的切換:mount狀態下,alter database {archivelog|noarchivelog}
配置archivelog歸檔日誌的位置
預設的位置是:%oracle_home%\rdbms
預設的檔案格式為:ARC%S_%R.%T(格式符合的意思分別是:記錄序號、resetlogs的id號、arch線程號)
可以通過修改初始化參數來自訂本地歸檔日誌的位置:log_archive_dest、log_archive_duplex_dest
可以通過修改初始化參數來自訂本地或遠程歸檔日誌的位置:log_archive_dest_n(1-10)。注意和上面的配置方式是互斥的!
特別的:這種配置在設定的字串值裡需要指定是location還是service:{ LOCATION=path_name | SERVICE=service_name }
而且還有一大堆的選項
LOG_ARCHIVE_DEST_[1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10] =
{ null_string | LOCATION=path_name | SERVICE=service_name } --path_name可以設定成USE_DB_RECOVERY_FILE_DEST
[ { MANDATORY | OPTIONAL } ] --通過使用MANDATORY可以強制rts服務進程必須等待目標standby歸檔日誌傳輸成功才可切換日誌
[ REOPEN[=seconds] ] --Specifies the minimum number of seconds before the archiver processes (ARCn) or the log writer process (LGWR) should try again to access a previously failed destination. The default is 300 seconds.
[ DELAY[=minutes] ] --cannot set the DELAY attribute for a logical standby database destination,default is 30 minutes
[ NOREGISTER ]
[ TEMPLATE=template] ]
[ ALTERNATE=destination ] --格式LOG_ARCHIVE_DEST_n
[ DEPENDENCY=destination ] ----格式LOG_ARCHIVE_DEST_n
[ MAX_FAILURE=count ]
[ ARCH | LGWR ]
[ SYNC | ASYNC ] --network I/O is to be done synchronously or asynchronously when archival is performed using the log writer process (LGWR) and the network server (LNSn) processes.
[ AFFIRM | NOAFFIRM ] --synchronous or asynchronous disk I/O
[ NET_TIMEOUT=seconds ] --The default is 180 seconds.
[ VALID_FOR=(redo_log_type,database_role) ]
[{ DB_UNIQUE_NAME }] --Specifies a unique name for the database at this destination.
[ VERIFY ] --Indicates if an archiver (ARCn) process should scan and verify the correctness of the contents of a completed archived redo log file, either local or remote, after successfully completing the archival operation. By default, archived redo log files are not verified.
}
與log_archive_dest_n配合的log_archive_dest_state_n用來決定歸檔位置的可用性:enable(可用)、defer(不可用)、alternate(候補)
我們可以通過log_archive_config初始化參數配置oracle是否發送、接受遠程oracle伺服器的交易記錄,定義data guard。這個參數可能影響伺服器的效能!
LOG_ARCHIVE_CONFIG =
{
[ SEND | NOSEND ]
[ RECEIVE | NORECEIVE ]
[ DG_CONFIG=(remote_db_unique_name1 [, ... remote_db_unique_name9) | NODG_CONFIG ]
}
查看archivelog模式的相關資訊
1.在sqlplus下: archive log list
2.顯示歸檔曆史:select * from v$archived_log; select * from v$loghist;
3.顯示歸檔日誌的位置:select * from v$archive_dest; 其他可以使用show parameters log_archive;