中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何診斷RAC系統中的'gc cr multi block request'?

發布時間:2020-08-08 02:38:08 來源:ITPUB博客 閱讀:434 作者:q418441117 欄目:關系型數據庫
By: Jane Zhang | Senior Support Manager

     'gc cr multi block request' 是RAC數據庫上比較常見的一種等待事件,在RAC 上進行全表掃描(Full Table Scan)或者全索引掃描(Index Fast Full Scan)時,容易產生這樣的多塊讀等待。

     這種等待產生的主要原因:
1. 數據庫參數db_file_multiblock_read或者db_block_size設置太大,導致多塊讀時GC傳輸量太大;
2. OS上UDP相關的參數設置不夠大導致接收發送UDP的緩存區溢出;
3. 私網性能;
4. LMS設置問題(個數不足或者不是實時運行(real time))導致LMS的處理能力不夠,不能及時傳輸global cache data/message。

    這方面的Bug比較少,在11.2之前有一個BUG 8464597,當db_block_size = 32k時,引發大量"gc cr multi block request" 而且性能下降,這個Bug在11.2已經修復。
    很多情況下,降低DB_FILE_MULTIBLOCK_READ_COUNT 并且 加大OS UDP相關參數會將極大緩解'gc cr multi block request' 等待。

     最近處理了一個問題,從10.2升級到11.2.0.3后產生大量'gc cr multi block request' 等待,發現DB_FILE_MULTIBLOCK_READ_COUNT, UDP 參數等都沒有改變,只是升級后LMS的個數在不同實例間不同而且下降了很多,后來把LMS個數增加并且各個實例值保持一致后,問題得到解決。

                                                                Avg
                                                          wait   % DB
Event                                 Waits     Time(s)   (ms)   time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
gc cr multi block request           632,923      32,441     51   35.5 Cluster
DB CPU                                           13,518          14.8
gc cr grant 2-way                   327,717      10,900     33   11.9 Cluster
gc current grant 2-way              190,856       6,855     36    7.5 Cluster
gc current block 2-way              101,154       3,792     37    4.1 Cluster

如果發現AWR TOP5 等待中存在'gc cr multi block request' 而且它的Avg wait(ms)較高,那么請參考下面的診斷步驟:

第一步,查看db_file_multiblock_read_count和db_block_size參數設置。

SQL>show parameter db_block_size
SQL>show parameter db_file_multiblock_read_count

db_block_size一般為8192, db_file_multiblock_read_count一般為16. 

第二步,參看OS udp相關參數設置,udp 的參數在不同的OS上是不同的,這些參數會設置UDP的接收緩存區和發送緩存區的大小,一般來說接收緩存區要>=發送緩存區。 如果在生產庫修改這些參數,最好咨詢OS廠商了解注意事項。

AIX上:
#no –a
                udp_recvspace
                udp_sendspace

o 設置udp_sendspace >=[(DB_BLOCK_SIZE * DB_FILE_MULTIBLOCK_READ_COUNT) + 4096],但是不低于 65536. 
  比如,DB_BLOCK_SIZE=8192, DB_FILE_MULTIBLOCK_READ_COUNT=16,那么udp_sendspace>= (8192 * 16) + 4096=135168.注意這個值只是最低值,并不是Oracle要求必須設置這么大。
o 設置udp_recvspace 為 4到10倍 udp_sendpace
o 由于sb_max 必須 >= udp_recvspaceIf ,可能需要增加sb_max的值(默認為1048576)
o 如果udp的參數設置不合理,可能會產生“socket buffer overflows”,如果這個值非0, 需要增加udp_recvspace:
 netstat -s | grep "socket buffer overflows" 
o 參考資料:http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP100883
  Minimum Software Versions and Patches Required to Support Oracle Products on IBM Power Systems (Doc ID 282036.1)

Linux上:
#More /etc/sysctl.conf

net.core.rmem_default
net.core.rmem_max
net.core.wmem_default
net.core.wmem_max

