ORA-01732: 此視圖的數據操縱操做非法 解決方案 oracle10g

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

相關文章
相關標籤/搜索