expdp 중 metadata_only 옵션을 이용하여 해당 테이블 정보를 뽑다가 이상한일이 생겨서 조치- 

해당 schema에서 content=metadata_only 옵션을 이용하여 ddl문 추출 
impdp 에서 해당 remap_schema, remap_tablespace, content=metadata_only 를 이용하여 
새로운 계정생성 이상없이 끝나서 해당 계정을 select num_rows from user_tables 해보니 다음과 같은결과..
SQL> select num_rows from user_tables; 
  NUM_ROWS          
----------------- 
         0 
         5 
        14 
         4 
         7 
         7 
         2 
         4 
        10
  아놔....  
 이 num_rows는 뭐지... count(*) 로 확인하면 될껄 굳이 num_rows로 확인 -_-;; 
 생각을 해보니.. 통계정보까지 같이 들어가는걸 깜박..  
 count하면 해당 row는 없다.. 그래두 깔끔하게 하려고 통계정보 생성- 암튼.. 
통계정보야 재 생성하면 되니깐...라는 생각으로 다음을 실행
SQL> exec dbms_stats.gather_table_stats('RECOTEST','EMP'); 

BEGIN dbms_stats.gather_table_stats('RECOTEST','EMP'); END; 



* 

ERROR at line 1: 

ORA-20005: object statistics are locked (stattype = ALL) 

ORA-06512: at "SYS.DBMS_STATS", line 23829 

ORA-06512: at "SYS.DBMS_STATS", line 23880 

ORA-06512: at line 1

 


  ORA-2005 의 에러메시지가 나타나는 경우는 크게 3가지 인데 다음과 같다. 

1. dbms_stat.lock[schema|table]_stat 를 이용해서 해당 통계정보를 잠글때

2. import 및 impdp를 사용하여 데이터 결과값 없이 table만 생성하는경우 

3. queue table 인 경우 dynamic sampling이 사용되도록 통계정보가 비워지거나 잠기게 되며 

3.1 10gR2로 upgrade 중에는 queue table 들의 통계정보는 삭제된 후 잠김상태가 되며10gR2 에서 queue table이 생성될때 통계들은 계속 비워진 채로 잠기게 된다.

~> 해결방법 imp사용시에는 rows=n, statistics=none 의 옵션을 사용하여 뽑도록하고 impdp 사용시는 content=metadata_only, exclude=(table_statistics,index_statistics) parameter를 사용하도록 한다.

일단 다시 뽑기는 귀찮으니 다음 테이블에서 통계정보가 잠긴 table을 확인한다.

SQL> select owner, table_name, stattype_locked  
from dba_tab_statistics where stattype_locked is not null; 


OWNER                          TABLE_NAME                     STATT 
------------------------------ ------------------------------ ----- 
SYS                            SCHEDULER$_EVENT_QTAB          ALL 
SYS                            SCHEDULER$_REMDB_JOBQTAB       ALL 
SYS                            SCHEDULER_FILEWATCHER_QT       ALL 
SYS                            ALERT_QT                       ALL 
SYS                            AQ$_MEM_MC                     ALL 
SYS                            AQ_EVENT_TABLE                 ALL 
SYS                            AQ_PROP_TABLE                  ALL 
SYS                            AQ$_KUPC$DATAPUMP_QUETAB_1_P   ALL 
SYS                            KUPC$DATAPUMP_QUETAB           ALL 
SYSTEM                         DEF$_AQCALL                    ALL 
SYSTEM                         DEF$_AQERROR                   ALL 
SYS                            SYS$SERVICE_METRICS_TAB        ALL 
WMSYS                          WM$EVENT_QUEUE_TABLE           ALL 
SYSMAN                         MGMT_TASK_QTABLE               ALL 
SYSMAN                         MGMT_NOTIFY_QTABLE             ALL 
SYSMAN                         MGMT_NOTIFY_INPUT_QTABLE       ALL 
SYSMAN                         MGMT_PAF_MSG_QTABLE_1          ALL 
SYSMAN                         MGMT_PAF_MSG_QTABLE_2          ALL 
SYSMAN                         MGMT_LOADER_QTABLE             ALL 
RECOTEST                       BONUS                          ALL 
RECOTEST                       SALGRADE                       ALL 
RECOTEST                       DEPT                           ALL 
RECOTEST                       SPORTS                         ALL 
RECOTEST                       SPORTS_INFORM                  ALL 
RECOTEST                       COPY_T                         ALL 
RECOTEST                       EMP_KIND1                      ALL 
RECOTEST                       EMP_KIND2                      ALL 
SYS                            KUPC$DATAPUMP_QUETAB_1         ALL 
IX                             ORDERS_QUEUETABLE              ALL 
IX                             STREAMS_QUEUE_TABLE            ALL 
SYS                            WRH$_MVPARAMETER               ALL 
SYS                            WRH$_EVENT_HISTOGRAM           ALL 
SYS                            WRH$_SERVICE_WAIT_CLASS        ALL 
SYS                            WRH$_SYS_TIME_MODEL            ALL 
SYS                            WRH$_OSSTAT                    ALL 
SYS                            WRH$_TABLESPACE_STAT           ALL 
SYS                            WRH$_ACTIVE_SESSION_HISTORY    ALL 
SYS                            WRH$_SERVICE_STAT              ALL 
SYS                            WRH$_SEG_STAT                  ALL 
SYS                            WRH$_PARAMETER                 ALL 
SYS                            WRH$_SYSSTAT                   ALL 
SYS                            WRH$_SGASTAT                   ALL 
SYS                            WRH$_ROWCACHE_SUMMARY          ALL 
SYS                            WRH$_DB_CACHE_ADVICE           ALL 
SYS                            WRH$_LATCH_MISSES_SUMMARY      ALL 
SYS                            WRH$_LATCH                     ALL 
SYS                            WRH$_WAITSTAT                  ALL 
SYS                            WRH$_SYSTEM_EVENT              ALL 
SYS                            WRH$_SQLSTAT                   ALL 
SYS                            WRH$_FILESTATXS                ALL 
50 rows selected.

table 별로 해도 되지만 귀찮으므로 schema 한방에 처리하도록 한다
exec DBMS_STATS.UNLOCK_schema_STATS('RECOTEST'); 

-- DBMS_STATS.UNLOCK_[SCHEMA|TABLE]_STATS
해당 schema 에 대한 통계정보를 재수집 하도록 하자
EXEC DBMS_STATS.GATHER_schema_STATS('RECOTEST'); 

-- 잘 안될때에는 force=> true option을 주도록 하자
SQL> show user 

USER is "RECOTEST" 
정리되었다- 끝!
SQL> select num_rows from user_tables; 

  NUM_ROWS 
---------- 
         0 
         0 
         0 
         0 
         0 
         0 
         0 
         0 
         0 

9 rows selected.



'6. 먹고살기 > 6.1 Oracle' 카테고리의 다른 글

Hadoop and NoSQL Technologies and the Oracle Database  (0) 2012.05.21
object statistics are locked  (0) 2012.03.30
COMMIT_POINT_STRENGTH  (0) 2012.01.19
11g compress table  (0) 2011.09.14