ORA-01732: 此視圖的數據操縱操做非法 解決方案 oracle10g
ORA-01732: 此視圖的數據操縱操做非法 解決方案,ORA-01732: data manipulation operation not legal on this viewhtml
Oracle 10g的隱含參數_complex_view_merging引起的性能問題sql
網上搜了下,有多種緣由和解決方法,最終我選擇先嚐試一下修改系統隱含參數:express
SQL> alter system set "_COMPLEX_VIEW_MERGING"=true;
系統已更改。
SQL> alter system set "_SIMPLE_VIEW_MERGING"=true;
系統已更改。
再次執行sql,OK!沒有再報錯了
因而將_complex_view_merging全局設置爲true, alter system set "_complex_view_merging" = true scope=both;
其餘參考資料:oracle
帶union all的視圖不是可更新的視圖。
可更新視圖:
1)沒有使用鏈接函數、集合運算函數和組函數
2)建立視圖的select語句中沒有聚合函數且沒有GROUP BY,ONNECT BY,START WITH子句以及DISTINCT關鍵字
3)select語句中不包含從基表紅經過計算獲得的列
4)建立視圖沒包含只讀屬性函數
有限制的,詳細參考concepts 而可更新的鏈接視圖(updatable join view )是指可以執行 UPDATE, INSERT,和 DELETE 操做的鏈接視圖(join view)。 ALL_UPDATABLE_COLUMNS,DBA_UPDATABLE_COLUMNS,及 USER_UPDATABLE_COLUMNS 數據字典視圖(data dictionary view)中的信 息描述了視圖中那些列是可更新的。爲了保證視圖是可更新的,其定義中不 能包含如下語法結構(construct): ● 集合操做符(set operator) ● DISTINCT 操做符 ● 聚合函數(aggregate function)或分析型函數(analytic function) ● GROUP BY,ORDER BY,CONNECT BY,或 START WITH 字句 ● 在 SELECT 以後的列表中使用collection expression ● 在 SELECT 以後的列表中使用子查詢(subquery) ● 鏈接(join)(可是有例外狀況) |
Oracle Database 10.2.0.4 bug-_complex_view_merging 性能
http://blog.sina.com.cn/s/blog_4d22b9720100kdqk.htmlthis