Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143906
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类: Oracle

2006-07-25 09:28:00

07月17日(星期一)

我的oracle9i数据库在打patch后发现在alert中每天定时会产生一些ora-00600错误,错误代码为:

Errors in file /oracle/admin/c3rpt/bdump/c3rpt_j006_28040.trc:
ORA-00600: internal error code, arguments: [17069], [0x3E8C55AE0], [], [], [], [], [], []

在相应的trace文件中可以看到如下信息:

KSTDUMP: End of in-memory trace dump
ORA-00600: internal error code, arguments: [17069], [0x3E8C55AE0], [], [], [], [], [], []
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 1
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00600: internal error code, arguments: [17069], [0x3E8C55AE0], [], [], [], [], [], []
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 1

其中ora-06508信息说明是要调用的对象不存在, 通过dba_objects查询, 发现要调用的对象状态为invalid, 在dba_objects中还存在一些这样状态的数据库对象.

于是调用$ORACLE_HOME/RDBMS/ADMIN/utlrp.sql对数据库中的invalid对象进行重新编译.

编译结束后连续跟踪了几天,没有再次出现上述问题.

总结:utlrp.sql脚本可以在数据库运行的状态下执行以编译、数据库中的invalid对象. oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。

为了保证系统的的数据词典的完整性和有效性,最好的打patch后在migrate状态下运行catpatch.sql,否则可能会在exp/imp时报EXP-00056: 遇到 ORACLE 错误 31600
ORA-31600: 输入值 EMIT_SCHEMA 无效, 它用于参数 NAME, 位于函数 SET_TRANSFORM_PARAM 中
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 3926
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 4050
ORA-06512: 在"SYS.DBMS_METADATA", line 836
ORA-06512: 在line 1
EXP-00056: 遇到 ORACLE 错误 31600
ORA-31600: 输入值 EMIT_SCHEMA 无效, 它用于参数 NAME, 位于函数 SET_TRANSFORM_PARAM 中
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 3926
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 4050
ORA-06512: 在"SYS.DBMS_METADATA", line 836
ORA-06512: 在line 1
EXP-00000: 导出终止失败
等错误

阅读(1116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~