Oracle12c R2注意事項: 大量crsctl.bin程序cpu使用率高,等待crs call completion
前不久遇到的一個問題,一套12.2的RAC環境, CPU使用率高,使用top可以看到有大量crsctl.bin程序導致, sys cpu佔用了大部分, 如果從資料庫內檢視等待會伴隨著wait event “crs call completion”, 有時還會級聯堵塞出現wait event “library cache lock”。crs call completion是當db instance layer 通知CRS daemon process 。
在11G時有時會因為 bug 10019726 ,bug 12615394 , bug 12767563 出現這樣的情況, 但是在11.2.0.3 已修復, 但好像有12.1也遇到這種情況的案例。
對於12C r2 給這個問題可以嘗試配置hidden parameter “_notify_crs”=false, 調過crs通知等待,理論該調整不會給資料庫效能問題帶來影響。但是調整這個引數還是有一定的影響需要了解,下面整理一下”_notify_crs” 引數相關注意事項。
_notify_crs 解決的問題
除了上面描述的問題,還有一些情況的解決方案也是調整該引數
1, The issue is caused by internal, unpublished Bug 13483672 “ORA-7445 [strlen()+16] creating database dependencies for large number of disk groups” which causes a buffer overflow if the diskgroup dependencies of the database resource exceed a certain size.
The Bug 13483672 has been fixed in 11.2.0.3 PSU 3 and windows 11.2.0.3.7 patch bundle. Interim patch has also been provided for 11.2.0.2 on certain platforms.
solution:
set “_notify_crs”=FALSE in pfile or spfile, then restart the database
2,Grid Infrastructure home and rdbms home is running on 11.2.0.3.7. Database instance fail to start, with ORA-7445 [strstr()]
The failing process is gen0, and the current Wait Stack shows waiting for ‘CRS call completion’, The bug fix is included in 12.2.0.2, request/apply the patch if there’s an impact.
The workaround for successful startup of instance is by setting hidden parameter “_notify_crs”=false, which will prevent the database instance from notifying the CRS daemon process.
BUG 22999793 – ORA-07445 [__STRSTR_SSE42()+10] – SIMILAR TO BUG 17230892 THAT CT IS HITTING
3,The instance fails to start with the following error on GEN0 process,ORA-07445: exception encountered: core dump [PC:0xFE04] [SIGSEGV] [ADDR:0x0] [PC:0xFE04] [Invalid permissions for mapped object] []
The instance is terminated then fails to start with GEN0 process returns PC:0xFE04 [ADDR:0x0] on DB Instance. (文件 ID 2184308.1)
調整 _notify_crs 引數帶來的影響
1, Setting _notify_crs to false prevents the ASM instance from notifying the CRS daemon process when diskgroups are being mounted.The diskgroup creates successfully in ASM however it doesn’t reflect in the OCR (crsctl stat res -t). 2, When hidden parameter “_notify_crs” is set to FALSE, database does not use password file whose location is specified within database resource registered to CRS. As a result, connecting as sysdba fails with ORA-1017 When “_notify_crs” is set to FALSE, database does not use password file specified by database resource, but use default location, Create or copy password file at default location, $ORACLE_HOME/dbs/orapw<ORACLE_SID>
小結
當解決一下問題時,如調整隱藏引數,同時需要確認一下調整該引數帶來的影響,如開始提到的12.2 中的問題,調整_nodify_crs=false可以臨時解決該問題,還有上面提到的幾個BUG也是修改引數可以解決,但是修改此引數會導致填加新ASM磁碟組後不會自動註冊到CRS資源中。同時crs中註冊的例項密碼檔案將不會再使用,而是使用預設的路徑,可能影響sysdba登入。