size of control file

一、控制文件存儲內容總結

  • 數據庫信息:庫名、創建時間等
  • 實例信息
  • 物理結構信息:redo信息、表空間信息、文件信息
  • RMAN信息
  • 歸檔信息
  • 備份與恢復的信息(RMAN)
  • object 刪除信息
  • 檢查點信息
  • 回滾段的信息

二、控制文件的存儲形式

ORACLE採用每個塊都生成一個鏡像塊,所以我們看到的控制文件其實真正有效的數據只佔一半,目的是爲了來避免塊分裂
塊分裂:也就是塊狀態的不一致性,它是因爲數據庫是以數據庫塊爲單位讀的,而操作系統是以操作系統塊讀的,這樣就可能會在數據庫讀一致時,導致狀態不一致。
可以通過以下語句進行驗證
  1. SELECT SUM(RECORD_SIZE * RECORDS_TOTAL) / 1024 / 1024 USE_M
  2.   FROM V$CONTROLFILE_RECORD_SECTION;
  3. SELECT BLOCK_SIZE * FILE_SIZE_BLKS / 1024 / 1024 FILE_SIZE_M
  4.   FROM V$CONTROLFILE;  
控制文件將內部數據記錄分爲兩類:循環重用記錄 和 非循環重用記錄。
  1. 循環重用記錄包含可以從控制文件中刪除的信息。如: RMAN 備份記錄、歸檔日誌歷史信息等,循環重用記錄可以被刪除,並且不會影響產品數據庫。
  2. 非循環重用記錄是那些不能被刪除的記錄。 非循環重用記錄包括:數據文件列表、日誌文件列表等。

三、寫控制文件觸發條件

  1. 每次在線日誌文件、數據文件的新增、修改、刪除,歸檔等都會更新控制文件
  2. 熱備份的時候
  3. 觸發系統事件時:刪除object、日誌切換等
  4. 增量檢查點將每三秒會喚醒DBWR,並將當前數據庫的一致性信息更新到控制文件,包括實例恢復的起點REDO地址(RBA TARGET),或稱LOWER RBA。(增量檢查點不更新數據文件頭部) 

四、清理控制文件中記錄

我們可以通過重建控制文件或者設置control_file_record_keep_time=0來重用循環重用記錄
  1. 手工清理v$archived_log記錄
    Removing entries in v$archived_log referencing a particluar DEST_ID (文檔 ID 845361.1)
    • 清理:
      1. EXECUTE dbms_backup_restore.resetCfileSection(11);
    • 驗證:
      1. SELECT RESETLOGS_ID, SEQUENCE# FROMV$ARCHIVED_LOG ORDER BY 1;
  2. 手工清理v$rman_status 記錄
    • 清理:
      1. EXECUTE dbms_backup_restore.resetCfileSection(28);
    • 驗證:
      1. SELECT COUNT(*) FROM V$RMAN_STATUS;
  3. 其它
    清理其它內容,我們可以參考resetCfileSection函數中ID號的說明
    • 通過查看dbms_backup_restore包的創建代碼查看
      $ORACLE_HOME/rdbms/admin/dbmsbkrs.sql
    • 通過語句查看
      1. SELECT ROWNUM - 1TYPE FROM V$CONTROLFILE_RECORD_SECTION;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章