[관리] 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 삭제