반응형

 

-- 실전 오라클 백업과 복구(생능출판사, 서진수 지음), p.156~p.163
-- 데이터 파일 이동시키는 작업
-- 철칙: 데이터 파일 사용 중 일 때는 절대로 이동시키거나 복사하면 안 된다.
-- 1. offline 되는 테이블 스페이스의 데이터 파일 이동하기
-- 2. offline 안 되는 테이블 스페이스의 데이터 파일 이동하기
-- 3. Redo log file 이동하기
-- 4. 테이블 스페이스 삭제하기


-- 1. offline 되는 테이블 스페이스의 데이터 파일 이동하기
<순서요약>
1) 해당 테이블 스페이스 offline
2) 데이터 파일을 대상 위치로 복사
3) 컨트롤 파일 내의 해당 데이터 파일 위치 변경
4) 해당 테이블 스페이스 online


/u01/app/oracle/oradata/orcl/haksa01.dbf
/u01/app/oracle/oradata/orcl/haksa02.dbf

/u01/app/oracle/disk1/


SQL> alter tablespace haksa offline;
SQL> !cp /u01/app/oracle/oradata/orcl/haksa01.dbf /u01/app/oracle/disk1/
SQL> !cp /u01/app/oracle/oradata/orcl/haksa02.dbf /u01/app/oracle/disk2/
SQL> select name from v$datafile;
SQL> alter tablespace haksa rename datafile '/u01/app/oracle/oradata/orcl/haksa01.dbf' to '/u01/app/oracle/disk1/haksa01.dbf';
SQL> alter tablespace haksa rename datafile '/u01/app/oracle/oradata/orcl/haksa02.dbf' to '/u01/app/oracle/disk2/haksa02.dbf';
SQL> alter tablespace haksa online;
SQL> select name from v$datafile;
SQL>

 

-- 2. offline 안 되는 테이블 스페이스의 데이터 파일 이동하기
<순서요약>
1) DB를 종료한다.
2) 마운트 상태로 시작한다.
3) 데이터 파일을 복사한다.
4) 컨트롤 파일의 내용을 변경한다.
5) DB를 open한다.

-- offline이 안 되는 테이블 스페이스: system tablespace, undo tablespace, default temporary tablespace


/u01/app/oracle/oradata/orcl/system01.dbf


SQL> shutdown immediate
SQL> startup mount
SQL> !cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/disk3/
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/app/oracle/disk3/system01.dbf';
SQL> select name from v$datafile;
SQL> alter database open;
SQL>


-- 3. Redo log file 이동하기

SQL> set line 200
SQL> col a.group# for 999
SQL> col member for a50
SQL> select a.group#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
     from v$logfile a, v$log b
     where a.group#=b.group#
     order by 1, 2;

SQL> shutdown immediate
SQL> startup mount

SQL>!cp /u01/app/oracle/disk3/redo01_a.log /u01/app/oracle/disk4/redo01_a.log
SQL>!cp /u01/app/oracle/disk3/redo02_a.log /u01/app/oracle/disk4/redo02_a.log
SQL>!cp /u01/app/oracle/disk3/redo03_a.log /u01/app/oracle/disk4/redo03_a.log

SQL> alter database rename file '/u01/app/oracle/disk3/redo01_a.log' to '/u01/app/oracle/disk4/redo01_a.log';
SQL> alter database rename file '/u01/app/oracle/disk3/redo02_a.log' to '/u01/app/oracle/disk4/redo02_a.log';
SQL> alter database rename file '/u01/app/oracle/disk3/redo03_a.log' to '/u01/app/oracle/disk4/redo03_a.log';
SQL> select member from v$logfile;
SQL> alter database open;
SQL>


-- 4. 테이블 스페이스 삭제하기
SQL> drop tablespace haksa; -- Error 발생
SQL> drop tablespace haksa including contents and datafiles; -- haksa 테이블 스페이스 삭제, 물리적으로 OS에서 삭제
SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;
SQL>

반응형