久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

systemstate dump是什么意思

176次閱讀
沒有評論

共計 2868 個字符,預計需要花費 8 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關 systemstate dump 是什么意思,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

  當數據庫出現嚴重的性能問題或者 hang 了的時候,我們非常需要通過 systemstate dump 來知道進程在做什么,在等待什么,誰是資源的持有者,誰阻塞了別人。在出現上述問題時,及時收集 systemstate dump 非常有助于問題原因的分析。

  在一些情況下,數據庫會自動生成 systemstate dump, 比如出現了“WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK”。
  systemstate dump 大部分時候需要手工生成,具體的命令為:

如果連接很多,比如幾千個連接,那么生成 dump 可能需要幾十分鐘,而且會占用幾百 M 磁盤空間)
1. 用 sysdba 登錄到數據庫上:
$sqlplus / as sysdba
或者
$sqlplus -prelim / as sysdba == 當數據庫已經很慢或者 hang 到無法連接

SQL oradebug setmypid
SQL oradebug unlimit;
SQL oradebug dump systemstate 266;
等 1~2 分鐘
SQL oradebug dump systemstate 266;
等 1~2 分鐘
SQL oradebug dump systemstate 266;
SQL oradebug tracefile_name;== 這是生成的文件名

2. 通常除了 systemstate dump,最好同時生成 hang analyze 來直觀地了解數據庫進程間的等待關系。

$sqlplus / as sysdba
或者
$sqlplus -prelim / as sysdba == 當數據庫已經很慢或者 hang 到無法連接

SQL oradebug setmypid
SQL oradebug unlimit;
SQL oradebug dump hanganalyze 3
等 1~2 分鐘
SQL oradebug dump hanganalyze 3
等 1~2 分鐘
SQL oradebug dump hanganalyze 3
SQL oradebug tracefile_name;== 這是生成的文件名

對于 RAC 數據庫,需要各個實例在同一時間的 systemstate dump, 那么登錄到任意一個實例(無需在所有實例執行):

$sqlplus / as sysdba
或者
$sqlplus -prelim / as sysdba == 當數據庫已經很慢或者 hang 到無法連接

SQL oradebug setmypid
SQL oradebug unlimit
SQL oradebug -g all dump systemstate 266  ==-g all 表示針對所有實例生成 dump
等 1~2 分鐘
SQL oradebug -g all dump systemstate 266
等 1~2 分鐘
SQL oradebug -g all dump systemstate 266

在 RAC 上生成 hang analyze:
SQL oradebug setmypid
SQL oradebug unlimit
SQL oradebug -g all hanganalyze 3
等 1~2 分鐘
SQL oradebug -g all hanganalyze 3
等 1~2 分鐘
SQL oradebug -g all hanganalyze 3

上面的命令執行后會在每個實例都生成 systemstate dump,生成的信息放到了每個實例的 backgroud_dump_dest 下的 diag trace 文件中。

上面的這些命令執行三次是為了比較進程的變化情況,查看是真的 hang 了,還是很慢。

systemstate dump 有多個級別:

2:  dump (不包括 lock element)
10:  dump
11:  dump + global cache of RAC
256: short stack(函數堆棧)
258: 256+2  — short stack +dump(不包括 lock element)
266: 256+10 — short stack+ dump
267: 256+11 — short stack+ dump + global cache of RAC

level 11 和 267 會 dump global cache, 會生成較大的 trace 文件,一般情況下不推薦。

一般情況下,如果進程不是太多,推薦用 266,因為這樣可以 dump 出來進程的函數堆棧,可以用來分析進程在執行什么操作。
但是生成 short stack 比較耗時,如果進程非常多,比如 2000 個進程,那么可能耗時 30 分鐘以上。這種情況下,可以生成 level 10  或者 level 258,level 258 比 level 10 會多收集 short short stack, 但比 level 10 少收集一些 lock element data.

另外對于 RAC 系統,請關注 Bug 11800959 – A SYSTEMSTATE dump with level = 10 in RAC dumps huge BUSY GLOBAL CACHE ELEMENTS – can hang/crash instances (Doc ID 11800959.8)。這個 Bug 在 11.2.0.3 上被修復,對于 =11.2.0.2 的 RAC,當系統中的 lock element 很多的時候,如果執行 level 10、266 或者 267 的 systemstate dump 時,可能會導致數據庫 hang 或者 crash,這種情況下可以采用 level 258。

下面是生成 systemstate dump 的測試,用來查看每個 level 占用的空間:

這個例子中有 37 個進程:

-rw-r—– 1 oracle oinstall  72721 Aug 31 21:50 rac10g2_ora_31092.trc== 256 (short stack, 每個進程 2K)

-rw-r—– 1 oracle oinstall  2724863 Aug 31 21:52 rac10g2_ora_31654.trc== 10  (dump,每個進程 72K)
-rw-r—– 1 oracle oinstall  2731935 Aug 31 21:53 rac10g2_ora_32214.trc== 266 (dump + short stack,每個進程 72K)

RAC:
-rw-r—– 1 oracle oinstall 55873057 Aug 31 21:49 rac10g2_ora_30658.trc == 11  (dump+global cache,每個進程 1.4M)
-rw-r—– 1 oracle oinstall 55879249 Aug 31 21:48 rac10g2_ora_28615.trc == 267 (dump+global cache+short stack,每個進程 1.4M)

所以,可以看出如果 dump global cache(level 11 和 267,那么占用的空間比其他級別大很多)。

上述就是丸趣 TV 小編為大家分享的 systemstate dump 是什么意思了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計2868字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 红原县| 林芝县| 安丘市| 金山区| 桐柏县| 青阳县| 汉沽区| 廊坊市| 静海县| 离岛区| 东光县| 桂东县| 新建县| 右玉县| 商水县| 阿尔山市| 天津市| 嘉鱼县| 松原市| 桐梓县| 威海市| 荥经县| 调兵山市| 芦山县| 涪陵区| 扎兰屯市| 双辽市| 尉氏县| 长顺县| 丽江市| 宕昌县| 延川县| 翼城县| 娱乐| 航空| 遂溪县| 兰西县| 忻州市| 资中县| 苍山县| 平山县|