Backup/Archive Log Mode

기존 위치가 아닌 새로운 위치로 복구

잇꼬 2024. 1. 15. 17:28
728x90
반응형
SMALL

# 테이블 생성
SQL> create table hr.emp_temp tablespace data01 as select * from hr.employees;


# 테이블 생성 확인
SQL> select count(*) from hr.emp_temp;


# redo log 정보 확인
- table 생성 
SQL> select * from v$log;



# 백업 정보 확인
select a.file#, a.name file_name, a.checkpoint_change#, b.status, b.change#, to_char(b.time, 'yyyy-mm-dd hh24:mi:ss')
from v$datafile a, v$backup b
where a.file# = b.file#;



# data01 tablespace 를 hot backup 받기
SQL> alter tablespace data01 begin backup;
=> checkpoint 발생, write 작업은 redo log에 하자


=> 무조건 begin backup 진행 하자!
SQL> ! cp -av /u01/app/oracle/oradata/ora11g/data01.dbf /home/oracle1/backup/arch/hot_20240112
‘/u01/app/oracle/oradata/ora11g/data01.dbf’ -> ‘/home/oracle1/backup/arch/hot_20240112/data01.dbf’


SQL> alter tablespace data01 end backup;

# 백업 확인 
=> scn 번호 확인
select a.file#, a.name file_name, a.checkpoint_change#, b.status, b.change#, to_char(b.time, 'yyyy-mm-dd hh24:mi:ss')
from v$datafile a, v$backup b
where a.file# = b.file#;


SQL> ! ls /home/oracle1/backup/arch/hot_20240112/


# redo log 정보 확인
SQL> select * from v$log;


# 테이블 생성 
SQL> create table hr.loc_temp tablespace data01 as select * from hr.locations;


# 테이블 생성 확인
SQL> select count(*) from hr.loc_temp;


# log switch 강제 3번 발생 
SQL> alter system switch logfile;


# redo log 확인
SQL> select * from v$log;



# archived_log 정보 확인 
select sequence#, name, first_change#, next_change#, next_time from v$archived_log;


#) 정보 확인
select f.tablespace_name, f.file_name
from dba_extents e, dba_data_files f
where f.file_id = e.file_id
and e.segment_name = 'LOC_TEMP'
and e.owner = 'HR';



# 장애 발생 #
SQL> ! rm /u01/app/oracle/oradata/ora11g/data01.dbf
# 확인
SQL> ! ls /u01/app/oracle/oradata/ora11g/data01.dbf
ls: cannot access /u01/app/oracle/oradata/ora11g/data01.dbf: No such file or directory



# offline 모드로 즉시 변경
SQL> alter tablespace data01 offline immediate;


# data file 확인 
SQL> select file#, name, status from v$datafile;


# 기존 위치가 아닌 새로운 위치로 복원 작업 수행
1. 백업 파일을 새로운 위치에 restore
SQL> ! cp -av /home/oracle1/backup/arch/hot_20240112/data01.dbf /home/oracle1
‘/home/oracle1/backup/arch/hot_20240112/data01.dbf’ -> ‘/home/oracle1/data01.dbf’

SQL> ! ls /home/oracle1/data01.dbf
/home/oracle1/data01.dbf



2. control file 에게 위치 변경 작업(rename file '이전 위치' to '새로운 위치')
SQL> alter database rename file '/u01/app/oracle/oradata/ora11g/data01.dbf' to '/home/oracle1/data01.dbf';


3. data file 정보 확인 
SQL> select file#, name, status from v$datafile;


4. recover, 복구 작업
SQL> recover tablespace data01;
ORA-00279: change 1003300 generated at 01/14/2024 21:06:56 needed for thread 1
ORA-00289: suggestion : /home/oracle1/arch2/arch_1_11_1157923223.arc
ORA-00280: change 1003300 for thread 1 is in sequence #11

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto(입력)


5. tablespace online 모드로 변경 
SQL> alter tablespace data01 online;


6. hr.loc_temp DB 확인 
SQL> select count(*) from hr.loc_temp;


# 새로운 위치 확인
SQL> select f.tablespace_name, f.file_name
from dba_extents e, dba_data_files f
where f.file_id = e.file_id
and e.segment_name = 'LOC_TEMP'
and e.owner = 'HR';

728x90
반응형
LIST