/* * 1. 테이블의 TABLESPACE변경 방법은 다음과 같다. * ALTER TABLE 테이블명 MOVE TABLESPACE 테이블스페이스명; * */ SELECT 'ALTER TABLE ' || SEGMENT_NAME || ' MOVE TABLESPACE 테이블스페이명;' FROM USER_SEGMENTS WHERE SEGMENT_TYPE = 'TABLE'; /* * 2. 두번째 INDEX의 TABLESPACE 변경. * ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명; * */ SELECT 'ALTER INDEX ' || SEGMENT_NAME || ' REBUILD TABLESPACE 테이블스페이명;' FROM USER_SEGMENTS WHERE SEGMENT_TYPE = 'INDEX'; /* * 3. LOBINDEX, LOG SEGMENT의 TABLESPACE변경 * ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명; * 테이블의 TABLESPACE를 변경해도 해당계정의 TABLESPACE사용정보를 조회하면 몇가지가 나온다. * LOBINDEX, LOG SEGMENT의 테이블스페이스 정보들이다. * */ SELECT * FROM DBA_SEGMENTS WHERE OWNER = '사용자계정'; ALTER TABLE 테이블명 MOVE LOB ( 컬럼1, 컬럼2 ) STORE AS ( TABLESPACE 테이블스페이스명 ); DBA_SEGMENTS에 SELECT한 결과를 보니 하나의 테이블에 여러개의 LOB을 사용하면 행으로 나온다. SELECT 'ALTER TABLE ' || TABLE_NAME || ' MOVE LOB (' || SUBSTR (XMLAGG (XMLELEMENT (A, ',' || COLUMN_NAME)).EXTRACT ('//text()'),2) || ') STORE AS ( TABLESPACE 테이블스페이스명 );' FROM DBA_LOBS WHERE OWNER = '사용자계정' GROUP BY TABLE_NAME;
2014년 1월 3일 금요일
Oracle Tablespace 변경방법
테이블스페이스를 변경하는 방법을 정리한다.
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기