亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ORA-30926:無法在源表中獲得穩定的行集

ORA-30926:無法在源表中獲得穩定的行集

慕容3067478 2019-08-02 16:33:23
ORA-30926:無法在源表中獲得穩定的行集我正進入(狀態ORA-30926:無法在源表中獲得穩定的行集在以下查詢中:  MERGE INTO table_1 a      USING       (SELECT a.ROWID row_id, 'Y'              FROM table_1 a ,table_2 b ,table_3 c              WHERE a.mbr = c.mbr              AND b.head = c.head              AND b.type_of_action <> '6') src              ON ( a.ROWID = src.row_id )  WHEN MATCHED THEN UPDATE SET in_correct = 'Y';我運行table_1它有數據,我也運行內部查詢(src)也有數據。為什么會出現此錯誤以及如何解決?
查看完整描述

3 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊


這通常是由USING子句中指定的查詢中的重復引起的。這可能意味著TABLE_A是父表,并且多次返回相同的ROWID。


您可以通過在查詢中使用DISTINCT來快速解決問題(事實上,如果'Y'是常量值,您甚至不需要將它放在查詢中)。


假設您的查詢正確(不知道您的表),您可以執行以下操作:


  MERGE INTO table_1 a

      USING 

      (SELECT distinct ta.ROWID row_id

              FROM table_1 a ,table_2 b ,table_3 c

              WHERE a.mbr = c.mbr

              AND b.head = c.head

              AND b.type_of_action <> '6') src

              ON ( a.ROWID = src.row_id )

  WHEN MATCHED THEN UPDATE SET in_correct = 'Y';


查看完整回答
反對 回復 2019-08-02
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

您可能嘗試多次更新目標表的同一行。我剛剛在我開發的合并語句中遇到了同樣的問題。確保您的更新在執行合并時不會多次觸摸相同的記錄。


查看完整回答
反對 回復 2019-08-02
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

如何排除ORA-30926錯誤?(文件號471956.1)

1)識別失敗的陳述

alter session set events'30926 trace name errorstack level 3';

要么

alter system set events'30926 trace name errorstack off';

并在UDUMP發生時監視.trc文件。

2)找到SQL語句后,檢查它是否正確(可能使用說明計劃或tkprof檢查查詢執行計劃)并分析或計算相關表的統計信息(如果最近沒有這樣做)。重建(或刪除/重新創建)索引也可能有所幫助。

3.1)SQL語句是MERGE嗎?評估USING子句返回的數據,以確保連接中沒有重復值。修改merge語句以包含確定性where子句

3.2)這是一個通過視圖的UPDATE語句嗎?如果是這樣,請嘗試將視圖結果填充到表中并嘗試直接更新表。

3.3)桌子上是否有觸發器?嘗試禁用它以查看它是否仍然失敗。

3.4)語句是否包含'IN-Subquery'中的不可合并視圖?如果查詢具有“FOR UPDATE”子句,則可能導致返回重復的行。見Bug 2681037

3.5)表中是否有未使用的列?刪除這些可能會防止錯誤。

4)如果修改SQL無法解決錯誤,則問題可能出在表中,特別是如果存在鏈接行。4.1)對SQL中使用的所有表運行'ANALYZE TABLE VALIDATE STRUCTURE CASCADE'語句,以查看表或其索引中是否存在任何損壞。4.2)檢查并消除表中的任何CHAINED或遷移的ROWS。有一些方法可以最大限度地減少這種情況,例如正確設置PCTFREE。使用說明122020.1 - 行鏈接和遷移4.3)如果表另外是索引組織,請參閱:注釋102932.1 - 監視IOT上的鏈接行


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 3149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號