log file sync 和 log file parallel write
dbsnak在微博裡這樣描述等待事件log file sync和log file parallel write的關係:
前 臺程式a通知LGWR要刷log buffer了,這時候a就開始等待log file sync,LGWR接到a的請求後開始等待OS把log buffer寫回redo log,這時候LGWR就開始等待log file parallel write,OS寫完了通知LGWR,中止log file parallel write等待,接著LGWR通知a,中止log file sync等待 --- 這就是上述兩種等待的區別。
有上面這個形象的例子,可以明白等待事件log file sync和log file parallel write是同時存在的,均是等待LGWR程式將log buffer中的redo entries寫入online redo log的完成。
當 一個前臺程式(或使用者會話)進行提交(commit)或回滾(rollback)時,這個會話的redo資訊就需要被刷入redo log file中。且該回話會通知LGWR將所有需要的redo entries寫入redo log file。當LGWR寫入完成後,又會返回使用者會話一個確認資訊,以表明redo entries已全部安全的寫入到了磁碟。
log file sync的引數有:
P1 = buffer#
在log buffer中,所有變更到這個緩衝號的重做條目都必須被重新整理到磁碟,且保證所有已提交的事務被確認寫入,即使發生instance crash,也不會影響到已提交的事務,因此log file sync等待事件就是等待直到緩衝號為buffer#的redo entries均被寫入到了磁碟。
P2 = Not used
P2 = Not used
通常發生log file sync等待事件是由於LGWR寫入緩慢或者應用程式的提交操作過於頻繁。可以透過如下措施幫助減少log file sync等待:
1、將online redo log file放在最快的磁碟上,例如該磁碟不允許配置RAID 5,因為RAID 5對於頻繁寫入操作效能較差。
2、採用批次提交的方式。
3、
在Oracle 10gR2中,commit命令增加了WRITE子句來控制在commit操作期間,redo寫入redo log
file的方式和程度。WRITE子句的作用只是為了提高效能,安全方面會被降低,因為可能會造成提交的事務卻沒被寫入redo log
file而丟失資料。
Oracle文件中是這樣描述commit語句的write子句的:
COMMIT;
COMMIT
WRITE WAIT; --> The commit command is synchronous. It doesn't return
until the relevant redo information is written to the online redo log.
COMMIT
WRITE NOWAIT; --> The commit command is asynchronous. It can return
before the relevant redo information is written to the online redo log.
COMMIT
WRITE BATCH; --> The commit command is synchronous. It doesn't
return until the relevant redo information is written to the online redo
log.
COMMIT WRITE IMMEDIATE; --> The commit "prods" the LGWR
process by sending a message, so that the redo is written immediately to
the redo logs.
上面這種方式是要透過修改程式程式碼實現的,如果想避免修改程式程式碼,也可以在session級別或system級別透過引數COMMIT_WRITE實現,如:
SQL> alter [system | session] set COMMIT_WRITE=’IMMEDIATE,NOWAIT’;
也可以透過觸發器來監視當某使用者的應用程式執行時進行COMMIT_WRITE引數的設定:
SQL> CREATE OR REPLACE TRIGGER sys.global_commit_session_settings ALTER LOGON ON
BEGIN
execute immediate ‘alter session set COMMIT_WRITE=”IMMEDIATE,NOWAIT”’
END;
/
需要注意的是:如果使用了此選項,一旦資料庫例項失敗(CRASH),儘管是已被提交的事務,也會丟失沒有被寫入到redo log file中的資料,請慎用。
4、使用NOLOGGING或UNRECOVERABLE選項。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27036311/viewspace-768271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- log file sync等待事件事件
- 【等待事件】log file sync事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- LOG FILE SYNC概述(第五篇)
- LOG FILE SYNC概述(第四篇)
- 【WAIT】 log file sync等待事件說明AI事件
- log file sync等待事件處理思路事件
- LOG FILE SYNC概述(第一篇)
- log file switch
- Script to Collect Log File Sync Diagnostic Information (lfsdiag.sql)ORMSQL
- [20201204]關於等待事件Log File Sync.txt事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- I/O上的等待事件 —— control file sequential read/control file parallel write事件Parallel
- 一個os thread startup、log file sync等待的故障回顧thread
- redo log file 最佳化
- Oracle資料庫由dataguard備庫引起的log file sync等待Oracle資料庫
- How to Dump Redo Log File Information --metalinkORM
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- 關於log file switch and checkpoint機制
- ssserver -c /etc/shadowsocks.json --log-file /var/log/shadowsocks.log -d start啟動失敗ServerJSON
- 如何選擇配置 MySQL innodb_log_file_sizeMySql
- Oracle RAC+DG 調整redo/standby log fileOracle
- log_archive_dest與log_archive_dest_n與USE_DB_RECOVERY_FILE_DESTHive
- Resource is out of sync with the file system
- 更改online redo log file 提示 ORA-01511 ORA-01141
- Eclipse:Resource is out of sync with the file systemEclipse
- 測試中出現ERROR StatusLogger No log4j2 configuration fileError
- 0316理解db file parallel read等待事件Parallel事件
- Linux 下高階日誌檔案檢視器Log File NavigatorLinux
- MATLAB 寫log file自動輸出計算資料等操作Matlab
- undo log和redo log
- 0322理解db file parallel read等待事件2Parallel事件
- 【ASK_ORACLE】Linux從6升級到7導致Oracle產生大量Log file sync等待事件處理辦法OracleLinux事件
- MySQL error log和bin logMySqlError
- [20211013]Oracle 19c新特性Listener自動清理(Network Log File Segmentation).txtOracleSegmentation
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- Oracle-真實環境的丟失current redo log file的故障恢復Oracle
- MySQL Undo Log和Redo Log介紹MySql