oracle聯機日誌檔案REDO LOGFILE簡述
本文總結一下關於redo logfile的一些內容。
一、redo logfile的簡單介紹
它一般有大小相同的一組檔案構成。我們可以檢視資料庫檢視v$logfile知道它的個數和儲存位置。
SVRMGRL> select * from v$logfile;
檢視資料庫檢視v$log知道它當前的狀態。
SVRMGRL> select * from v$log;
一個時間只有一組logfile group是工作狀態(current), redo logfile滿了後會自動切換到下一個logfile group, 如果資料庫是歸檔方式同時寫到歸檔日誌檔案。這些檔案不能用常規的文字編輯器檢視, 它以特定的格式存放, 只有資料庫或者專門的軟體可以看懂它。
redo logfile的最大數目是在建立資料庫時指明的。如果你想知道當前資料庫redo logfile的最大數值是多少,重新生成控制檔案, 就可以知道。
SVRMGRL>alter database backup controlfile to trace;
這條語句會在$ORACLE_BASE/admin/dbname/udump/路徑下生成當前時間的一個*.trc檔案, 也就是資料庫的控制檔案, 用文字編輯器, 即可看到資料庫建立時用的一些引數, 包括redo logfile的最大數(maxlogfiles)。
二、 redo logfile的大小和位置對資料庫效能的影響
如果用ORACLE的安裝嚮導建立的典型資料庫, 它的redo logfile大小為500K, 這基本上是不能滿足典型的OLTP應用的, 在資料庫日誌檔案(alert_orasid.log)裡會記錄著頻繁的log switch。ORACLE推薦log switch時間最好在15--30分鐘之間, 所以redo logfile的大小由資料庫DML運算元據的大小決定其最佳大小。
redo logfile最好有多個儲存位置, 多組成員, 使資料庫恢復時有更多的選擇。
典型的OLTP應用,redo logfile大小可以為16M。當然繁忙的資料庫, 例如當今的入口網站, 這個值可以達到100M以上.
如果你發現當前資料庫日誌檔案裡log switch的時間偏大或者偏小,不要緊。ORACLE提供了在資料庫聯機狀態來改變redo logfile大小的方法。
三、在聯機狀態改變redo logfile大小的方法
假如原來有3個小的redo log file, 下面是UNIX環境下的一個例子:
第一步: 往資料庫新增三個大的redo logfile
SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 4
('/opt/oradata/app/redo04.log',
'/ora_bak/oradata2/redolog/redo04.log') size 16M reuse;
SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 5
('/opt/oradata/app/redo05.log',
'/ora_bak/oradata2/redolog/redo05.log') size 16M reuse;
SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 6
('/opt/oradata/app/redo06.log',
'/ora_bak/oradata2/redolog/redo06.log') size 16M reuse;
第二步: 手工地做log switch, 使新建的redo logfile起作用.
SVRMGRL>alter system switch logfile;
此操作可以執行一到幾次, 使舊的redo logfile成invalid狀態.
第三步: 刪除原來舊的redo logfile.
SVRMGRL>alter database drop logfile group 1;
SVRMGRL>alter database drop logfile group 2;
SVRMGRL>alter database drop logfile group 3;
四、跟redo logfile有關的其它資料庫引數
1、log_buffer
log_buffer是ORACLE SGA的一部分, 所有DML命令修改的資料塊先放在log_buffer裡, 如果滿了或者到了check_point時候通過lgwr後臺程式寫到redo logfile裡去。它不能設得太大,這樣在意外發生時會丟失很多改變過的資料。它最好不要大於512K或者128K*CPU個數。
我們可以用下面的SQL語句檢測log_buffer使用情況:
SVRMGRL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio" from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
這個比率小於1%才好,否則增加log_buffer的大小
2、log_checkpoint_interval
Oracle8.1 版本後log_checkpoint_interval指的是兩次checkpoint之間作業系統資料塊的個數。
checkpoint時Oracle把記憶體裡修改過的資料塊用DBWR寫到物理檔案,用LGWR寫到日誌和控制檔案。
一般UNIX作業系統的資料塊為 512 bytes。
從效能優化來說 log_checkpoint_interval = redo logfile size bytes / 512 bytes
3、log_checkpoint_timeout
Oracle8.1 版本後log_checkpoint_timeout指的是兩次checkpoint之間時間秒數。
Oracle建議不用這個引數來控制,因為事務(transaction)大小不是按時間等量分佈的。
log_checkpoint_timeout = 0
log_checkpoint_timeout = 900
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16486600/viewspace-582744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 聯機重做日誌檔案Oracle
- 【REDO】刪除聯機重做日誌檔案組的注意事項
- oracle logfile日誌檔案常規操作小記Oracle
- 【REDO】刪除聯機重做日誌檔案組成員的注意事項
- Oracle 聯機重做日誌檔案(ONLINE LOG FILE)Oracle
- 聯機日誌檔案損壞問題
- 當前聯機日誌檔案損壞
- 聯機重做日誌檔案的恢復
- 【Oracle日誌】- 日誌檔案重建Oracle
- 【REDO】Oracle 日誌挖掘,分析歸檔日誌線上日誌主要步驟Oracle
- Oracle11g redo log 建立、新增、刪除(重做日誌組,重做日誌檔案)Oracle
- redo日誌檔案學習筆記(一)筆記
- 修改online redo日誌檔案大小
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-切換日誌檔案Oracle
- Oracle聯機日誌檔案丟失解決方法一例Oracle
- 通過 alter system dump logfile語句dump REDO及歸檔日誌資訊示例
- 聯機日誌檔案丟失解決方法
- 聯機重做日誌、歸檔日誌、備用重做日誌
- mysql關於redo事務日誌ib_logfile的理解MySql
- 【redo】日誌檔案的丟失解決方法
- 【REDO】刪除REDO LOG重做日誌組後需要手工刪除對應的日誌檔案
- Oracle資料庫聯機日誌檔案丟失處理方法(1)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(3)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(2)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(4)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(5)Oracle資料庫
- Oracle聯機日誌檔案丟失或損壞的處理方法Oracle
- 【故障恢復】【驚魂】ORACLE聯機日誌檔案無故全部消失Oracle
- 【REDO】重做日誌檔案(redo log files)管理(增,刪,改,查,切)
- Oracle恢復例項之一:資料檔案、控制檔案、聯機日誌丟失Oracle
- 【Oracle】 Oracle11gR2 擴充套件資料庫聯機日誌檔案Oracle套件資料庫
- oracle 日誌檔案管理Oracle
- 2 Day DBA-管理Oracle例項-管理聯機重做日誌-練習:切換日誌檔案Oracle
- 簡述REDO操作
- 丟失聯機重做日誌檔案的恢復
- 聯機日誌檔案丟失解決方法(二)
- 聯機日誌檔案丟失解決方法(一)
- 簡述oracle日誌組的四種狀態Oracle