ORA-01732: 此视图的数据操纵操作非法 解决方案 oracle10g
2015-12-17 21:30
1411 查看
ORA-01732: 此视图的数据操纵操作非法 解决方案,ORA-01732:
data manipulation operation not legal on this view
Oracle
10g的隐含参数_complex_view_merging引发的性能问题
网上搜了下,有多种原因和解决方法,最终我选择先尝试一下修改系统隐含参数:
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;
其他参考资料:
带union all的视图不是可更新的视图。
可更新视图:
1)没有使用连接函数、集合运算函数和组函数
2)创建视图的select语句中没有聚合函数且没有GROUP BY,ONNECT BY,START WITH子句以及DISTINCT关键字
3)select语句中不包含从基表红通过计算得到的列
4)创建视图没包含只读属性
Oracle Database 10.2.0.4 bug-_complex_view_merging
http://blog.sina.com.cn/s/blog_4d22b9720100kdqk.html
oracle参数包括隐式参数 2012-08-12
10:51:58
分类: Linux
SQL> select x.ksppinm name, y.ksppstvl value, x.ksppdesc describ
2 from sys.x$ksppi x,sys.x$ksppcv y
3 where x.indx = y.indx;
data manipulation operation not legal on this view
Oracle
10g的隐含参数_complex_view_merging引发的性能问题
网上搜了下,有多种原因和解决方法,最终我选择先尝试一下修改系统隐含参数:
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;
其他参考资料:
带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)(但是有例外情况) |
http://blog.sina.com.cn/s/blog_4d22b9720100kdqk.html
oracle参数包括隐式参数 2012-08-12
10:51:58
分类: Linux
SQL> select x.ksppinm name, y.ksppstvl value, x.ksppdesc describ
2 from sys.x$ksppi x,sys.x$ksppcv y
3 where x.indx = y.indx;
相关文章推荐
- Oracle 序列
- oracle 11g-R2安装
- oracle 11g-R2安装
- 存储过程的优缺点
- oracle 创建表空间,用户并授权
- Kettle连接Oracle 12c
- Oracle中的if...then...elsif
- ORA-12547: TNS:lost contact 解决方法
- oracle数据库表用序列实现主键自增张
- Oracle中的IF...THEN...ELSE判断
- oracle序列详解和创建自增主键
- Oracle常用查看表结构命令
- oracle 窗口函数 (keep)
- oracle中实现截取字符串(substr)、查找字符串位置(instr)、替换字符串(replace)
- kill oracle jobs
- Oracle的数据表中行转列与列转行的操作实例讲解
- 解决Oracle创建视图(VIEW)权限不足的方法
- 关于Oracle中in和exists的区别
- Oracle授权 同义词
- oracle 常用表操作