본 문서는 DB 재기동 없이 데이터파일의 이름 혹은 경로를 변경하는 방법을 안내합니다.
1. 테이블스페이스 Offline 상태에서 데이터파일 이름/경로 변경
1.1. 개요
변경하려는 대상 데이터파일이 속한 테이블스페이스의 가용성을 offline으로 변경한 상태에서 rename datafile 명령을 실행하여 데이터파일의 이름 혹은 경로를 변경합니다.
이 때, 테이블스페이스는 non-SYSTEM이어야 offline 상태로 변경할 수 있습니다.
데이터파일의 정보를 변경했으므로 작업이 끝난 후 컨트롤파일 백업을 해야 합니다.
1.2. 절차
1.2.1. Data file, Table space 확인
SQL> set linesize 200
SQL> col file_name for a40
SQL> col tablespace_name for a20
SQL> select file_name, tablespace_name from dba_datafiles where file_name like '%test0_.dtf';
FILE_NAME TABLESPACE_NAME
---------------------------------------- --------------------
/home/lcj/tbdata/cjdb1/test01.dtf TEST
/home/lcj/tbdata/cjdb1/test02.dtf TEST
/home/lcj/tbdata/cjdb1/test03.dtf TEST
3 rows selected.
1.2.2. 대상 Tablespace를 Offline 상태로 변경
SQL> alter tablespace TEST offline;
Tablespace 'TEST' altered.
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'TEST';
TABLESPACE_NAME STATUS
-------------------- -------------
TEST OFFLINE
1 row selected.
1.2.3. 대상 Datafile 경로 변경
[lcj@finlin:cj1:/home/lcj/tbdata/cjdb1]ls test01.dtf
test01.dtf
[lcj@finlin:cj1:/home/lcj/tbdata/cjdb1]cp test01.dtf /home/lcj/tbdata/cjdb1/rename/test01.dtf
[lcj@finlin:cj1:/home/lcj/tbdata/cjdb1]cd rename
[lcj@finlin:cj1:/home/lcj/tbdata/cjdb1/rename]ls test01.dtf
test01.dtf
1.2.4. Rename Datafile 명령
SQL> alter tablespace TEST rename datafile '/home/lcj/tbdata/cjdb1/test01.dtf' TO
'/home/lcj/tbdata/cjdb1/rename/test01.dtf';
Tablespace 'TEST' altered.
1.2.5. 대상 Tablespace를 Online 상태로 전환
SQL> alter tablespace TEST online;
Tablespace 'TEST' altered.
1.2.6. 작업 확인 및 Controlfile 백업
SQL> select file_name, tablespace_name from dba_datafiles where tablespace_name='TEST';
FILE_NAME TABLESPACE_NAME
---------------------------------------------- --------------------
/home/lcj/tbdata/cjdb1/rename/test01.dtf TEST
/home/lcj/tbdata/cjdb1/test02.dtf TEST
/home/lcj/tbdata/cjdb1/test03.dtf TEST
3 rows selected.
SQL> alter database backup controlfile to trace as '/home/lcj/tbdata/cjdb1/rename/cre_ctl_1.sql'
reuse noresetlogs;
Database altered.
[lcj@finlin:cj1:/home/lcj/tbdata/cjdb1/rename]ls -alrt
total 512016
drwxr-xr-x 4 lcj dba 4096 Dec 4 20:17 ..
-rw------- 1 lcj dba 524288000 Dec 4 20:26 test01.dtf
drwxr-xr-x 2 lcj dba 4096 Dec 4 20:35 .
-rw-r--r-- 1 lcj dba 1554 Dec 4 20:35 cre_ctl_1.sql