<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tbwshc

    RAC全局死鎖檢測時間

    對于單實例數據庫而言,死鎖的檢測在秒級完成,而RAC環境則死鎖的檢測時間默認達到了1分鐘。

     

     

    對于單實例環境如果出現了死鎖,那么馬上其中一個進程就被中止,用戶可以快速的得到錯誤返回。而對于RAC而言,死鎖的檢測并不是實時完成,而是需要60秒左右的時間。

    會話1執行:

    SQL> create table t_deadlock (id number primary key, name varchar2(30));

    Table created.

    Elapsed: 00:00:00.12
    SQL> insert into t_deadlock values (1, 'a');

    1 row created.

    Elapsed: 00:00:00.00
    SQL> insert into t_deadlock values (2, 'b');

    1 row created.

    Elapsed: 00:00:00.00
    SQL> commit;

    Commit complete.

    Elapsed: 00:00:00.00
    SQL> update t_deadlock set name = 'a1' where id = 1;

    1 row updated.

    Elapsed: 00:00:00.00

    會話2執行:

    SQL> set timing on
    SQL> update t_deadlock set name = 'b2' where id = 2;

    1 row updated.

    Elapsed: 00:00:00.00
    SQL> update t_deadlock set name = 'a2' where id = 1;

    此時,會話2等待會話1的最終操作,下面會話1更新被會話2鎖定的行,引發死鎖:

    SQL> update t_deadlock set name = 'b1' where id = 2;
    update t_deadlock set name = 'b1' where id = 2
    *
    ERROR at line 1:
    ORA-00060: deadlock detected while waiting for resource


    Elapsed: 00:01:00.12

    可以看到,死鎖的超時檢測為1分鐘。

    而這個死鎖的檢測時間是可以調整的,Oracle通過隱含參數_lm_dd_interval控制:

    SQL> conn / as sysdba
    Connected.
    SQL> alter system set "_lm_dd_interval" = 30 scope = spfile;

    System altered.

    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.

    Total System Global Area 281018368 bytes
    Fixed Size 2095672 bytes
    Variable Size 104859080 bytes
    Database Buffers 167772160 tb bytes
    Redo Buffers 6291456 bytes
    Database mounted.
    Database opened.

    再次測試死鎖的檢測時間,會話1:

    SQL> update t_deadlock set name = 'a1' where id = 1;

    1 row updated.

    SQL> set timing on

    會話2執行更新:

    SQL> set timing on
    SQL> update t_deadlock set name = 'b2' where id = 2;

    1 row updated.

    Elapsed: 00:00:00.02
    SQL> update t_deadlock set name = 'a2' where id = 1;

    會話1執行更新引發死鎖:

    SQL> update t_deadlock set name = 'b1' where id = 2;

    大約30秒后,會話2報錯ORA-60:

    update t_deadlock set name = 'a2' where id = 1
    *
    ERROR at line 1:
    ORA-00060: deadlock detected while waiting for resource


    Elapsed: 00:00:30.27

    在10.2.0.2版本上,Oracle存在一個bug,允許這個參數設置為0,在10.2.0.3以后,這個bug被修正,如果設置為0后,則數據庫無法正常啟動:

    [oracle@node1 ~]$ sqlplus / as sysdba

    SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jun 4 07:54:09 2012

    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

    Connected to an idle instance.

    SQL> startup
    ORA-00067: invalid value 0 for parameter _lm_dd_interval; must be at least 1

    最后修改隱含參數是Oracle不推薦的,而且修改這個參數勢必會影響RAC的正常工作方式導致LDM進程的繁忙度增加,而且可能影響RAC環境的穩定性和可用性。

    如果確實對于前臺的死鎖檢查時間要求較高,建議在測試環境中詳細測試后再部署到產品環境中。

     


    posted on 2012-09-04 17:08 chen11-1 閱讀(891) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 亚洲AV永久精品爱情岛论坛| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲欧洲自拍拍偷午夜色无码| 偷自拍亚洲视频在线观看99| 日本免费人成黄页在线观看视频 | 黄网站色成年片大免费高清| 啦啦啦www免费视频| 亚洲人成色77777在线观看| 在线观看成人免费| 亚洲国产精品无码观看久久| 在线观看亚洲免费| 思思久久99热免费精品6| 美腿丝袜亚洲综合| 免费看无码特级毛片| 精品亚洲成a人片在线观看少妇| 97精品免费视频| 国产成人精品日本亚洲网址| 啦啦啦www免费视频| 香港特级三A毛片免费观看| 中文亚洲成a人片在线观看| 三上悠亚在线观看免费| 久久亚洲精品人成综合网| 100000免费啪啪18免进| 国产精品亚洲AV三区| 亚洲午夜AV无码专区在线播放 | 亚洲AV永久无码精品成人| 国产成人精品免费视频大全麻豆| 亚洲国产系列一区二区三区| 又黄又爽一线毛片免费观看| 亚洲五月午夜免费在线视频| 亚洲综合自拍成人| 日本成人免费在线| 成人免费无码H在线观看不卡| 久久精品国产亚洲AV电影| 免费精品人在线二线三线区别| 国产成人亚洲午夜电影| 亚洲午夜国产精品无码老牛影视| 啦啦啦完整版免费视频在线观看| 美国毛片亚洲社区在线观看| 亚洲成AV人片在线观看ww| 成年轻人网站色免费看|