/*
* 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)
댓글 없음:
댓글 쓰기