1管理无效对象
如何标示出无效对象:
select owner,object_name,object_type from dba_objects where status='INVALID'
修正无效对象:
alter ....complile 例如 alter procedure hr.add_reg compile , alter view rname comple;
确定编译错误的原因需要使用 DBA_DEPENDENCIES视图
如果错误特别多,就需要使用工具来重新编译所有无效对象 工具所在目录为 rdbms\admin\utlrp
实例:
SQL> create table testtable(n1 number,d1 date);
Table created
SQL> insert into testtable values(1,sysdate);
1 row inserted
SQL> create or replace view v1 as select d1 from testtable;
View created
SQL> alter table testtable drop column d1;
Table altered
由于原表变化,视图变错
SQL> select object_name,object_type from user_objects where status='INVALID';
OBJECT_NAME OBJECT_TYPE
-------------------------------------------------------------------------------- ------------------
BLOB_IT PACKAGE BODY
P1 PROCEDURE
PNR_DUMP_BLOB PROCEDURE
SP_INSERT_JOBTESTTABLE PROCEDURE
V1 VIEW
SQL> alter view v1 compile;
Warning: View altered with compilation errors
SQL> select referenced_name,referenced_owner,referenced_type from user_dependencies where name='V1';
REFERENCED_NAME REFERENCED_OWNER REFERENCED_TYPE
---------------------------------------------------------------- ------------------------------ ---------------
TESTTABLE OPENPNR TABLE
D1 OPENPNR NON-EXISTENT
D1 PUBLIC NON-EXISTENT
找到问题所在
SQL> select text from user_views where view_name='V1';
TEXT
--------------------------------------------------------------------------------
select d1 from testtable
标识无用的索引:select index_name from user_indexes where status='UNUSABLE';
修正无用的索引 :alter index index_name rebuild;
posted @ 2008-05-07 15:59
onandoff 阅读(47)
评论(0) 编辑 收藏 网摘收藏