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

 

 

 

之前按用户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.youkuaiyun.com
相关视频:http://blog.youkuaiyun.com/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表空间和数据文件的关系,否则拒绝申请

 

SELECT df.tablespace_name AS "表空间名", df.total_space AS "总空间(MB)", NVL(fs.free_space, 0) AS "空闲空间(MB)", (df.total_space - NVL(fs.free_space, 0)) AS "已用空间(MB)", ROUND((df.total_space - NVL(fs.free_space, 0)) 2 3 4 5 6 * 100 / df.total_space, 2) AS "利用率(%)" FROM (SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) total_space FROM dba_data_files GROUP BY tablespace_name) df LEFT JOIN (SELECT 7 8 9 10 11 12 13 14 15 16 17 tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) free_space FROM dba_free_space GROUP BY tablespace_name) fs ON df.tablespace_name = fs.tablespace_name ORDER BY "利用率(%)" DESC; 18 19 20 21 22 23 24 25 26 表空间名 总空间(MB) 空闲空间(MB) 已用空间(MB) 利用率(%) ------------------------------ ---------- ------------ ------------ ---------- SYSTEM 65527.98 117.94 65410.04 99.82 TIMP_XZEEMS_INTER_FLOW 20992 1237.13 19754.87 94.11 SYSAUX 1800 116.94 1683.06 93.5 TIMP_XZEEMS_INTRA_FLOW 8192 768.69 7423.31 90.62 USERS 5 3.69 1.31 26.2 UNDOTBS1 175 137.94 37.06 21.18 TIMP_XZEEMS_INTRA 1024 985.31 38.69 3.78 TIMP_XZEEMS_INTER 1024 986.13 37.87 3.7 TIMP_XZEEMS_MQ_INTRA 1024 1019.63 4.37 .43 9 rows selected. SQL> SELECT a.tablespace_name AS "表空间名", ROUND(a.bytes_alloc / 1024 / 1024, 2) AS "总空间(MB)", ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / 1024 / 1024, 2) AS "已用空间(MB)", ROUND(NVL(b.bytes_free, 0) / 1024 / 1024, 2) AS "空 2 3 4 5 闲空间(MB)", ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.bytes_alloc * 100, 2) AS "利用率(%)", a.autoextensible AS "自动扩展" FROM (SELECT tablespace_name, SUM(bytes) bytes_alloc, MAX(autoextensible) aut 6 7 8 9 10 11 12 oextensible FROM dba_data_files GROUP BY tablespace_name) a LEFT JOIN (SELECT tablespace_name, SUM(bytes) bytes_free FROM dba_free_space GROUP BY tablespace_name) b ON a.tablespace_name = b.tablespace_name UNION AL 13 14 15 16 17 18 19 20 21 22 L SELECT tablespace_name AS "表空间名", ROUND(SUM(bytes) / 1024 / 1024, 2) AS "总空间(MB)", ROUND(SUM(bytes_used) / 1024 / 1024, 2) AS "已用空间(MB)", ROUND(SUM(bytes_free) / 1024 / 1024, 2) AS "空闲空间(MB)", ROUND(SUM( 23 24 25 26 27 28 bytes_used) / SUM(bytes) * 100, 2) AS "利用率(%)", 'YES' AS "自动扩展" FROM dba_temp_free_space GROUP BY tablespace_name ORDER BY 5 DESC; 29 30 31 32 ROUND(SUM(bytes_used) / SUM(bytes) * 100, 2) AS "利用率(%)", * ERROR at line 28: ORA-00904: "BYTES": invalid identifier
08-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值