XTTS全備開啟BCT後等待事件 block change tracking buffer space
XTTS全備開啟BCT後等待事件 block change tracking buffer space
適用範圍
Oracle 11g及以後版本,開啟BCT後的RMAN備份和XTTS遷移全備
問題概述
開啟BCT後在源端對資料庫進行XTTS全備,資料庫中出現大量block change tracking buffer space等待事件
問題原因
CTWR dba buffer 不足
解決方案
透過設定隱藏引數_bct_public_dba_buffer_size,_bct_buffer_allocation_max,_bct_bitmaps_per_file 增加CTWR dba buffer
參考文件
High Waits On 'block change tracking buffer space' - Checkpoint Contention With BLOCK CHANGE TRACKING or RMAN Incremental Backup (Doc ID 2094946.1)
ORACLE 10G BLOCK CHANGE TRACKING INSIDE OUT (Doc ID 1528510.1)
**什麼是BCT和CTWR?**
BCT-Block Change Tracking 塊跟蹤Block chage tracking是從Oracle10g的一個新特性。
CTWR-Change Tracking Writer,CTWR是BCT對應的後臺程式記錄自從上一次備份以來資料塊的變化,並把這些資訊寫入到跟蹤檔案中。
CTWR程式大約每20-60秒對BCT檔案的第18塊執行更新——這個我們可以稱為“CTWR heartbeat”。在此CTWR heartbeat期間,CTWR讀寫block 18,並連續提交兩個短等待事件——“change tracking file synchronous read” 和 “change tracking file synchronous write”。
在更新BCT檔案時,CTWR程式也會對控制檔案執行一些IO操作(“control file sequential read” 和 “control file parallel write”)。對BCT檔案本身的讀寫操作使用“change tracking file synchronous read” 和“change tracking file synchronous write”
SQL>select name,parameter1,parameter2,parameter3 from v$event_name where lower(name) like 'change%write';
NAME PARAMETER1 PARAMETER2 PARAMETER3
-------------------------------------------------- ---------------------------------------- --------------- ---------------
change tracking file synchronous write block# blocks
change tracking file parallel write blocks requests
啟用BCT將提高增量備份的效能,但代價是什麼?我們經常會聽到客戶關於開啟一個當前被禁用的特性的擔憂。大多數應用程式透過啟用BCT後對效能影響不大。資料倉儲型別或工作負載較高的資料庫開啟BCT後會對資料庫效能產生不同影響。
如果資料庫效能受到影響大多情況是在將資料填充到CTWR緩衝區的過程中發生。如果這個緩衝區中有足夠或空閒的空間,填充BCT資訊的過程將非常快。如果沒有足夠的空閒空間,那麼程式必須等待,直到CTWR更新塊更改跟蹤檔案並釋放空間。
當等待“block change tracking buffer space”的時間佔很大百分比時,說明BCT對資料庫效能產生了影響。
對於“block change tracking buffer space”等待事件,我們一般從以下三方面去分析和處理:
首先,檢查從CTWR到塊更改跟蹤檔案的IO是否最佳。如果存在資源爭用(磁碟繁忙,CPU使用率高)和CTWR不能及時完成其工作,那麼“block change tracking buffer space”事件只是一種現象,而不是根本原因。將最佳化的重點放在資源爭用的直接原因上。檢查儲存效能,將BCT跟蹤檔案放到效能較好的儲存上,降低CTWR程式對CPU的使用率。
其次,驗證Large Pool分配給CTWR緩衝區是否足夠大,並且CTWR緩衝區足夠大以支援需求。可以透過調整“_bct_public_dba_buffer_size”來增加CTWR緩衝區。注意,對該引數的更改可能需要調整Large Pool Size和“_bct_public_dba_buffer_allocation_max”引數
SQL>select dba_buffer_count_public*dba_entry_count_public*dba_entry_size*2 from X$KRCSTAT;
再次,關閉BCT。儘管這種情況非常少見,但有一些應用程式工作負載(比如大型ETL工作負載)無法忍受啟用BCT跟蹤的開銷。
SQL>alter database disenable;
建議啟用Oracle Block Change Tracking以提高增量備份的效能。由於RMAN不需要掃描資料庫中的每個塊,因此備份視窗會更小,基礎設施利用率也會降低(CPU、IO)。進行任何更改總是存在一定的風險,但在大多數應用程式的上下文中,啟用塊更改跟蹤將是透明的。
1、開啟BCT
RAC環境建議change tracking file放在ASM磁碟組或共享儲存保證沒個節點訪問到相同的塊跟蹤檔案
SQL>alter database enable block change tracking using file '+data/hfxfdb/trace.f';
2、檢查BCT狀態
SQL>col status format a8
SQL>col filename format a60
SQL>select status, filename fromv$block_change_tracking;
ENABLED +data/hfxfdb/trace.f
3、檢查ctwr程式
$ ps -ef|grep ctwr
oracle 36438760 46989544 0 09:38:42 pts/10 0:00 grep ctwr
oracle 28444196 1 1 Aug 12 - 376:44 ora_ctwr_hfxfdb01
$ ps -ef|grep ctwr
oracle 32047272 40830898 0 10:00:10 pts/0 0:00 grep ctwr
oracle 44172054 1 0 Aug 12 - 228:04 ora_ctwr_hfxfdb02
成功開啟BCT之後後臺程式ctwr隨之啟動(預設ctwr程式不啟動)
3、問題時段等待事件
select * from (
select sql_id,top_level_sql_id,event,WAIT_CLASS,to_char(sample_time,'yyyy-mm-dd hh24:mi:ss') "DATE",count(1)
from dba_hist_active_sess_history
where sample_time between to_date('2022-08-13 18:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2022-08-13 19:00:00','yyyy-mm-dd hh24:mi:ss')
and event='block change tracking buffer space'
group by sql_id,top_level_sql_id,event,WAIT_CLASS,to_char(sample_time,'yyyy-mm-dd hh24:mi:ss')
order by 6 desc )
where rownum<11;
SQL_ID TOP_LEVEL_SQL_I EVENT WAIT_CLASS DATE COUNT(1)
--------------- --------------- ---------------------------------------- ------------ --------------------- ----------
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:02:33 27
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:01:23 27
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:19:25 26
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:18:24 26
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:13:21 26
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:07:27 26
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:03:44 26
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:01:03 25
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:00:52 25
8uvchf70uxx9x 8uvchf70uxx9x block change tracking buffer space Other 2022-08-13 18:14:11 25
10 rows selected.
4、檢查large pool分配給CTWR dba buffer的空間
SQL>SELECT * FROM gv$sgastat WHERE pool='large pool';
INST_ID POOL NAME BYTES
---------- ------------------------------------ -------------------------------------------------- ----------------
1 large pool CTWR dba buffer 42254000
1 large pool free memory 20899782656
1 large pool krcc extent chunk 312516608
1 large pool ASM map operations hashta 393216
2 large pool ASM map operations hashta 393216
2 large pool krcc extent chunk 310439936
2 large pool free memory 20901859328
2 large pool CTWR dba buffer 42254000
5、調整BCT相關隱藏引數
為提高CTWR效能,可以調整bct相關的隱藏引數,調整前必須確保large pool size大小足夠支撐
SQL>alter system set "_bct_buffer_allocation_max"=1073741824 sid='*';
SQL>alter system set "_bct_public_dba_buffer_size"=262144000 sid='*';
SQL>alter system set "_bct_bitmaps_per_file"=256 sid='*';
-the end-
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-2910796/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 啟用oracle block change trackingOracleBloC
- oracle 10g 開啟BLOCK CHANGE TRACKINGOracle 10gBloC
- log buffer space wait event等待事件AI事件
- oracle 的 BLOCK CHANGE TRACKINGOracleBloC
- Oracle Block Change Tracking功能OracleBloC
- Oracle RMAN 增量備份優化方法(啟用 Block Change Tracking特性)Oracle優化BloC
- 啟用Block Change Tracking-10g新特性BloC
- 加快RMAN增量備份的速度(block change tracking特性)BloC
- ZT 啟用Block Change Tracking-10g新特性BloC
- oracle 10g中使用block change tracking加快增量備份Oracle 10gBloC
- Block Change Tracking (Oracle 塊修改跟蹤)BloCOracle
- Oracle10g新增BLOCK CHANGE TRACKING功能OracleBloC
- Oracle 塊修改跟蹤 (Block Change Tracking) 說明OracleBloC
- 【等待事件】Buffer Exterminate事件
- block change tracking檔案可以放在flash_recovery_area裡!BloC
- oracle 10g R2 Block change tracking 新特性Oracle 10gBloC
- 【等待事件】buffer busy waits事件AI
- Cache Buffer Chain Latch等待事件AI事件
- 10g中的塊修改跟蹤特性(Block Change Tracking)BloC
- cache buffer lru chain latch等待事件AI事件
- sqlserver Change Data Capture&Change TrackingSQLServerAPT
- gc current/cr block busy等待事件GCBloC事件
- 適用於rman增級備份之資料庫特性db block change tracking學習思路資料庫BloC
- buffer busy wait 等待事件說明AI事件
- 全網最清楚的:MySQL的insert buffer和change buffer 串講MySql
- Oracle OCP 1Z0 O53 Q78(RMAN block change tracking)OracleBloC
- buffer busy wait 等待事件說明(轉)AI事件
- buffer cache與相關的latch等待事件事件
- cell single block physical read等待事件BloC事件
- 【TUNE_ORACLE】等待事件之“buffer busy waits”Oracle事件AI
- Entity Framework Tutorial Basics(19):Change TrackingFramework
- mysql change buffer小結MySql
- Innodb特性之change buffer
- Oracle資料庫buffer busy wait等待事件 (2)Oracle資料庫AI事件
- Oracle資料庫buffer busy wait等待事件 (1)Oracle資料庫AI事件
- rman備份產生等待事件事件
- 記一次gc buffer busy等待事件的處理GC事件
- 等待事件_buffer_busy_waits_and_read_by_other_session(1)事件AISession