之前按用户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 <==出现了该字段
------------------------------------------------------------------------------
QQ: 492913789
Email: ahdba@qq.com
Blog: http://www.cndba.cn/dave
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请