-----------------------------
DATAFILE을 RENAME 하는 방법 Oracle Bletin no : 10071
-----------------------------
▶ NON-SYSTEM TABLESPACE 의 DATAFILE이름을 변경하는 경우
SPACE 때문에 데이타 화일을 다른 디렉토리에 옮겨야 하는 경우가 있다.
데이타 화일을 다른 디렉토리에 옮기는 것은 데이타 화일의 이름이 변경되는
경우이므로 다음 SQL 문을 사용하면 된다.
ALTER TABLESPACE tablespace RENAME DATAFILE 'filename'
TO 'filename';
이 명령문을 이용하여 datafile을 옮기는 전체적인 절차는 다음과 같이 하면 된다.
작업 순서
========
1. 데이타베이스 BACKUP을 시행하고 데이타베이스의 모든 작업을 중단하고
다음 작업을 실시한다.
2. 해당 TABLESPACE를 다음 명령어로 DB 가 OPEN된 상태에서 OFFLINE 한다.
ALTER TABLESPACE tablespace OFFLINE;
3. OS COPY 명령어을 사용하여 새로운 DIRECTORY에 FILE을 COPY 한다.
4. ALTER TABLESPACE 명령어를 사용하여 DATABASE FILE을 RENAME 한다.
즉, ALTER TABLESPACE tablespace RENAME DATAFILE 'filename'
TO 'filename';
5. TABLESPACE 를 ONLINE으로 전환한다.
ALTER TABLESPACE tablespace ONLINE;
6. OS 상에서 OLD FILE을 삭제한다.
위의 작업을 하기위해서는 OLD와 NEW 데이타 화일이 존재해야한다.
또한 데이타 화일의 이름이 변경 되었으므로
다음과 같이 control file에 대한 backup을 받아두는것이 좋다.
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
▶ SYSTEM TABLESPACE의 DATAFILE 이름을 변경하는 경우
SYSTEM TABLESPACE에 있는 DATAFILE NAME을 변경하는 경우 SYSTEM TABLESPACE
는 OFFLINE 할 수 없으므로 DATABASE를 OPEN 하지않고 MOUNT된 상태에서
ALTER DATABASE RENAME FILE ... 명령어를 사용한다.
1. EXPORT로 FULL BACKUP을 받는다.
$ exp system/manager file=system.dmp full=y
2. 데이타베이스를 정상적으로 DOWN 한다.
$ sqldba lmode=y
SQLDBA> connect internal
SQLDBA> shutdown
3. DATAFILE을 변경하고자 하는 화일 이름으로 COPY 한다.
$ cp /oracle/dbs/syst_old.dbf /oracle/dbs/syst_new.dbf
4. DATAFILE의 이름을 RENAME 한다.
$ sqldba lmode=y
SQLDBA > connect internal
SQLDBA > startup mount
SQLDBA > alter database rename file '/oracle/dbs/syst_old.dbf' to
'/oracle/dbs/syst_new.dbf' ;
SQLDBA > alter database open;
5. 데이타베이스가 정상적으로 OPEN 되는지 SHUTDOWN 후 다시 STARTUP 한다.
6. 데이타베이스가 정상적으로 STARTUP되면 OLD 화일을 삭제한다.
SQLDBA > !rm /oracle/dbs/syst_old.dbf
댓글 없음:
댓글 쓰기