修改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
- 如何更改線上重做日誌檔案的大小
- Oracle重做日誌檔案基礎Oracle
- oracle 聯機重做日誌檔案Oracle
- 增加日誌檔案,修改當前日誌檔案大小
- 重做日誌大小的設定
- 重做日誌檔案中的SCN
- Oracle11g redo log 建立、新增、刪除(重做日誌組,重做日誌檔案)Oracle
- 修改online redo日誌檔案大小
- kingsql 如何修改Oralce日誌檔案大小SQL
- 日誌檔案的大小
- Oracle的重做日誌Oracle
- 重做日誌檔案的相關操作
- 聯機重做日誌、歸檔日誌、備用重做日誌
- 16、重做日誌檔案的狀態及重做日誌組的狀態說明
- oracle 11g rac 新增重做日誌檔案Oracle
- 怎樣改變重做日誌的大小
- 嘗試修改SQL Server的重做日誌檔案,使其按照修改的結果執行重做,結果失敗SQLServer
- 聯機重做日誌檔案的恢復
- 丟失所有重做日誌檔案的恢復例子丟失所有重做日誌檔案的恢復例子如下:
- 重做日誌檔案損壞測試
- Oracle 聯機重做日誌檔案(ONLINE LOG FILE)Oracle
- Oracle重做日誌檔案損壞或丟失後的恢復Oracle
- oracle 修改日誌大小及增加日誌成員Oracle
- 為oracle新增重做日誌組及重做日誌成員Oracle
- 改變日誌檔案大小
- oracle 恢復重做日誌Oracle
- 在ORACLE中對線上重做日誌檔案進行調整Oracle
- Postgres使用pg_resetwal命令修改wal日誌檔案大小的方法
- 【Oracle】如何修改資料檔案和日誌檔案的路徑Oracle
- 限制 Apache日誌檔案大小的方法Apache
- Oracle資料庫重做日誌及歸檔日誌的工作原理說明Oracle資料庫
- 記錄一則clear重做日誌檔案的案例
- 丟失聯機重做日誌檔案的恢復
- 改變歸檔日誌檔案大小
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-切換日誌檔案Oracle
- 【Oracle日誌】- 日誌檔案重建Oracle