01.오라클/001.DB 관리

[오라클]Invalid / Disabled 된 오브젝트 관리

redkite 2012. 12. 19. 17:09

오라클의 OBJECT들 중 INVALID나 DISABLED된 것을 체크하는 스크립트이다.

SET PAGESIZE 1000 LINESIZE 120
COLUMN OBJECT_DV   FORMAT A10
COLUMN OWNER       FORMAT A15
COLUMN TABLE_NAME  FORMAT A30
COLUMN OBJECT_TYPE FORMAT A20
COLUMN NAME        FORMAT A30
COLUMN STATUS      FORMAT A10

 

SELECT * FROM
(
SELECT 'CONSTRAINT'    OBJECT_DV        ,
       OWNER                            ,
       TABLE_NAME      OBJECT_NAME      ,
       CONSTRAINT_TYPE OBJECT_TYPE      ,
       CONSTRAINT_NAME NAME             ,
       STATUS
  FROM SYS.DBA_CONSTRAINTS
 WHERE STATUS = 'DISABLED'
UNION ALL
SELECT 'TRIGGER'    OBJECT_DV           ,
       OWNER                            ,
       TABLE_NAME   OBJECT_NAME         ,
       'TRIGGER'    OBJECT_TYPE         ,
       TRIGGER_NAME NAME                ,
       STATUS
  FROM SYS.DBA_TRIGGERS
 WHERE STATUS = 'DISABLED'
UNION ALL
SELECT 'OBJECT'    OBJECT_DV            ,
       OWNER                            ,
       'OBJECT'    OBJECT_NAME          ,
       OBJECT_TYPE OBJECT_TYPE          ,
       OBJECT_NAME NAME                 ,
       STATUS
  FROM SYS.DBA_OBJECTS
 WHERE STATUS      = 'INVALID'
UNION ALL
SELECT 'INDEX'           OBJECT_DV      ,
       OWNER             OWNER          ,
       INDEX_NAME        OBJECT_NAME    ,
       'INDEX'           OBJECT_TYPE    ,
       INDEX_NAME        NAME           ,
       STATUS
  FROM SYS.DBA_INDEXES
 WHERE STATUS IN ('UNUSABLE','INVALID')
UNION ALL
SELECT 'PART IDX'        OBJECT_DV      ,
       INDEX_OWNER       OWNER          ,
       INDEX_NAME        OBJECT_NAME    ,
       'PART INDEX'      OBJECT_TYPE    ,
       PARTITION_NAME    NAME           ,
       STATUS
  FROM SYS.DBA_IND_PARTITIONS
 WHERE STATUS IN ('UNUSABLE','INVALID')
)
 WHERE OWNER NOT IN ('SYS','SYSTEM');