ORACLE数据库性能

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)  编辑  收藏 网摘收藏

标题  
姓名  
主页
EMail (只有博主才能看到)
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录    新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]