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

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

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

    隨筆 - 79  文章 - 11  trackbacks - 0
    <2009年5月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    不再墮落。
    Oracle documents: 
    http://tahiti.oracle.com/

    常用鏈接

    留言簿

    隨筆分類(66)

    隨筆檔案(79)

    相冊

    收藏夾(11)

    搜索

    •  

    積分與排名

    • 積分 - 53320
    • 排名 - 949

    最新隨筆

    最新評論

    閱讀排行榜

    insert阻塞不常見,對于帶主鍵的表,如果表上有唯一約束,有兩個會話試圖插入相同主鍵值的一條記錄,則其中一個會話會發生阻塞,直到另一個會話提交或回滾。
    mld@ORCL> create table demo ( x int primary key );

    表已創建。

    mld
    @ORCL> insert into demo values ( 1 );

    已創建 
    1 行。

    ----- session2
    mld
    @ORCL> insert into demo values ( 1 );

    --waiting。。。。。。。。

    解決:
        a,使主鍵保證唯一,可采用UUID,SEQUENCE等方式;
        b,使用DBMS_LOCK.REQUEST根據主鍵ID的hash值分配一個排它鎖,一次只有一個會話能請求成功,見代碼:
      
    mld@ORCL> conn sys/mld as sysdba
    已連接。
    sys
    @ORCL> grant execute on dbms_lock to mld;

    授權成功。
    mld
    @ORCL> create or replace trigger demo_bifer
      
    2  before insert on demo
      
    3  for each row
      
    4  declare
      
    5      l_lock_id   number;
      
    6      resource_busy   exception;
      
    7      pragma exception_init( resource_busy, -54 );
      
    8  begin
      
    9      l_lock_id :=
     
    10         dbms_utility.get_hash_value( to_char( :new.x ), 01024 );
     
    11      if ( dbms_lock.request
     
    12               (  id                => l_lock_id,
     
    13                  lockmode          => dbms_lock.x_mode,
     
    14                  timeout           => 0,
     
    15                  release_on_commit => TRUE ) <> 0 )
     
    16      then
     
    17          raise resource_busy;
     
    18      end if;
     
    19  end;
     
    20  /

    觸發器已創建

    mld
    @ORCL> show error;
    沒有錯誤。
    mld
    @ORCL> insert into demo values ( 1 );

    已創建 
    1 行。

    --session 
    2
    mld
    @ORCL> insert into demo values ( 1 );
    insert into demo values ( 1 )
    *
    第 
    1 行出現錯誤:
    ORA
    -00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源
    ORA
    -06512: 在 "MLD.DEMO_BIFER", line 14
    ORA
    -04088: 觸發器 'MLD.DEMO_BIFER' 執行過程中出錯


    mld
    @ORCL>

    posted on 2009-05-06 22:45 donnie 閱讀(616) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 亚洲国产成人精品91久久久| 女人张开腿等男人桶免费视频| 免费a级毛片大学生免费观看 | 亚洲午夜爱爱香蕉片| 国产产在线精品亚洲AAVV| 日韩a级无码免费视频| 久久精品国产亚洲5555| 好吊色永久免费视频大全| 久久WWW免费人成人片| 亚洲AV永久纯肉无码精品动漫| 手机看片国产免费永久| 亚洲gv白嫩小受在线观看| 18观看免费永久视频| 中文日韩亚洲欧美制服| 国产99视频精品免费专区| 亚洲视频在线一区| 亚色九九九全国免费视频| 亚洲人成黄网在线观看| 永久黄网站色视频免费直播| jizz免费在线观看| 亚洲av无码乱码国产精品| 成年人视频免费在线观看| 亚洲国产精品久久| 69成人免费视频| 色妞www精品视频免费看| 亚洲人成亚洲人成在线观看 | 国产成人精品日本亚洲直接| 毛色毛片免费观看| 产传媒61国产免费| 亚洲人成网www| 国产高清在线精品免费软件| 久久毛片免费看一区二区三区| 久久亚洲国产精品成人AV秋霞| 99在线视频免费观看| 亚洲系列国产精品制服丝袜第| 免费国产在线视频| 亚洲一区二区三区高清在线观看| 亚洲午夜日韩高清一区| 亚洲一区二区三区免费观看| 免费国产在线精品一区| 精品亚洲aⅴ在线观看|