★ 데이터 파일 이관작업
1교시 때 옮겨놓았던 파일들을 원위치시켜 보자.
1. 모든 파일들 조회해 보기
SYS@ora11g> select name from v$controlfile;
SYS@ora11g> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/home/oracle/ora_data/control01.ctl
SYS@ora11g> select name from v$datafile;
SYS@ora11g> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/ora_data/system01.dbf
/home/oracle/ora_data/sysaux01.dbf
/home/oracle/ora_data/users01.dbf
/home/oracle/ora_data/example01.dbf
/home/oracle/ora_data/undotbs01.dbf
SYS@ora11g> select member from v$logfile;
SYS@ora11g> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/home/oracle/ora_data/redo01.log
/home/oracle/ora_data/redo03.log
/home/oracle/ora_data/redo02.log
SYS@ora11g> select name from v$tempfile;
SYS@ora11g> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/home/oracle/ora_data/temp01.dbf
2. ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ DB 정.상.적.으.로. 내리기 (가장 중요!!!!!!!!!!!!!!!!!!!) ★ ★ ★ ★ ★ ★ ★ ★ ★
SYS@ora11g> shutdown immediate
shutdown abort 하고 나서 이후의 과정을 수행하려고 해 봤자 아무 소용이 없다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3. 파일 옮기기
SYS@ora11g> !
[oracle@oracle ora_data]$ ls
control01.ctl redo02.log system01.dbf users01.dbf
example01.dbf redo03.log temp01.dbf
redo01.log sysaux01.dbf undotbs01.dbf
[oracle@oracle ora_data]$ mv *.* /u01/app/oracle/oradata/ora11g
4. 이제 컨트롤파일의 위치를 알고 있는 pfile 을 수정해주자.
[oracle@oracle ora_data]$ vi $ORACLE_HOME/dbs/initora11g.ora
주석처리해 놓았던 줄
*.control_files='/u01/app/oracle/oradata/ora11g/control01.ctl'#Restore Controlfile
에서 맨 앞의 # 없애 버리고
아래 달아놓았던 행 *.control_files='/home/oracle/ora_data/control01.ctl' 은 지워버리기
(esc + dd 명령어 쓰면 한 줄이 통째로 지워진다.)
5. pfile 로 DB 열기
[oracle@oracle ora_data]$ sqlplus / as sysdba
Connected to an idle instance.
DB 가 내려가 있다고 나오면
SYS@ora11g> startup pfile=$ORACLE_HOME/dbs/initora11g.ora mount
pfile 로 DB 열어주기
SYS@ora11g> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ora11g/control01.ctl
컨트롤파일 위치 확인: 원래대로 돌아와 있다.
하지만 컨트롤파일 말고 다른 파일들은 예전 위치 그대로 남아있는 상태인데
잠깐 복습:
데이터파일들 중에서 system 과 undo 는 오프라인 모드로 떨어뜨릴 수 없지만 (temp 도 마찬가지)
나머지는 오프라인 모드로 떨어뜨릴 수 있으므로 DB 를 내리지 않고도 이관 작업이 가능하다.
그렇지만 리두는 mount 상태에서 이관작업해 주어야 한다. (커런트한 리두를 지울 수가 없기 때문)
6. 리두부터 하나씩 바꾸기 (!!!!!!!!!!!!!!!!!!!!! 꼭 마운트 단계에서 해야 한다 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
SYS@ora11g> select status from v$instance;
STATUS
------------
MOUNTED
DB 가 마운트 단계인지 먼저 꼭 확인하기
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/redo01.log' to '/u01/app/oracle/oradata/ora11g/redo01.log';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/redo02.log' to '/u01/app/oracle/oradata/ora11g/redo02.log';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/redo03.log' to '/u01/app/oracle/oradata/ora11g/redo03.log';
Database altered.
하나씩 원위치시켜 주고
SYS@ora11g> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ora11g/redo01.log
/u01/app/oracle/oradata/ora11g/redo03.log
/u01/app/oracle/oradata/ora11g/redo02.log
위치가 옮겨졌는지 확인해보기: 잘 옮겨져 있다.
7. 데이터파일도 하나씩 옮겨주기
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/system01.dbf' to '/u01/app/oracle/oradata/ora11g/system01.dbf';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/sysaux01.dbf' to '/u01/app/oracle/oradata/ora11g/sysaux01.dbf';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/users01.dbf' to '/u01/app/oracle/oradata/ora11g/users01.dbf';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/example01.dbf' to '/u01/app/oracle/oradata/ora11g/example01.dbf';
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/undotbs01.dbf' to '/u01/app/oracle/oradata/ora11g/undotbs01.dbf';
하나씩 옮기고
SYS@ora11g> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ora11g/system01.dbf
/u01/app/oracle/oradata/ora11g/sysaux01.dbf
/u01/app/oracle/oradata/ora11g/users01.dbf
/u01/app/oracle/oradata/ora11g/example01.dbf
/u01/app/oracle/oradata/ora11g/undotbs01.dbf
옮겨졌는지 확인하기
8. 템프 파일도 옮겨주기
SYS@ora11g>
alter database rename file '/home/oracle/ora_data/temp01.dbf' to '/u01/app/oracle/oradata/ora11g/temp01.dbf';
옮기고
SYS@ora11g> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ora11g/temp01.dbf
확인
9. DB 열기 : 파일을 재생성한 것이 아니기 때문에 그냥 열어도 OK
SYS@ora11g> alter database open;
10. 지금 DB 가 pfile 로 띄워져 있는 상태이고, 지금의 파일들 위치는 spfile 이 모르는 상태이기 때문에
파일 위치를 아는 pfile 로 spfile 만들기
SYS@ora11g> create spfile from pfile;
File created.
11. DB 를 정상적으로 내렸다가 다시 올리면: DB가 다시 spfile 로 띄워지게 된다.
SYS@ora11g> shutdown immediate
SYS@ora11g> startup
DB 가 spfile 로 띄워져 있는지 확인해보기
SYS@ora11g> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.4/db_1/dbs/spfileora11g.ora
spfile 로 잘 띄워져 있다.
2024년 1월 30일 4교시 질문 투성이 블록 체인지 트래킹 (0) | 2024.01.30 |
---|---|
2024년 1월 30일 3교시 RMAN 풀 백업, 인크레멘털 백업 (0) | 2024.01.30 |
2024년 1월 30일 1교시 모든 데이터파일, 컨트롤파일, 리두로그 파일이 손상되었을 때 RMAN으로 복구하기 (2) | 2024.01.30 |
2024년 1월 29일 5교시 백업셋과 백업피스 크기 제한하기, 이미지 카피 백업 (0) | 2024.01.29 |
2024년 1월 29일 4교시+5교시 앞부분 : 컨트롤파일과 데이터파일들이 몽땅 깨졌을 때 RMAN으로 복구하기 / 컨트롤파일과 리두로그 파일이 깨졌을 때 RMAN으로 복구하기 (0) | 2024.01.29 |