Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

26

积分

0

好友

3

主题
1#
发表于 2011-10-31 17:20:50 | 查看: 13016| 回复: 8
跟踪某个session 产生的trace文件中出现此提示:
select ORG_ID , ORG_NAME , ORG_TYPE , ORGS."ROWID"  from ORGS where   Org_id=:1
WAIT #3: nam='
Error encountered: ORA-01446
同时WAIT EVENT 中出现SQL*Net break/reset to client 事件,在应用中并没有报错,应用发出的SQL语句中也没有ROWID列,请问是为何会在查询中自动添加rowid。

数据库版本: 10.2.0.4 ,以上ORGS是创建的视图。
2#
发表于 2011-10-31 18:25:20
出现 ORA-01446 和这里的ROWID因该没有关系
  1. [root@vrh2 ~]# oerr ora 1466
  2. 01466, 00000, "unable to read data - table definition has changed"
  3. // *Cause: Query parsed after tbl (or index) change, and executed
  4. //         w/old snapshot
  5. // *Action: commit (or rollback) transaction, and re-execute
复制代码
Oracle在解析SQL的时候可能会 "补全" select 选择的列
  1. 如SQL语句是:

  2. select * from maclean;

  3. 解析时可能变成:

  4. select t1,t2,t3 from maclean;
复制代码

回复 只看该作者 道具 举报

3#
发表于 2011-10-31 20:27:00
会不会是视图的定义中含有rowid。

回复 只看该作者 道具 举报

4#
发表于 2011-11-3 14:16:35
$oerr ora 1446
01446, 00000, "cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc."
// *Cause:
// *Action:

这里的ORGS视图 只是列举了个例子,TRACE中在所有的表和甚至于查询DUAL表时也加了rowid。还发现一个比较奇怪的问题,ORACLE 在第一次解析SQL时如果碰到ORA-1446错误后会再进行一次解析,不过这次解析时没有ROWID了。

回复 只看该作者 道具 举报

5#
发表于 2011-11-3 14:38:40
附trace文件

logistics_ora_27864.zip

141.65 KB, 下载次数: 785

回复 只看该作者 道具 举报

6#
发表于 2011-11-3 15:34:05
就 10046 事件的trace 来看 Oracle 服务进程 接受到的确实是 "select ORG_ID , ORG_NAME , ORG_TYPE , ORGS."ROWID"  from ORGS where   Org_id=:1" 这样的语句

看了下 你的 链接的module 是 w3wp.exe  因该是 .net +IIS 的架构吗?

建议 从应用端着手 诊断该问题 , 可能是SQL 拼接造成的

回复 只看该作者 道具 举报

7#
发表于 2011-11-3 16:17:32
是IIS架构,我从应用程序端特意看了一下源代码,(软件是我们开发部门开发的),程序并没有发出拼接的SQL. 倒是有点怀疑ADO数据库连接驱动的问题。

回复 只看该作者 道具 举报

8#
发表于 2011-11-3 20:10:05
参考一下这个,虽然我看不懂什么是EO:
Just FYI, besides adding to the view object, another option iis to add ROWID as SQL expression column the EO so all its view will have access to the ROWID attribute if needed.

源自:https://cn.forums.oracle.com/forums/thread.jspa?threadID=2214006

回复 只看该作者 道具 举报

9#
发表于 2013-4-28 11:25:40
我也遇到这个问题了   在9I里没事  迁到11G就出现这个问题了  VIEW里没有ROWID   如果去规避程序自动加ROWID呢?

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-15 16:32 , Processed in 0.055538 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569