您的位置:首页 > 运维架构

ORA-00904: "DROP_SEGMENTS": invalid identifier 解决方法

2010-04-06 16:36 681 查看
之前按用户imp了一个9i的数据库,今天发现Job 执行失败,alert log 显示:
ORA-00904: "DROP_SEGMENTS": invalid identifier



上网搜了一下, 摘抄如下, 说是要执行下catpatch.sql 脚本。



Oracle 9.2.0.5 added the DROP_SEGMENTS column to the DBA_TAB_MODIFICATIONS view. Internally, the dollar table sys.mon_mods$ received the new drop_segments column. Guess who's responsible for adding this new column during the patch process?
Yup, it's catpatch.sql. Oh, joy!

If you don't run catpatch when patching to 9.2.0.5, a few things will happen with regards to the drop_segments column:
SMON will complain profusely in alert.log whenever it tries to update sys.mon_mods$. That means you get this error message every 15 minutes, or sooner:


Thu Nov 25 17:21:05 2004
Errors in file /u01/app/oracle/admin/mydb/bdump/mydb_smon_8201.trc:
ORA-00904: "DROP_SEGMENTS": invalid identifier


DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO will fail.
According to Metalink Note 285315.1, you'll also get the ORA-00904 error in the alert.log on DROP TABLE and TRUNCATE TABLE.
You will get the ORA-00904 error when you try to update statistics with "GATHER STALE".
If you can't update statistics, you will have bad optimizer plans.



解决方法如下:
1. shutdown database
2. startup migrate
3. @?/rdbms/admin/catpatch.sql --升级数据字典
4. @?/rdbms/admin/catalog.sql --创建系统常用的数据字典视图和同义词
5. @?/rdbms/admin/utlrp.sql --编译存储过程
6. 重启数据库



SQL> describe sys.mon_mods$;

Name Null? Type
----------------- -------- ------------
OBJ# NUMBER
INSERTS NUMBER
UPDATES NUMBER
DELETES NUMBER
TIMESTAMP DATE
FLAGS NUMBER
DROP_SEGMENTS NUMBER <==出现了该字段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