https://blog.dbi-services.com/awrrpt-and-spreport-in-multitenant/
https://wikidba.com/how-to-create-awr-for-pdb-level-on-12-2-step-by-steps/
http://blog.itpub.net/26964624/viewspace-2646979/
多租戶中的awrrpt和spreport
弗蘭克·帕喬(Franck Pachot)
。
昨天,我在Oracle Midlands上發表了“解釋AWR報告” Prezi。有一點我在這里解釋說,我總是檢查“已捕獲的SQL帳戶占數據庫總時間的…%”,以便知道是否在報告中獲取所有詳細信息。未能捕獲最重要的語句的兩個主要原因是:報告覆蓋的時間范圍太短,或者許多不可共享的SQL語句很快從庫緩存中淘汰了。兩種情況都是因為報告僅顯示保留在最終快照共享池中的語句。但是在多租戶中,還有另一個原因。
在進行詳細介紹之前,我想在此先說一下Oracle Midland是一次很棒的聚會。演講者應毫不猶豫地訪問:http : //oraclemidlands.com/present
AWR
在多租戶中,AWR在CDB級別收集統計信息。一些統計信息是實例范圍的,CON_ID = 0。其他一些與由CON_ID標識的可插拔數據庫有關。當我們從可插入數據庫中運行awrrpt.sql時,就會出現問題。
這是CDB級別的AWR報告的摘錄:
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 139-143
…
-> Total Buffer Gets: 24,958,807
-> Captured SQL account for 88.9% of Total
然后是來自兩個活動可插入數據庫的兩個數據庫:
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 139-143
…
-> Total Buffer Gets: 24,958,807
-> Captured SQL account for 21.6% of Total
和
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 139-143
…
-> Total Buffer Gets: 24,958,807
-> Captured SQL account for 60.3% of Total
在這里我們看到,即使報表在PDB級別運行,總的邏輯讀取(24,958,807個緩沖區)也來自實例統計信息。
但是報告中僅顯示帶有PDB CON_ID的SQL語句,這說明了某些PDB的百分比較低。那么就很難知道這些語句是未被捕獲(由於上述原因)還是未被報告。
因此,我認為我們始終需要在CDB級別上收集AWR報告。
Statspack
我已經將Statspack安裝在同一數據庫中,並且與AWR快照同時拍攝了快照。文檔(spdoc.txt)表示Statspack只能安裝在PDB級別,但是我也可以在CDB $ ROOT上安裝。以下是這些配件:
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 2-6
-> End Buffer Gets Threshold: 10000 Total Buffer Gets: 24,956,570
-> Captured SQL accounts for 10.5% of Total Buffer Gets
-> SQL reported below exceeded 1.0% of Total Buffer Gets
在CDB級別,總數是實例的總數(CON_ID = 0),但是語句僅是在CDB $ ROOT中運行的語句(CON_ID = 1)
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 1-5
-> End Buffer Gets Threshold: 10000 Total Buffer Gets: 5,709,168
-> Captured SQL accounts for 112.5% of Total Buffer Gets
-> SQL reported below exceeded 1.0% of Total Buffer Gets
該百分比高於100%,因為Statspack可以計算從PL / SQL調用的遞歸SQL的兩倍。
重要的是,必須根據PDB邏輯讀取來計算hre百分比:
這是總計24,956,570(與AWR報告相同)的22%。
SQL ordered by Gets DB/Inst: CDB/CDB Snaps: 1-5
-> End Buffer Gets Threshold: 10000 Total Buffer Gets: 17,138,586
-> Captured SQL accounts for 102.0% of Total Buffer Gets
-> SQL reported below exceeded 1.0% of Total Buffer Gets
這是總數24,956,570中的68%,與AWR報告相似。
在PDB級別,Statspack僅計算來自連接到PDB的會話的邏輯讀取。這與AWR行為有很大不同。在這里,我們可以將每個可插拔數據庫真正視為一個獨立的數據庫。
所以呢?
如果像我一樣,您想查看AWR或Statspack報告中的數字是否匹配,那么您可能會這樣做
- AWR在CDB級別上報告,因為它們收集實例統計信息
- Statspack報告在PDB級別,因為它們收集了容器統計信息
但是多租戶是新手,我還沒有與非CDB AWR或Statspack報告相同的經驗,所以請分享您的觀點。
通常,合並不會使調整更容易。在某些情況下,您將不得不查看PDB,然后是CDB,然后是OS,存儲,也許還需要查看虛擬機管理程序級別…
########CDB/PDB 加數據文件的方式 仍然一致
Oracle 12c 開始支持 PLUGGABLE DATABASE,並且提供了一個方法在CDB和PDB之間切換。
1. 使用 show pdbs 可以確認當前有哪些PDB?
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 TESTP1 MOUNTED
-
SQL>
上圖中 PDB$SEED 並不是一個 PDB 而是一個 PDB的模板,狀態始終是 READ ONLY。TESTP1 是一個PDB。
2. 切換到 TESTP1。
-
SQL> alter session set container=TESTP1;
-
-
Session altered.
-
-
SQL> show pdbs;
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
3 TESTP1 MOUNTED
-
SQL>
3. 切回到 CDB。
-
SQL> alter session set container=CDB$ROOT;
-
-
Session altered.
-
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 TESTP1 MOUNTED
-
SQL>
alter tablespace users add datafile '' size 2m;