Oracle中control_file_record_keep_time和MAXLOGHISTORY引數

keeptrying發表於2012-06-06

Oracle基於RMAN的備份方式可以分為catalognocatalog兩種方式進行備份管理。其中,catalog方式需要一個catalog目錄資料庫,這個資料庫一般執行在另外一臺伺服器上,RMAN把對資料庫的備份恢復記錄保留在catalog目錄資料庫中。這種方式可以用於使用者有多個Oracle資料庫的環境,同時對資料庫的備份恢復資訊也可以長久的儲存。

而基於nocatalog的備份管理方式,是將RMAN的備份資訊放在控制檔案中。由於控制檔案的大小不能無限增大,所以在控制檔案中只能保留一段時間的備份與恢復資訊。而這個時間的控制,由一個引數為依據,這個引數就是CONTROL_FILE_RECORD_KEEP_TIME。該引數預設值為7天。

SYS@ tsid > show parameter control_file_record_keep_time

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- --------

control_file_record_keep_time        integer     7

 

 

 

官網說明:

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.

CONTROL_FILE_RECORD_KEEP_TIME指定控制檔案中可重複使用的記錄所能儲存的最小天數。當新增加一條記錄到控制檔案中可重複使用的部分,這時最老的記錄沒有超出最小保留天數,那麼記錄將控制檔案的這一部分擴充套件。如果該引數設定為0,那麼控制檔案可重複使用的部分將永遠不會擴充套件。

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.

注意:這個引數只應用於控制檔案中可迴圈利用的部分,如歸檔日誌檔案、各種備份記錄等。不應用於諸如資料檔案、表空間、重做執行緒等,這些內容不重用,除非相應的物件從表空間中刪除後才能重用。

 

 

當使用RMAN目錄時,CONTROL_FILE_RECORD_KEEP_TIME儲存的時間不能比同步目錄的時間間隔段。也就是說,如果每天備份一次,那麼CONTROL_FILE_RECORD_KEEP_TIME不能少於1.

如果不使用RMAN目錄,應該設定CONTROL_FILE_RECORD_KEEP_TIME為你需要往後恢復的最大天數。

 

--===============================================================

 

MAXLOGHISTROY引數用於限制控制檔案裡和通過v$log_history檢視的歸檔日誌檔案數目。歸檔日誌最多維持在MAXLOGHISTROY所設定的數目。如果超過這個數目,將從頭覆蓋以前的歸檔日誌檔案項。

當建立控制檔案時,MAXLOGHISTORT的決定為歸檔日誌資訊分配多大的空間。MAXLOGHISTORY並不動態增加。當日志歸檔時,該歸檔檔案的資訊將被更新到控制檔案。只有在如下情況下,才覆蓋原來的項:控制檔案中該區域所有項都被使用並且有一項超出了CONTROL_FILE_RECORD_KEEP_TIME設定的時間。

 

會有如下的情況:

建立控制檔案時,設定MAXLOGHISORY引數為100,而控制檔案的Log History區域是227個記錄。

這是因為建立控制檔案時,每個部分分配規定的大小和空間,而空間分配不是依據記錄數,而是根據Oracle的塊。控制檔案中,每個部分的單條記錄大小時固定的,都是36位元組。因此,100個記錄(MAXLOGHISTORY)需要3600個位元組。依據Oracle的塊大小(控制檔案中設定的db_block_size,控制檔案塊大小也是db_block_size引數),特定數目的塊將為Log History部分分配。例如,如果DB_BLOCK_SIZE8192,那麼一個塊就足夠了。在這個塊中,可以有8192/36,大約227個記錄。如果DB_BLOCK_SIZE2048,那麼將分配兩個塊,但是隻建立113個記錄。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-732038/,如需轉載,請註明出處,否則將追究法律責任。

相關文章