今天在看《劍破冰山》這本書,有一個logfile switch 等待的問題,書上提到有兩種解決問題方法,1.增加dbw進程數2.增大記錄檔大小,對於第一種方法只需要更改一下參數這裡不進行介紹,我主要介紹日誌的一些操作及原則,當然了這些資訊主要對參照網上的資訊和自己的一些實際操作。
1.增大記錄檔大小,我是通過新建立大的日誌組然後進行切換實現的
a.建立新的日誌組
alter database add logfile group 4 ('/u01/Oracle/product/10.0.2/oradata/ORCL/redo41.log') size 100m;
alter database add logfile group 5 ('/u01/oracle/product/10.0.2/oradata/ORCL/redo51.log') size 100m;
alter database add logfile group 6 ('/u01/oracle/product/10.0.2/oradata/ORCL/redo61.log') size 100m;
2.切換日誌到建立的日誌組
alter system switch logfile;
3.查看日誌狀態
select * from v$log;
注意:只有status為inactive並且archived 為YES時方可刪除日誌組(這個的意思為該重做日誌己經歸檔,否則會報ora-01624)
4.刪除日誌組
alter database drop logfile group 1;
5.作業系統層級刪除資料檔案(我的系統是RedHat5)
rm -rf redo01.log
6.增加日誌成員(最好把成員放到不同的磁碟上做到多功,避免一個組的記錄檔全部損壞資料庫宕機)
alter database add logfile member '/u01/oracle/product/10.0.2/oradata/ORCL/redo42.log' to group 4;
alter database add logfile member '/u01/oracle/product/10.0.2/oradata/ORCL/redo52.log' to group 5;
alter database add logfile member '/u01/oracle/product/10.0.2/oradata/ORCL/redo42.log' to group 3;
7.刪除日誌群組成員
alter database drop logfile member '/u01/oracle/product/10.0.2/oradata/ORCL/redo42.log';
下面介紹關於日誌一些原則:
原則:刪除前必須遵守如下原則,每個執行個體必須至少有兩個日誌組;當一個組處於ACTIVE或者CURRENT的狀態時不可刪除;刪除日誌組的操作只對資料庫變更,作業系統的檔案尚未刪除;當刪除時適用DROP LOGFILE GROUP N語句時,此時GROUP N內的所有成員都將被刪除。
ALTER DATABASE DROP LOGFILE GROUP N;
刪除日誌成員的原則:當你刪除一個是該組中最後一個成員的時候,你不能刪除此成員;當組的轉檯處於current的狀態時,不能刪除群組成員;在歸檔模式下,必須得歸檔之後才能刪除;刪除日誌群組成員的操作只對資料庫變更,作業系統的檔案尚未刪除
ALTER DATABASE DROP LOGFILE MEMBER '/LOCATION_DUST/REDO0N_N.LOG';