원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

모든 데이터파일, 온라인리두로그파일, 컨트롤파일의 위치를 변경하기

 

 

예)

기존 파일들의 위치 : /old

변경할 위치 : /new

일 경우

 

1. controlfile의 위치를 변경

alter system set control_files = '/new/control/control01.ctl','/new/control/control02.ctl','/new/control/control03.ctl' scope=spfile;

 

2. DB 정지

SQL> shutdown immediate

 

3. 모든 파일들을 복사

# cp /old/* /new/

 

4. DB start(mount)

SQL> startup mount;

SQL> start rename_files.sql;

 

-- 다음의 스크립트를 작성하여 실행시킨다.

-- rename_files.sql ------------------------------------------------------------------------------

alter database rename file '/old/SYSTEM01.DBF' to '/new/SYSTEM01.DBF';
alter database rename file '/old/UNDOTBS01.DBF' to '/new/UNDOTBS01.DBF';
alter database rename file '/old/CWMLITE01.DBF' to '/new/CWMLITE01.DBF';
alter database rename file '/old/DRSYS01.DBF' to '/new/DRSYS01.DBF';
alter database rename file '/old/EXAMPLE01.DBF' to '/new/EXAMPLE01.DBF';
alter database rename file '/old/INDX01.DBF' to '/new/INDX01.DBF';
alter database rename file '/old/ODM01.DBF' to '/new/ODM01.DBF';
alter database rename file '/old/TOOLS01.DBF' to '/new/TOOLS01.DBF';
alter database rename file '/old/USERS01.DBF' to '/new/USERS01.DBF';
alter database rename file '/old/XDB01.DBF' to '/new/XDB01.DBF';

alter database rename file '/old/REDO03.LOG' to '/new/REDO03.LOG';
alter database rename file '/old/REDO02.LOG' to '/new/REDO02.LOG';
alter database rename file '/old/REDO01.LOG' to '/new/REDO01.LOG';

---------------------------------------------------------------------------------------------------

 

 

5. DB start(open) 및 확인

SQL> alter database open;

SQL> select name from v$datafile;                      // 데이터파일 위치

SQL> select * from v$logfile;                              // 리두로그파일 위치

SQL> select * from v$controlfile;                       // 컨트롤파일 위치

 

 

추가)  TEMP 테이블스페이스 이동 시키기

 TEMP 테이블스페이스에 속해있는 데이터파일은 속성이 TEMP라서 alter database rename file 명령어로 이동시킬수 없다.

그러므로 새로운 TEMP 테이블스페이스를 생성하고 기존 테이블스페이스를 제거하는 순으로 이동을 시켜야 한다.

 

* database open 상태에서 수행

- 제거할 기존 테이블스페이스 확인 : TEMP

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME  PROPERTY_VALUE  DESCRIPTION
------------------------------------
DEFAULT_TEMP_TABLESPACE  TEMP  Name of default temporary tablespace

 

- 새로운 TEMP 테이블스페이스와 데이터파일 생성

SQL> create temporary tablespace temp02 tempfile '/new/temp02.dbf' size 40M

           autoextend on next 5M maxsize unlimited extent management local uniform size 1M;

SQL> alter database default temporary tablespace temp02;

 

- 기존 테이블스페이스 제거

SQL> drop tablespace temp;

 

- 결과 확인

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAME  PROPERTY_VALUE  DESCRIPTION
------------------------------------
DEFAULT_TEMP_TABLESPACE  TEMP02  Name of default temporary tablespace