修改Oracle重做日誌檔案的大小
redo重做日誌檔案是Oracle資料庫的非常重要的組成部分。當日志檔案發生切換時(Log Switch),會觸發一個檢查點,那麼日誌檔案的大小就和檢查點的觸發頻率相關。更為頻繁的檢查點可以縮短資料庫的恢復時間,但是過於頻繁的檢查點卻會帶來效能負擔。所以如何合理地設定日誌檔案的大小也是資料庫最佳化的一個重要內容。而且,如果日誌檔案意外損失或丟失,那麼就會丟失資料,所以更大的日誌檔案可能意味著更多的資料損失風險。所以資料庫的任何一個調整都需要慎重。
即使是Oracle公司,在對於日誌的設定上,也是在不斷調整,在大小、切換、恢復時間、資料損失等問題上,Oracle也在試圖找到一個平衡點。一般來說,在實際生產環境中,把Log Switch的時間控制在半小時左右即可;對於通常的作業系統來說,日誌檔案的最大大小為2GB,在非常繁忙的業務系統中,由於受限於日誌大小,調整、最佳化都只是一個選擇而已。
Oracle版本
預設的redo log file大小(單位:MB)
8i
1
9iR2
100
10gR1
10
10gR2
50
11g
50
以通用的Oracle10.2.0.4版本為例,Oracle建庫的時候自動建立3個日誌檔案組,每個日誌檔案組包含一個日誌檔案,初始大小50M,在實際執行過程中可能切換頻繁導致效能下降,這時候可以增大其大小,方法如下:加入新的大的日誌檔案,然後刪掉舊的小的日誌檔案。例如,現有三個日誌組,每個組內有一個成員,每個成員的大小為50MB,現在要把此三個日誌組的成員大小都改為100MB,下面我將演示一下操作過程。
1.檢視現有日誌組及其檔案大小;
點選(此處)摺疊或開啟
-
SQL>
-
SQL> select group#,sequence#,status,bytes/1024/1024 from v$log;
-
-
GROUP# SEQUENCE# STATUS BYTES/1024/1024
-
---------- ---------- ---------------- ---------------
-
1 7 INACTIVE 50
-
2 8 INACTIVE 50
-
3 9 CURRENT 50
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter database add logfile group 4(\'/u01/app/oracle/oradata/HOEGH/redo04.log\') size 100M;
-
-
Database altered.
-
-
SQL> alter database add logfile group 5(\'/u01/app/oracle/oradata/HOEGH/redo05.log\') size 100M;
-
-
Database altered.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system checkpoint;
-
-
System altered.
-
-
SQL> alter system switch logfile;
-
-
System altered.
-
-
SQL> alter system checkpoint;
-
-
System altered.
-
-
SQL> alter system switch logfile;
-
-
System altered.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
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.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter database add logfile group 1(\'/u01/app/oracle/oradata/HOEGH/redo01.log\') size 100M;
-
-
Database altered.
-
-
SQL> alter database add logfile group 2(\'/u01/app/oracle/oradata/HOEGH/redo02.log\') size 100M;
-
-
Database altered.
-
-
SQL> alter database add logfile group 3(\'/u01/app/oracle/oradata/HOEGH/redo03.log\') size 100M;
-
-
Database altered.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter system checkpoint;
-
-
System altered.
-
-
SQL> alter system switch logfile;
-
-
System altered.
-
-
SQL> alter system checkpoint;
-
-
System altered.
-
-
SQL> alter system switch logfile;
-
-
System altered.
-
-
SQL> alter system checkpoint;
-
-
System altered.
-
-
SQL> alter system switch logfile;
-
-
System altered.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> alter database drop logfile group 4;
-
-
Database altered.
-
-
SQL> alter database drop logfile group 5;
-
- Database altered.
點選(此處)摺疊或開啟
-
SQL> alter database backup controlfile to trace resetlogs;
-
-
Database altered.
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> select group#,sequence#,status,bytes/1024/1024 from v$log;
-
-
GROUP# SEQUENCE# STATUS BYTES/1024/1024
-
---------- ---------- ---------------- ---------------
-
1 12 INACTIVE 100
-
2 13 INACTIVE 100
-
3 14 CURRENT 100
-
- SQL>
另外,介紹一下重做日誌的狀態,最常見的狀態有以下幾種:CURRENT,ACTIVE,INACTIVE,UNUSED。
CURRENT
CURRENT指的是當前日誌,該日誌檔案是活動的,當前正在被使用的,在進行崩潰恢復時,Current的日誌檔案是必須的。
ACTIVE
ACTIVE的日誌是活動的非當前日誌,該日誌可能已經完成歸檔也可能沒有歸檔,活動的日誌檔案在Crash恢復時會被用到。
ACTIVE狀態意味著,檢查點尚未完成,如果日誌檔案迴圈使用再次到達該檔案,資料庫將處於等待的停頓狀態。
引起Checkpoint incomplete可能有以下多種原因:
l 日誌檔案過小,切換過於頻繁;
l 日誌組太少,不能滿足正常事務量的需要;
l 日誌檔案所在磁碟I/O存在瓶頸,導致寫出緩慢,阻塞資料庫正常執行;
l 由於資料檔案磁碟I/O瓶頸,DBWR寫出過於緩慢;
l 由於事務量巨大,DBWR負荷過高,不堪重負。
針對不同的原因,可以從不同角度著手解決問題:
l 適當增加日誌檔案大小;
l 適當增加日誌組數;
l 使用更快速磁碟儲存日誌檔案(如採用更高速轉速磁碟;使用RAID10而不是RAID5等方式);
l 改善磁碟I/O效能;
INACTIVE
INACTIVE的日誌是非活動日誌,該日誌在例項恢復時不再需要,但是在介質恢復時可能會用到。INACTIVE狀態的日誌可能沒有被歸檔。如果資料庫啟動在歸檔模式,在未完成歸檔之前,日誌檔案也不允許被覆蓋,這時候活動程式會處於log file switch(archiving needed)等待之中。
UNUSED
UNUSED是指該日誌從未被寫入,這類日誌可能是剛被新增到資料庫或者在RESETLOGS之後被重置。被使用之後,該狀態會被改變。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1658072/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 修改InnoDB重做日誌檔案的數量或大小MySql
- Oracle11g redo log 建立、新增、刪除(重做日誌組,重做日誌檔案)Oracle
- 【Oracle】如何修改資料檔案和日誌檔案的路徑Oracle
- 記錄一則clear重做日誌檔案的案例
- Postgres使用pg_resetwal命令修改wal日誌檔案大小的方法
- 限制 Apache日誌檔案大小的方法Apache
- 重做日誌管理
- MySQL重做日誌(redo log)MySql
- 達夢資料庫DM8之REDOLOG重做日誌檔案管理資料庫
- oracle歸檔日誌Oracle
- MySQL 5.6修改REDO日誌的大小和個數MySql
- 歸檔oracle alert日誌Oracle
- Oracle歸檔日誌清理Oracle
- Archived Redo Logs歸檔重做日誌介紹及其優點Hive
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- MySQL重做日誌恢復資料的流程MySql
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- oracle 刪除過期的歸檔日誌Oracle
- 【REDO】Oracle 日誌挖掘,分析歸檔日誌線上日誌主要步驟Oracle
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- 探究MySQL中的日誌檔案MySql
- mysql的日誌檔案詳解MySql
- java專案日誌配置檔案Java
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- oracle11G歸檔日誌管理Oracle
- oracle rman備份歸檔日誌需要先切換日誌嗎Oracle
- 【TUNE_ORACLE】Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議Oracle
- selenium-日誌檔案的使用(十二)
- 日誌檔案過大清理
- sybase iq日誌檔案管理
- MySQL InnoDB日誌檔案配置MySql
- Oracle RAC修改引數檔案位置Oracle
- 在Linux中,有一堆日誌檔案,如何刪除7天前的日誌檔案?Linux
- linux查詢某段時間修改的檔案的總大小Linux