需求背景
由於前期安裝oracle時redo文件大小或者路徑規划不合理需要進行修改,以便滿足性能測試要求。redo文件規划大小建議與生產環境一致。
重做日志相關數據字典
1、v$log 記錄數據庫中有多少個重做日志組,每個組中有多少個成員、日志大小及狀態
2、v$logfile 記錄着每個日志組成員的屬性、文件路徑、文件名、狀態等
操作步驟
1、查看現有日志組及重做文件大小
SQL> select group#,sequence#,bytes/1024/1024 sizeMB,members,status from v$log;
GROUP# SEQUENCE# SIZEMB MEMBERS STATUS ---------- ---------- ---------- ---------- --------- 1 27 50 1 INACTIVE 2 28 50 1 CURRENT 3 29 50 1 INACTIVE
STAUS狀態值說明:
inactive:表示實例恢復已不再需要這組聯機重做日志組了。
active:表示該組是活動的但不是當前組,實例恢復時需要這組日志。
current:表示該組日志是當前組,該聯機重做日志組是活動的,當前正在使用。 unused:表示該日志組從未寫過,是重做日志剛剛添加到狀態。
2、查看當前重做日志文件的狀態和路徑
SQL> select group#,status,type,member from v$logfile;
GROUP# STATUS TYPE MEMBER ---------- ------- ------- --------------------------------------------- 3 ONLINE /home/oracle/oradata/ora11g/redo03.log 2 ONLINE /home/oracle/oradata/ora11g/redo02.log 1 ONLINE /home/oracle/oradata/ora11g/redo01.log
STATUS狀態說明:
空白:表示該文件正在使用。
stale:表示該文件中的內容是不完全的。
invalid:表示該文件是不可以被訪問的。
deleted:表示該文件已不再有用了。
3、新增創建重做日志文件組group 4、group 5、group 6,文件大小設置為1000M。
SQL> alter database add logfile group 4('/dev/vgoracle/lvredo4.log') size 1000M; Database altered. SQL> alter database add logfile group 5('/dev/vgoracle/lvredo5.log') size 1000M; Database altered. SQL> alter database add logfile group 6('/dev/vgoracle/lvredo6.log') size 1000M; Database altered.
4、執行alert system switch logfile命令進行多次切換,直至group 4或者group 5日志組的狀態為current。
SQL> alter system switch logfile; System altered. SQL> select group#,sequence#,bytes/1024/1024 sizeMB,members,status from v$log; GROUP# SEQUENCE# SIZEMB MEMBERS STATUS ---------- ---------- ---------- ---------- --------- 1 27 50 1 INACTIVE 2 28 50 1 ACTIVE 3 29 50 1 INACTIVE 4 30 50 1 CURRENT 5 31 50 1 NOUSE 6 32 50 1 NOUSE
5、執行alter system checkpoint手工執行同步數據,將redo文件記錄寫入數據文件。確保group 1、group 2、group 3文件組狀態為INACTIVE。
SQL> select group#,sequence#,bytes/1024/1024 sizeMB,members,status from v$log; GROUP# SEQUENCE# SIZEMB MEMBERS STATUS ---------- ---------- ---------- ---------- --------- 1 27 50 1 INACTIVE 2 28 50 1 INACTIVE 3 29 50 1 INACTIVE 4 30 50 1 CURRENT 5 31 50 1 NOUSE 6 32 50 1 NOUSE
6、當日志組處於INACTIVE狀態是,可以執行drop操作刪除。對應的OS文件需手工刪除。
SQL> alter database drop logfile group 1; Database altered. SQL> alter database drop logfile group 2; Database altered. SQL> alter database drop logfile group 3; Database altered.
7、操作完成。重新查看重做日志文件組狀態
SQL> select group#,sequence#,bytes/1024/1024 sizeMB,members,status from v$log; GROUP# SEQUENCE# SIZEMB MEMBERS STATUS ---------- ---------- ---------- ---------- --------- 4 30 1000 1 ACTIVE 5 31 1000 1 NOUSE 6 32 1000 1 NOUSE
說明:如果習慣使用日志組1/2/3,可以按照上述過程重新操作一遍即可。
8、清理被替換的redo文件
rm /home/oracle/oradata/ora11g/redo01.log rm /home/oracle/oradata/ora11g/redo02.log rm /home/oracle/oradata/ora11g/redo03.log