新增日誌檔案組與日誌檔案成員

pingley發表於2012-03-08
新增日誌檔案組與日誌檔案成員
首先確定當前登入的賬戶的許可權,是否包含建立日誌檔案組或者日誌檔案成員的alter database
系統許可權。
SQL> select privilege from user_sys_privs
  2  where privilege='ALTER DATABASE';
PRIVILEGE
----------------------------------------
ALTER DATABASE
在新增日誌檔案組或者日誌檔案成員的時候先檢視下資料庫相容引數。
SQL> show parameter compatible
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
compatible                           string      11.2.0.0.0
compatible >=10.2.0 新增日誌檔案組或者日誌檔案成員,就不需要考慮是否會超過maxlogfiles、
maxlogmembers 的上限值限制了。
確定系統現有的日誌檔案組數與組中的日誌檔案成員數。
SQL> select group#,member from V$logfile;
    GROUP# MEMBER
---------- ----------------------------------------
         1 /opt/oracle11g/oradata/oracl/redo01.log
         2 /opt/oracle11g/oradata/oracl/redo02.log
         3 /opt/oracle11g/oradata/oracl/redo03.log
系統中共有3個日誌檔案組,每個組中各有一個日誌檔案成員。
往系統中新增一個日誌檔案組,組中日誌檔案成員數量是2.
SQL> alter database add logfile group 4 
  2  ('/opt/oracle11g/oradata/oracl/redo401.log','/opt/oracle11g/oradata/oracl/redo402.log')
  3  size 20M;
Database altered.
注:在實際的系統中上面的語句是明顯不合理的,因為把兩個日誌檔案成員放置在相同磁碟中。為了日誌檔案組中日誌檔案的可用性,應該把不同的日誌檔案成員放置在不同的磁碟上面,以免出現日誌切換到該組的時候因介質故障導致日誌檔案不能訪問,從而資料庫當機。檢視新增以後的日誌資訊。另外應該保持系統中所有的日誌檔案的大小相同,這裡的20M和系統以後存在的日誌檔案的大小50M不相同。
SQL> select group#,member from V$logfile;
    GROUP# MEMBER
---------- ----------------------------------------
         1 /opt/oracle11g/oradata/oracl/redo01.log
         2 /opt/oracle11g/oradata/oracl/redo02.log
         3 /opt/oracle11g/oradata/oracl/redo03.log
         4 /opt/oracle11g/oradata/oracl/redo401.log
         4 /opt/oracle11g/oradata/oracl/redo402.log
SQL> select group#,blocksize,archived,members,status
  2  from V$log;
    GROUP#  BLOCKSIZE ARC    MEMBERS STATUS
---------- ---------- --- ---------- ----------------
         1        512 NO           1 INACTIVE
         2        512 NO           1 INACTIVE
         3        512 NO           1 CURRENT
         4        512 YES          2 UNUSED
新新增的日誌檔案組一般是unused狀態的,表示該日誌檔案組還沒有別寫入過。不過也可能是其他狀態,比如新增完該日誌檔案組不久就發生了日誌卻換,則狀態應該是current。另外我們在建立日誌檔案的時候是沒有指定blocksize,所有會使用預設的磁碟扇區的大小,這裡是512 bytes。磁碟扇區的大小
不是4KB,指定4KB,1kB為block的大小也是沒用的。
SQL> alter database add logfile group 5 
  2  ('/opt/oracle11g/oradata/oracl/redo501.log','/opt/oracle11g/oradata/oracl/redo502.log')
  3  size 20M blocksize 4096;    
alter database add logfile group 5
*
ERROR at line 1:
ORA-01378: The logical block size (4096) of file /opt/oracle11g/oradata/oracl/redo501.log 
is not compatible with the disk sector size (media sector size is 512 and host sector size is 512)
錯誤資訊已經說明了一切。如果磁碟的扇區是4KB,則可以選擇4KB,1KB,512bytes 中的一個值為日誌檔案的block大小(database version 11.2.0 以後)。
新增日誌組日誌檔案成員:
新增日誌組日誌檔案成員適用於日誌組已經存在,但是其中的一個或者多個日誌檔案成員因為某些原因被刪除了。下面往group 2中新增一個日誌檔案成員。
SQL> alter database add logfile member
  2  '/opt/oracle11g/oradata/oracl/redo.log'
  3  to group 2;
Database altered.
新增日誌檔案不需要指定大小。oracle 會自動根據該組已經存在的日誌檔案成員的大小設定新新增的日誌檔案成員大小。
注:最最重要的是為什麼要新增日誌檔案組,為什麼要新增日誌檔案成員?

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

相關文章