특정 TABLE을 다른 TABLESPACE로 옮기는 방법
현재 user가 사용중인 tablespace의 특정 테이블을 다른 tablespace의
영역으로 옮기는 방법은 다음과 같다.
예를 들어 SCOTT user의 DEPT table이 현재 USERS tablespace에 있는 경우,
이것을 TOOLS tablespace로 옮기는 경우 다음과 같은 순서대로 작업을
하여야 한다.
(1) DEPT table을 export한다.
os> exp scott/tiger file=file_name.dmp tables=dept
(2) 이전하고자 하는 tablespace인 TOOLS가 없는 경우에는 다음과 같이
생성한다. datafile의 위치나 크기는 임의로 설정한다.
os> svrmgrl (7.2이하의 경우 sqldba lmode=y)
SVRMGR> CONNECT INTERNAL;
SVRMGR> CREATE TABLESPACE tools
DATAFILE '/user1/oracle_data/tools01.dbf' SIZE 100M;
(3) 옮기고자 하는 table의 owner인 SCOTT의 default talbespace를
table을 새로 위치시킬 tablespace인 TOOLS로 임시 지정한다.
SVRMGR> alter user scott default tablespace tools;
(4) SCOTT가 임시로 TOOLS에만 insert 가능하도록 다음과 같이 조치한다.
SVRMGR> revoke unlimited tablespace from scott;
SVRMGR> alter user scott quota 0 on users;
(5) (1)에서 export받은 DEPT를 다시 SCOTT user로 import한다.
os> imp scott/tiger file=file_name.dmp full=y commit=y
(6) IMPORT 후 각 TABLE이 해당 TABLESPACE로 변경되었는지 확인
os> sqlplus scott/tiger
SQL> select tablespace_name from user_tables where table_name = 'DEPT';
(7) SCOTT의 권한 및 default tablespace를 원상태로 복구시킨다.
SVRMGR> grant unlimited tablespace to scott;
SVRMGR> alter user scott default tablespace users;
* 이자료는 Oracle Korea Customer Support Technical Bulletins를 참조했습니다.
|