[Oracle學習筆記] 管理記錄檔

來源:互聯網
上載者:User

記錄檔又稱重做記錄檔,記錄使用者對資料庫的修改,可用於資料庫恢複。實際應用中,一般對記錄檔鏡像,其中一個記錄檔發生損壞時,其他鏡像的記錄檔還可以用。記錄檔及其鏡像稱為記錄檔組(logfile group)

建立資料庫時,預設會建立三個記錄檔組,每個組只有一個記錄檔,最少不能少於2個記錄檔組。記錄檔組是迴圈使用,當第一組的空間使用完後,系統將轉到第二組,如果所有組的空間都填滿,將轉到第一個組,如果使用歸檔模式,則在覆蓋之前會將第一個組的日誌資訊先進行歸檔。記錄檔組數量太少的話,可能造成頻繁切換日誌組,造成效能降低。

一、建立記錄檔組

ALTER DATABASE database_name

ADD LOGFILE GROUP group_number

(file_name, file_name...)

SIZE size [REUSE];

樣本:

查詢當前的日誌組:

SQL> column member format a40
SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         2 D:\ORACLE\TEST\REDO02.LOG
         1 D:\ORACLE\TEST\REDO01.LOG
         3 D:\ORACLE\TEST\REDO03.LOG

建立新的日誌組4(目錄d:\oracle\logfile需要事先建立):

SQL> alter database add logfile group 4
  2  ('d:\oracle\logfile\redo01.log',
  3  'd:\oracle\logfile\redo02.log')
  4  size 20m;

資料庫已更改。

再查詢記錄檔組,新建立了日誌組4:

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         2 D:\ORACLE\TEST\REDO02.LOG
         1 D:\ORACLE\TEST\REDO01.LOG
         3 D:\ORACLE\TEST\REDO03.LOG
         4 D:\ORACLE\LOGFILE\REDO01.LOG
         4 D:\ORACLE\LOGFILE\REDO02.LOG

 

二、往記錄檔組添加新記錄檔

樣本:

SQL> alter database add logfile member
  2  'd:\oracle\logfile\redo03.log'
  3  to group 4;

資料庫已更改。

不需要指定記錄檔大小,因為記錄檔大小就是其所在日誌組的大小,且同一組中的記錄檔互為鏡像,對資料庫的操作記錄將同時在多個鏡像記錄檔中寫。

再查詢日誌組,新的記錄檔已經添加:

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         2 D:\ORACLE\TEST\REDO02.LOG
         1 D:\ORACLE\TEST\REDO01.LOG
         3 D:\ORACLE\TEST\REDO03.LOG
         4 D:\ORACLE\LOGFILE\REDO01.LOG
         4 D:\ORACLE\LOGFILE\REDO02.LOG
         4 D:\ORACLE\LOGFILE\REDO03.LOG

已選擇6行。

 

三、刪除日誌群組成員

樣本:

SQL> alter database drop logfile member
  2  'd:\oracle\logfile\redo03.log';

資料庫已更改。

刪除日誌群組成員時不需要指定日誌組,因為一個記錄檔只能屬於一個組,如果在一個組中添加已屬於其他組的記錄檔會報錯。

 

四、刪除日誌組

刪除日誌組時,需要先查看日誌組的狀態,如果當前正在使用(CURRENT或ACTIVE),則不能刪除。

查詢狀態:

SQL> select group#, members, status from v$log;

    GROUP#    MEMBERS STATUS
---------- ---------- ----------------
         1          1 INACTIVE
         2          1 INACTIVE
         3          1 CURRENT
         4          2 UNUSED

樣本:

刪除日誌組4:

SQL> alter database drop logfile group 4;

資料庫已更改。

再查詢,日誌組4已經不存在了

SQL> select group#, members, status from v$log;

    GROUP#    MEMBERS STATUS
---------- ---------- ----------------
         1          1 INACTIVE
         2          1 INACTIVE
         3          1 CURRENT

嘗試刪除日誌組3會報錯:

SQL> alter database drop logfile group 3;
alter database drop logfile group 3
*
第 1 行出現錯誤:
ORA-01623: 日誌 3 是執行個體 test (線程 1) 的當前日誌 - 無法刪除
ORA-00312: 聯機日誌 3 線程 1: 'D:\ORACLE\TEST\REDO03.LOG'

如果要刪除的話,可以手工切換記錄檔組:

SQL> alter system switch logfile;

系統已更改。

切換記錄檔會產生檢查點,主要是等待DBWR寫髒資料到資料檔案中,寫完成之前日誌仍會處於ACTIVE狀態,等待一段時間DBWR寫完成後,再查看狀態變為INACTIVE,這時就可以刪除了。

SQL> select group#, members, status from v$log;

    GROUP#    MEMBERS STATUS
---------- ---------- ----------------
         1          1 CURRENT
         2          1 INACTIVE
         3          1 INACTIVE

注意:記錄檔組數量至少為2個,如果當前只有2個,刪除的話會報錯。

五、查詢記錄檔資訊

通過V$LOG和V$LOGFILE查詢,上面已經做過樣本。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.