ORACLE EXP 에서 빈 테이블 을 내 보 낼 수 없 는 원인 분석 및 해결 방법

1.빈 테이블 을 내 보 낼 수 없 는 이유 1.Oracle 11g 은 기본적으로 빈 테이블 에 segment 를 할당 하지 않 기 때문에 exp 를 사용 하여 Oracle 11g 데이터 베 이 스 를 내 보 낼 때 빈 테이블 은 내 보 내지 않 습 니 다.
2、deferred 설정segment_creation 매개 변 수 는 FALSE 이후 빈 테이블 이 든 비어 있 지 않 은 테이블 이 든 segment 를 분배 합 니 다.
sqlplus 에서 다음 명령 을 실행 합 니 다:
SQL>alter system set deferred_segment_creation=false;
보기:
SQL>show parameter deferred_segment_creation;
이 값 을 설정 하면 뒤에 추 가 된 표 에 만 작용 하고 이전에 만 든 빈 표 에는 작용 하지 않 습 니 다.
해결 방법
빈 테이블 에 Extent 를 수 동 으로 분배 하 는 방식 을 사용 하여 이전에 만 든 빈 테이블 을 내 보 내 는 문 제 를 해결 할 수 있 습 니 다
①select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null
위의 문 구 를 사용 하면 빈 표 에 Extent 문 구 를 맞 출 수 있 습 니 다.
하지만 보기 user 에 빈 시계 가 많 습 니 다.tables 의 numrows 는 0 이 아 닙 니 다.tables 의 데 이 터 는 업데이트 되 지 않 았 습 니 다).따라서 위의 방법 을 통 해 모든 빈 표 에 데이터 세그먼트 를 할당 할 수 없습니다.해결 방법 은 다음 과 같 습 니 다.
②select 'analyze table '||table_name||' compute statistics;' from user_tables
analyze table name compute statistics 는 analyze table name compute statistics for table for all indexes for all columnsfor table 의 통계 정 보 를 보기 에 존재 합 니 다:usertables 、all_tables、dba_tablesfor all indexes 의 통계 정 보 는 보기 에 존재 합 니 다:userindexes 、all_indexes、dba_indexes for all columns 의 통계 정 보 는 시도 에 존재 합 니 다:usertab_columns、all_tab_columns、dba_tab_columns
실행 후 보기 usertables 의 numrows 값 이 업 데 이 트 됩 니 다.이 때 ① 를 실행 하면 모든 빈 표 에 데이터 세그먼트 를 할당 할 수 있 습 니 다.
그러나 analyze table name coptute statistics 를 실행 할 때 Oacle 은 보고 합 니 다.  object statictis are locked(이 표 들 의 통계 가 잠 겨 있 음)아래 의 방식 으로 잠 금 을 해제 합 니 다.
 ③select 'exec dbms_stats.unlock_table_stats('||'''JXDEMO'''||','''||table_name||''');' from user_tables
(③ 얻 은 결 과 는 sqlplus 에서 실행 되 어야 하 며,pl/sql developer 의 sql 창 에서 실 행 됩 니 다)
③ 실행 후 얻 은 결 과 를 실행 한 후 실행 ② object statictis are locked 오류 알림 이 없습니다.

좋은 웹페이지 즐겨찾기