官方文檔上要求的最低值:
http://docs.oracle.com/cd/E11882_01/install.112/e24321/pre_install.htm#BABDAEDB
Oracle Database Installation Guide
11g Release 2 (11.2) for Linux
E24321-07
rmem_default     262144     
rmem_max     4194304 
wmem_default     262144     
wmem_max     1048576

可以將這幾個值都設為4k:
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304

HP上:

請檢查UDP設置是否足夠大:
$ /bin/ndd -get /dev/sockets socket_udp_rcvbuf_default
$ /bin/ndd -get /dev/sockets socket_udp_sndbuf_default

確保socket_udp_rcvbuf_default至少是socket_udp_sndbuf_default的兩倍。

Sun:
可以用下面的命令查看UDP設置:
ndd /dev/udp udp_xmit_hiwat
ndd /dev/udp udp_recv_hiwat
ndd /dev/udp udp_max_buf

可以用下面的命令設置這兩個值為OS最大允許的:
ndd -set /dev/udp udp_xmit_hiwat
ndd -set /dev/udp udp_recv_hiwat
ndd -set /dev/udp udp_max_buf <1M or higher>

更多信息,可以參考MOS文檔:
Tuning Inter-Instance Performance in RAC and OPS (Doc ID 181489.1)

第三步,查看網絡情況。
比如用netstat -s 命令查看是否有bad data length, bad checksums, incomplete headers, socket buffer overflows等,注意這些值是累計的,需要查看它們在發生問題的時候是否有增加。
另外可以查看AWR中是否有 "Global Cache Blocks Lost" ,理想情況下這個值是0,如果有較大的block lost,說明網絡有問題(按照MOS 文檔563566.1進行網絡檢查)。
還可以請網管查看私網的性能情況。

第四步,檢查LMS。
1. 查看LMS的trace file,查看是否有異常。
2. 查看LMS進程的優先級是否是實時的(real time)的?

比如AIX:
# ps -elf|grep lms

ps -elf|grep lms
F      S      UID      PID     PPID   C PRI NI ADDR    SZ    WCHAN    STIME    TTY  TIME CMD 
240103 A   oracle  4719002        1   5  39 -- 8ae40b590 248856            Jul 28      - 570:45 ora_lms0_rac1

priority 越小說明優先級越高,PRI小于40說明是Real Time的:
http://aix4admins.blogspot.co.uk/2011/08/commands-and-processes-process-you-use.html

3. 查看LMS的個數:
SQL>show parameter GCS_SERVER_PROCESSES
這個值決定了LMS的個數

這個值依賴于CPU的個數(cpu_count),根據11.2官方文檔:
http://docs.oracle.com/cd/E11882_01/server.112/e25513/initparams094.htm#REFRN10259
Default value
If 1 - 3 CPUS, then 1
If 4 - 15 CPUs, then 2
If 16 or more CPUs, then 2 + (CPUs / 32). If the result includes a fraction, then the fraction is disregarded. For example, if you had 20 CPUs, then 2 + (20 / 32) would equal 2 GCS processes.
If CLUSTER_DATABASE is set to false, then 0
If ASM, then 1

在AIX上,有的時候CPU可能是動態增加的,那么一定要注意檢查LMS進程的個數是否隨之調整了。

有關這個問題的討論,可以在中文社區帖子中進行 如何診斷RAC系統中的'gc cr multi block request'?

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

谢通门县| 沁水县| 黄石市| 中阳县| 青冈县| 邵阳市| 揭阳市| 康乐县| 辽宁省| 三江| 堆龙德庆县| 云安县| 佛山市| 平定县| 萨迦县| 宁夏| 木里| 仙桃市| 高尔夫| 集安市| 芮城县| 扶沟县| 楚雄市| 靖州| 同德县| 黄浦区| 全椒县| 宁陵县| 湘乡市| 芜湖市| 新巴尔虎右旗| 师宗县| 金川县| 安龙县| 武胜县| 寿宁县| 桦甸市| 桑植县| 彝良县| 垫江县| 芮城县|