資料庫管理-第118期 記一次開啟附加日誌導致的效能問題(202301129)
資料庫管理-第118期 記一次開啟附加日誌導致的效能問題(202301129)
本週二凌晨,為了配合某國產資料庫從Oracle資料庫能夠實時同步資料,在X9M那套一體機上做了開啟附加日誌的操作,也正是因為這個操作帶來了一些小問題。
1 幹了些啥?
其實很標準,在主庫CDB裡面開啟附加日誌:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
而這時候在EMCC監控中發現某個PDB開始出現了一些問題:
資料庫兩條查詢語句出現了大量的latch: cache buffers chains等待,業務方反饋主要是查詢幾乎卡死,對應操作無法執行。而這兩條語句平時執行效率賊高,理應不會出現這個問題,那麼根據最近做了啥操作,判定肯定是因為開啟附加日誌引起的。好的一點是開啟附加日誌的操作大概在15分鐘內完成了,為了快速恢復業務,所以將對應PDB進行了重啟操作:
alter pluggable database pdb_xxx close immediate instances=all;alter pluggable database pdb_xxx open instances=all;
srvctl start service -db xxdbaas -s xxxdb
2 為什麼會這樣?
首先這裡發生的問題很奇怪,如果是開啟附加日誌引起的異常等待,那麼應該是所有PDB都會受到影響,然而受影響的只有一個PDB,在網上和MOS查了一圈過後也沒找到具體原因,只能開個SR問問,上傳了標準3件套:AWR報表、ASH、tfactl收集的檔案之後,後臺也很快給了答覆:
根據 Alter Database Add Supplemental Log Data Hangs (Doc ID 406498.1),啟用Supplemental Log ,這個會讓所有cursor cache 裡的cursor失效,這個應該是導致這些SQL再次執行時候等待latch: cache buffers chains 的原因,通常來講, 這個等待應該不會很長時間並且這麼多會話同時等待,除非sql 效能很差,這個目前在您的環境中看不出來,因為在同一sample 裡,很多會話執行同一sql,並且blocker是不同的。這個應該是正常的, 只是在增加supplemental log data 過程中很大機率遇到的一個情況。
這個問題也是我第一次遇到,因為附加日誌開啟造成的大量等待,也算是吃一塹長一智,以後所有資料庫操作還是申請一個更高的割接操作,割接期間任何影響就有據可依。這裡也可以看到,一體機會給一些效能不大好的SQL帶來一些幻覺,因為跑的很快;另一方面即是強如Exadata也不能在稍有異常的情況下跑出非凡效能。最終還好業務側把出問題時間的坑給填了,不說了,看語句最佳化去了。
3 你以為就完了?
資料庫的效能問題確實是解決了,但是還得去PDB裡面開全列附加日誌,因為要從ADG備庫拉取資料,而備庫用於日誌儲存的磁碟組空間很小,因此該國產資料庫技術人員提供了下面的語句來開啟需要同步的對應表的全列統計資訊:
DECLARE sqltest VARCHAR2(200;);BEGIN FOR t IN (SELECT table_name FROM all_tables WHERE owner ='XXXX')) LOOP Sqltest := 'ALTER TABLE '||t.table_name||'ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS'; EXECUTE IMMEDIATE sqltest;; DBMS_OUTPUT.PUT_LINE(sqltest;); END LOOP;;END;;
這裡吐槽以下幾點:
- loop,查一條拼接一條執行一條,這效率,有點低
- 變數大小寫問題,主要是看著煩
- 作為DBA不干預業務使用者賬號密碼,那我肯定得用高許可權使用者去執行,那麼只不是缺了個schema拼接內容
- ADD前面少了一個空格(尷尬症還是強迫症抑或都給整出來了)
總結
老規矩,知道寫了些啥!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31466763/viewspace-2998088/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開啟關閉oracle資料庫附加日誌Oracle資料庫
- Oracle資料庫導致效能問題的可能原因Oracle資料庫
- memlock過低導致的資料庫效能問題資料庫
- 第12章 管理資料庫日誌記錄方式資料庫
- Sybase資料庫日誌過大導致不能啟動(轉)資料庫
- 資料庫統計資訊不更新導致的效能問題資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- 日誌導致jvm記憶體溢位相關問題JVM記憶體溢位
- openGauss資料庫日誌管理指導資料庫
- 記一次 Mac 意外重啟導致的 Homestead 問題Mac
- [20160813]12c開啟附加日誌問題.txt
- 記一次 Laravel日誌許可權許可權問題(定時器導致)Laravel定時器
- SQL Server 無日誌檔案附加資料庫SQLServer資料庫
- Oracle監聽日誌過大導致的問題Oracle
- TSM配置不好導致備份不正常,從而導致資料庫效能問題資料庫
- 記一次:歸檔檔案系統問題導致資料庫hang處理資料庫
- 歸檔日誌滿導致的資料庫掛起故障處理資料庫
- 解決記錄日誌導致VS2013緩慢的問題
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- 資料庫預設安裝配置導致的問題資料庫
- insert導致的效能問題大排查(r11筆記第26天)筆記
- SQL Server 2005無日誌檔案附加資料庫SQLServer資料庫
- 一次JVM記憶體問題導致的線上事故JVM記憶體
- 記一次儲存問題導致的rac故障案例
- 記錄一次fs配置導致串線的問題
- 一次OWB資料庫效能問題處理資料庫
- 資料庫收縮,刪除日誌,自動收縮,資料庫分離附加資料庫
- 使用資料庫處理併發可能導致的問題資料庫
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- 記一次線上報錯日誌問題排查
- JPA 二級快取 網路多播協議導致的資料庫效能問題快取協議資料庫
- 記一次 MySQL 資料庫問題排查MySql資料庫
- 歸檔日誌滿導致的資料庫掛起故障處理【轉載】資料庫
- Oracle 附加日誌Oracle
- 錯誤的使用者名稱密碼登入導致的資料庫效能問題密碼資料庫
- 記一次crontab中date命令錯用導致的問題
- 記一次簡單的資料庫恢復,控制檔案不一致導致的啟動失敗。資料庫
- 記一次資料庫重啟後歸檔急劇增加的問題資料庫