??? 最近在把DATABASE切換到ARCHIVELOG模式之后,發現Oracle默認的是非自動歸檔,即LOG_ARCHIVE_START = FALSE,
可能是
因為當前測試的數據庫是手工創建的,所以有些啟動參數和用DBCA創建的不太一致。
?
??? 另外自己創建的重做日志文件也都比較小,只有3個2M的文件,直接執行一個腳本就把所有重做日志寫滿了,又沒有設置自動歸檔,所以整個系統都hang住了,都在等待日志歸檔,clear了也不行,就只能增加logfile了。
?
??? alter.log日志信息:
?
??? Mon Dec 15 14:38:08 2008
??? Thread 1 advanced to log sequence 155
????? Current log# 2 seq# 155 mem# 0: D:\ORACLE\ORADATA\KAKA\REDO02.LOG
??? Thread 1 advanced to log sequence 156
????? Current log# 3 seq# 156 mem# 0: D:\ORACLE\ORADATA\KAKA\REDO03.LOG
??? Thread 1 cannot allocate new log, sequence 157
??? All online logs needed archiving
????? Current log# 3 seq# 156 mem# 0: D:\ORACLE\ORADATA\KAKA\REDO03.LOG
?
?
??? LogFile不能像DataFile那樣直接通過alter database datafile ... resize 來重置大小,所以比較麻煩。
?
??? 在網上查了一下,找到N多年前biti老大給的方法,步驟應該很清楚了,前提是要用ARCHIVELOG模式,否則刪除舊日志后無備份信息。
?
?
?
方法:加入新的大的日志文件,然后刪掉舊的小的日志文件
假設現有3個日志組,每個組內有1個成員,每個成員的大小為1MB,現在想把此3個日志組的成員大小都改為10MB
1、創建2個新的日志組
alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 1024k;
2、切換當前日志到新的日志組
alter system switch logfile;
alter system switch logfile;
3、刪除舊的日志組
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
4、操作系統下刪除原日志組1、2、3中的文件
5、重建日志組1、2、3
alter database add logfile group 1 ('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 10M;
6、切換日志組
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、刪除中間過渡用的日志組4、5
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到操作系統下刪除原日志組4、5中的文件
9、備份當前的最新的控制文件
SQL> alter database backup controlfile to trace resetlogs;
?
-The End-