[준비작업]
# ★데이터 파일, 리두 로그 파일 위치 변경 작업, 데이터 이관작업
alter database rename file '이전파일' to '새로운 파일';
#) data file
select 'alter database rename file ''' || name ||''' to ''/home/oracle1/ora_data/'';'
from v$datafile;
#) temp file
select 'alter database rename file ''' || name ||''' to ''/home/oracle1/ora_data/'';'
from v$tempfile;
#) redo file
select 'alter database rename file ''' || member ||''' to ''/home/oracle1/ora_data/'';'
from v$logfile;
# 컨트롤 파일 위치 변경 작업
# 초기파라미터 파일 중 pfile을 수정해서 수행
이전 컨트롤 파일 위치
[oracle1@oracle ~]$ vi $ORACLE_HOME/dbs/initora11g.ora
*.control_files='/u01/app/oracle/oradata/ora11g/control01.ctl'
▼ 변경
*.control_files='/home/oracle/ora_data/control01.ctl'
[확인 작업]
# spfile 확인
show parameter spfile
# pfile 생성
create pfile from spfile;
# 백업본 체크하기
SQL> !
#) 백업본 위치 확인. (제일 중요!)
[oracle1@oracle ~]$ cd backup/noarch/20240110/
[oracle1@oracle 20240110]$ ls
# 파일 확인
#1) data file 확인
select name from v$datafile;
#2) temp file 확인
select name from v$tempfile;
#3) control file 확인
select name from v$controlfile;
#4) redo log file 확인
select member from v$logfile;
[진행 start]
# 장애유발 #
# 전체 파일 삭제
[oracle1@oracle ~]$ cd /u01/app/oracle/oradata/ora11g/
[oracle1@oracle ora11g]$ ls
control01.ctl redo07.log redo09.log system01.dbf undotbs01.dbf
example01.dbf redo08.log sysaux01.dbf temp01.dbf users01.dbf
[oracle1@oracle ora11g]$ pwd
/u01/app/oracle/oradata/ora11g
[oracle1@oracle ora11g]$ rm *.*
# checkpoint 유발! (DB 내려감)
[oracle1@oracle ora11g]$ exit
alter system checkpoint;
# 다시 오라클 로그인
conn / as sysdba
exit
# 백업본 있는지 체크 ( 백업본이 있는 위치로 파일 확인 )
[oracle1@oracle ~]$ ls backup/noarch/20240110/
control01.ctl redo07.log redo09.log system01.dbf undotbs01.dbf
example01.dbf redo08.log sysaux01.dbf temp01.dbf users01.dbf
# 디렉터리 생성
[oracle1@oracle ~]$ mkdir ora_data
[oracle1@oracle ~]$ cd ora_data/
[oracle1@oracle ora_data]$ pwd
/home/oracle1/ora_data
# 백업본 파일을 만든 디렉터리로 copy 하기
[oracle1@oracle ora_data]$ cp -av /home/oracle1/backup/noarch/20240110/*.* /home/oracle1/ora_data
# 백업 파일 옮겨졌는지 확인
[oracle1@oracle ora_data]$ ls
# 컨트롤 파일 위치 변경 작업
#1) 이전 컨트롤 파일 위치
[oracle1@oracle ~]$ vi $ORACLE_HOME/dbs/initora11g.ora
*.control_files='/u01/app/oracle/oradata/ora11g/control01.ctl' →
*.control_files='/home/oracle1/ora_data/control01.ctl'
#2) 초기 파라미터 파일 위치로 이동
[oracle1@oracle ora_data]$ cd $ORACLE_HOME/dbs
[oracle1@oracle dbs]$ ls
#3) control_file 변경된 위치 변경
[oracle1@oracle ~]$ vi $ORACLE_HOME/dbs/initora11g.ora
(수정)
*.control_files='/home/oracle1/ora_data/control01.ctl'
:wq(저장)
# 오라클로 접속
- 데이터베이스를 'mount단계' 까지 올려 놓기
- DB mount단계까지 올려두는 이유: 데이터파일, 리두로그 파일 위치 등를 변경하기 위함.
[oracle1@oracle dbs]$ sqlplus / as sysdba
#) startup 을 하되, pfile 로 mount 단계까지 하기.
(약간의 기도를 하면서 enter 키를 누른다..!)
startup pfile='$ORACLE_HOME/dbs/initora11g.ora' mount
# 변경된 control file의 경로 확인
show parameter control_files
# file 변경 (무리하게 한꺼번에 하지 말고 한 문장씩 던져보자..!)
#1) data file 변경
alter database rename file '/u01/app/oracle/oradata/ora11g/system01.dbf' to '/home/oracle1/ora_data/system01.dbf';
alter database rename file '/u01/app/oracle/oradata/ora11g/sysaux01.dbf' to '/home/oracle1/ora_data/sysaux01.dbf';
alter database rename file '/u01/app/oracle/oradata/ora11g/users01.dbf' to '/home/oracle1/ora_data/users01.dbf';
alter database rename file '/u01/app/oracle/oradata/ora11g/example01.dbf' to '/home/oracle1/ora_data/example01.dbf';
alter database rename file '/u01/app/oracle/oradata/ora11g/undotbs01.dbf' to '/home/oracle1/ora_data/undotbs01.dbf';
#2) temp file 변경
alter database rename file '/u01/app/oracle/oradata/ora11g/temp01.dbf' to '/home/oracle1/ora_data/temp01.dbf';
#3) redo file 변경
alter database rename file '/u01/app/oracle/oradata/ora11g/redo07.log' to '/home/oracle1/ora_data/redo07.log';
alter database rename file '/u01/app/oracle/oradata/ora11g/redo08.log' to '/home/oracle1/ora_data/redo08.log';
alter database rename file '/u01/app/oracle/oradata/ora11g/redo09.log' to '/home/oracle1/ora_data/redo09.log';
# DB 최종적으로 open 단계로 올리기
alter database open;
# select문 실행
#1) datafile 확인
select tablespace_name, file_name from dba_data_files;
#2) tempfile 확인
select name from v$tempfile;
#3) redo log file 확인
select member from v$logfile;
#4) control file 확인
select name from v$controlfile;
# 복구완료
'Backup > Noarchive Log Mode' 카테고리의 다른 글
Undo data file 손상 되었을 경우, 새로운 UNDO01.dbf 생성 후 적용 (0) | 2024.01.11 |
---|---|
SYSTEM TABLESPACE 속한 데이터 파일이 손상되었을 경우(backup 이후에 REDO 가 없을 경우) (0) | 2024.01.11 |
SYSTEM TABLESPACE에 속한 데이터 파일 손상되었을 경우 (backup 이후에 REDO 가 있을 경우) (0) | 2024.01.10 |
Noarchive Log Mode backup 기본 (1) | 2024.01.09 |
BackUp 받지 않는 Tablespace 손상되었을 경우 ⓒ (0) | 2024.01.09 |