ITPub博客

首页 > 数据库 > Oracle > 反思一个问题(在应用系统上修改表)

反思一个问题(在应用系统上修改表)

原创 Oracle 作者:itpremier 时间:2007-08-13 16:19:56 0 删除 编辑

应用系统中,由于业务需要,修改了原来的表TABWARE,并改名为TABWARE2,
同时建立一个视图TABWARE,所以应用程序没有改。用了一天以后,
ORACLE 内核报错:
--- pieces excerpt from alert_SID.LOG .
Mon Aug 13 14:04:18 2007
Errors in file d:oracleadminhqerpudumphqerp_ora_3620.trc:
ORA-00600: 内部错误代码, 参数: [kksfbc-reparse-infinite-loop],

[0x38AEC0E0], [], [], [], [], [], []

[@more@]

反思一个问题(在应用系统上修改表)
应用系统中,由于业务需要,修改了原来的表TABWARE,并改名为TABWARE2,
同时建立一个视图TABWARE,所以应用程序没有改。用了一天以后,
ORACLE 内核报错:
--- pieces excerpt from alert_SID.LOG .
Mon Aug 13 14:04:18 2007
Errors in file d:oracleadminhqerpudumphqerp_ora_3620.trc:
ORA-00600: 内部错误代码, 参数: [kksfbc-reparse-infinite-loop],

[0x38AEC0E0], [], [], [], [], [], []

Mon Aug 13 14:34:01 2007
Errors in file d:oracleadminhqerpudumphqerp_ora_2384.trc:
ORA-00600: internal error code, arguments: [kksfbc-reparse-infinite-loop],

[0x38D3817C], [], [], [], [], [], []

---PARAGRAPH EXCERPT FROM UDUMP/SID_ORA_3032.TRC
Reparse from kzp.c-1106
Compilation environment difference Failed sharing : 0
Change in cursor environment
SQL pgadep:0 pgapls:0 user
Compilation environment difference Failed sharing : 0
Change in cursor environment
SQL pgadep:0 pgapls:0 user
Compilation environment difference Failed sharing : 0
Change in cursor environment
SQL pgadep:0 pgapls:0 user
Compilation environment difference Failed sharing : 0
Change in cursor environment
SQL pgadep:0 pgapls:0 user

系统前台的情况是刚连上的SESSION,只要选择表TABWARE,就会出错,且过了一会儿

就自动断开连接。
我刚开始时也没有看后台的ALTER_log 和 user trace file,误认为LISTEN出错,就重

启了TNS LISTEN。
结果,并没有解决问题。所以才想起来要看一下后台转储文件。
这一看,心中就大概明白怎么回事了,于是开始刷新SHARED_POOL.
ALTER SYSTEM FLUSH SHARED_POOL ;
然后再回到前后执行相同的操作,系统终于恢复正常了。MY GOD,窃喜一下。
最后做个总结吧,对今后相类似的修改应用系统表,并建立视图取代的方法作个参考

。
1,修改原表,增加字段 PROPS, 作为条件判断用。
2,重命名表名。
3,建立视图,名字与原表名相同(应用将视图当作表操作不会有太大影响的)
4,如果有其它SCHEMA 建立了对原表的同义词,由于SYNONYM不会自动更新,所以需要

考虑是否重建。

重点提示:
1,ORACLE很智能的,会自动更新引用,如TRIGGER,TABLE PRIVILEGE
但是同义词SYNONYM不会更新。
如:更新表TABWARE为TABWARE2,那么TRIGGER 自动重编译并REFERENCE TABWARE2
GRANT ALL ON TABWARE 自动更新为 GRANT ALL ON TABWARE2
2,建立的视图假如有条件PROPS=1 那么,最好将PROPS字段的默认值改为1,这是因为
应用中当一个表添加记录时,可能会级联在其它表中添加记录,如果未设定符合视图
条件的值,在往其它表中级联添加时就出错了(因为在视图找不到新加的记录)。
3,我修改了一个系统参数:cursor_sharing=FORCE (DEFAULT IS EXACTLY).
也可能是由于这个原因吧,在将表改名,重建同名视图时,系统却不能刷新LIBRARY

CACHE。
所以才会出错,害得大家都心慌脚乱。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/350519/viewspace-954551/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ASM 学习 脚本
请登录后发表评论 登录
全部评论

注册时间:2008-11-27

  • 博文量
    253
  • 访问量
    773708