[관리] datafile의 물리적 이동 시키기

오라클의 모든 데이터 정보는 control file안에 저장되며 오라클 내부 엔진 상에서의 변동만이 적용된다.

OS 상에서의 물리적 경로 변경 시 오라클이 정상적으로 startup 되지 않을 수 있다.

아래 과정을 통해 데이터의 이동이 가능하다.  

1. 우선 이동하고자하는 TableSpace의 정보를 가져옵니다

SELECT file_name, bytes FROM sys.dba_data_files

WHERE tablespace_name = ‘STORE39’;

2. 이동할 data file의 위치를 파악한 후 작업에 들어가기 전에 데이타베이스를 백업합니다

3. Server Manager를 실행합니다

run Svrmgrl

4. Internal로 접속합니다

connect internal

5. TABLESPACE를 OffLine으로 전환합니다

(** OffLine으로 전환하면 해당 TableSpace를 사용하는 DB

로 접근이 불가능해집니다)

ALTER TABLESPACE STORE39 OFFLINE NORMAL;

6. data file을 target 디렉토리로 복사합니다 (** Move

가 아니라 Copy입니다)

7. data dictionary 의 정보를 갱신합니다.

(** 예에서는 filename1을 filename3로 , filename2을

filename4로 변경합니다

** filename은 full path를 지정하여야 합니다

)

ALTER TABLESPACE STORE39 RENAME DATAFILE

‘filename1’, ‘filename2’

TO ‘filename3’, ‘filename4’;

8. data dictionary의 정보를 조회합니다. 현재는

STORE39 TableSpace 가 OFFLINE으로 되어 있을 겁니다.

data file의 위치가 새로 변경된 걸 확인하십시요.

SELECT name, file#, status,

checkpoint_change# “CHECKPOINT” FROM

v$datafile;

9. table space를 online으로 전환합니다.

ALTER TABLESPACE STORE39 ONLINE;

10. 변경된 Database를 백업합니다.

11. 원래의 디렉토리에 있던 data file은 삭제합니다.

이상입니다.]

[ controll file rename ]

1. database shutdown

SVRMGR> shutdown

2. controll file copy

# copy /old-path/oldfile-name /new-path/newfile-name (os상의 작업)

3. init<SID>.ora file 수정

# vi init<SID>.ora — controll의 위치를 지정한 파라메타에 새로운 path로 입력

4. database startup

SVRMGR> startup

5. 확인

SVRMGR> select *from v$controllfile;

[ Tablespace(datafile) rename ]

1. database startup

SVRMGR> startup

2. datafile offline

SVRMGR> alter tablespace <tablespace_name> offline;

3. datafile copy

# copy /old-path/oldfile-name /new-path/newfile-name (os상의 작업)

4. datafile rename

SVRMGR> alter database <tablespace_name> rename file ‘/old-path/oldfile-name’

to ‘/new-path/newfile-name’;

5. database open and tablespace online

SVRMGR> alter database open;

SVRMGR> alter tablespace <tablespace_name> online;

6. 확인

SVRMGR> select name, status from v$datafile;

7. unix command에 의한 old datafile 삭제

[ system datafile 및 logfile ]

1. database shutdown ( immeidate나 abort로 하면 안됨)

SVRMGR> shutdown

2. unix command에 의한 새위치에 copy

# copy /old-path/oldfile-name /new-path/newfile-name (os상의 작업)

3. mount database

SVRMGR> startup mount

4. rename

SVRMGR> alter database rename file ‘/old-full-path/old-filename’

to ‘/new-full-path/new-filename’;

5. open database

SVRMGR> alter database open;

6. 확인

SVRMGR> select name, status from v$datafile;

SVRMGR> select * from v$log;

SVRMGR> select * from v$logfile;

7. unix command에 의한 old logfile 삭제

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.