Oracle 中control_file_record_keep_time参数的解释
Oracle基于RMAN的備份方式,可分為以catalog 和nocatalog的兩種方式進行備份管理。其中,catalog的方式需要一個catalog目錄數據庫,這個數據庫一般運行在另外一臺服務器上,這種方式可以用于用戶有多個Oracle數據庫的環境,同時對數據庫的備份恢復信息也可以長久的保存,也就是RMAN把對數據庫A的備份恢復記錄保留在catalog目錄數據庫中。
而基于nocatalog的備份管理方式,是將RMAN的備份信息放在控制文件中,由于控制文件的大小不能無限增大,所以在控制文件中只能保留一段時間的備份與恢復信息,而這個時間的控制,由一個參數為參考依據,這個參數就是control_file_record_keep_time,通過在sqlplus中show parameter control_file_record_keep_time 可以查到這個參數的值,默認為7天。
SQL> show parameter control_file_record_keep_time
NAME???????????????????? TYPE???? VALUE
------------------------------------ ----------- --------------------------
control_file_record_keep_time???????? integer???? 7
metalink中對此參數的解釋為:
CONTROL_FILE_RECORD_KEEP_TIME specifies the minimum number of days
before a reusable record in the control file can be reused. In the event a new record needs to be added to a reusable section and the oldest record has not aged enough, the record section expands. If this parameter is set to 0, then reusable sections never expand, and records are reused as needed
Note:
This parameter applies only to records in the control file that are circularly reusable (such as archive log records and various backup records). It does not apply to records such as datafile, tablespace, and redo thread records, which are never reused unless the corresponding object is dropped from the tablespace.
這段話的意思是說:control_file_record_keep_time表示控制文件里可重復使用的記錄所能保存的最小天數。如果新增加一條記錄 到控制文件可以重復使用的部分,這時最老的記錄尚沒有超出最小保留天數,那么記錄將控制文件的這一部分將擴展。如果將該參數設置為0,那么控制文件可以重 復使用的部分將永遠不會擴展。
注意,這個參數只應用于控制文件中可循環利用的部分,如歸檔日志文件,各種備份記錄。不應用于諸如數據文件,表空間,重做線程等,這些內容只有當其從對應的表空間中刪除后才能重用。
可重用的部分包括如下幾種類型(可以通過查詢視圖$contofile_record_section得到):
ARCHIVED LOG
BACKUP CORRUPTION
BACKUP DATAFILE
BACKUP PIECE
BACKUP REDO LOG
BACKUP SET
COPY CORRUPTION
DATAFILE COPY
DELETED OBJECT
LOGHISTORY
OFFLINERANGE
而MAXLOGHISTORY參數,其意義在于限制控制文件里和通過v$log_history視圖的歸檔日志文件數目。歸檔日志最多維持在MAXLOGHISTORY所設置的數目。如果超過這個數目,將從頭覆蓋以前的歸檔日志文件項。
最終,當歸檔日志數目超過MAXLOGHISTORY所設定的值時,v$log_history中的所有項都將被覆蓋。
當創建控制文件時,MAXLOGHISTORY的決定為歸檔日志信息分配多大的空間。MAXLOGHISTORY并不動態增加。當日志歸檔時,該歸檔文件的信息將被更新到控制文件。只有在如下情況下,才覆蓋原來的項:
控制文件中該區域所有項都被使用并且有一項超出了control_file_record_keep_time設定的時間
當使用RMAN目錄時,control_file_record_keep_time保存的時間不能比同步目錄的時間間隔短。換句話說,如果每天備份一次,那么controlfile_record_keep_time不能少于1。
如果不使用RMAN目錄,應該設置control_file_record_keep_time為你需要往后恢復的最大天數。
在Oracle 7中,將新歸檔日志記錄記錄到v$log_histroy中。當達到MAXLOGHISTORY的極限時,插入新記錄,同時覆蓋最老的記錄。在8.0版本 后,v$log_history視圖被v$archived_log取代了,并且maxloghistory不限制能夠插入到v$archived_log中的記錄數。
有人問:為什么我在創建控制文件時指定的MAXLOGHISTORY沒有起作用?
例如,創建控制文件時,設定MAXLOGHISTORY參數為100,控制文件的
Log History區域將創建227個記錄。這是一個可預料到的結果。
創建控制文件時,每個部分分配規定的大小和空間。每個部分的空間分配不是依據記錄數,而是根據Oracle的塊。控制文件中,每個部分的單條記錄大小是固 定的,都是36字節。因此,100個記錄(MAXLOGHISTORY)需要3600個字節。依據Oracle的塊大小————控制文件中設置的db_lock_size,控制文件塊大小也是DB_BLOCK_SIZE參數。特定數目的塊將為Log History部分分配。例如,如果DB_BLOCK_SIZE為8192,那么一個塊就足夠了。在這個塊中,我們有8192/36,大約227個記錄。 如果DB_BLOCK_SIZE 為2048,那么將分配2個快,但是只創建113個記錄。
MAXLOGHISTORY的最大值可以設置為65535。不得超過這個數。
總結
以上是生活随笔為你收集整理的Oracle 中control_file_record_keep_time参数的解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 参数NLS_LENGTH_SEMANTI
- 下一篇: oracle 归档日志