#) redo log 정보 확인
select * from v$log;
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status, b.first_time, b.first_change#, b.next_change#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 로그 스위치 발생
alter system switch logfile;
#) 테이블 생성 후 확인
create table hr.new_20240126 as select * from hr.employees;
select count(*) from hr.new_20240126;
#) 로그 스위치 발생
alter system switch logfile;
#) OS로 나와서 디렉터리 생성
[oracle1@oracle ~]$ mkdir rman_clone
[oracle1@oracle ~]$ cd rman_clone/
[oracle1@oracle rman_clone]$ pwd
/home/oracle1/rman_clone
#) rman 으로 접속
[oracle1@oracle ~]$ rman target /
#) 스키마 확인
RMAN> report schema;
#) 백업 확인 후 삭제
RMAN> list backup;
RMAN> delete backup;
#) 별도의 공간에 백업본 받기
=> /home/oracle1/rman_clone
#1) %d : 데이터베이스 이름
#2) %U : %u_%p_%c backupset 번호와 생성된 시간을 조합한 8자리번호(고유한이름)_backupset piece 번호_중복되는 backup piece 내에서 backup piece의 고유번호
#3) %T : 날짜정보(backup 되는 날짜)
RMAN> backup as compressed backupset format '/home/oracle1/rman_clone/%d_%U_%T' database include current controlfile;
#) backup 확인
RMAN> list backup;
#) 이전의 아카이브 확인
RMAN> report obsolete;
#) 기존 backup 파일 삭제
RMAN> delete obsolete;
#) 다시 아카이브 확인
RMAN> report obsolete;
tip) 필요없는 아카이브 삭제 후 아카이브 로그 파일이 있는지 확인
RMAN> crosscheck archivelog all;
RMAN> list expired archivelog all;
RMAN> report obsolete;
=> control file copy 가 있다면?
RMAS> crosscheck copy;
RMAS> delete copy;
RMAN> report obsolete;
#) oracle 접속 후 redo log 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status, b.first_time, b.first_change#, b.next_change#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 로그 스위치 발생*3
alter system switch logfile;
#) redo log 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status, b.first_time, b.first_change#, b.next_change#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 아카이브 확인
! ls /home/oracle1/arch1
#) 시간 확인
select systimestamp from dual;
#) 테이블 조회
select count(*) from hr.new_20240126;
#) 테이블 삭제
drop table hr.new_20240126;
#) 로그 스위치 발생*2
alter system switch logfile;
#) 아카이브 정보
select sequence#, name
from v$archived_log
where name is not null;
#) OS 나와서 초기파라미터 수정
[oracle1@oracle ~]$ cd $ORACLE_HOME/dbs
[oracle1@oracle dbs]$ ls
[oracle1@oracle dbs]$ vi initclone.ora
compatible = '11.2.0.4.0'
*.control_files='/home/oracle1/rman_clone/control01.ctl'
*.db_name='clone'
*.log_archive_dest_1='location=/home/oracle1/rman_clone mandatory'
*.log_archive_format='arch_%t_%s_%r.arc'
*.undo_tablespace='UNDO1'
db_file_name_convert=('/u01/app/oracle/oradata/ora11g/','/home/oracle1/rman_clone/')
log_file_name_convert=('/u01/app/oracle/oradata/ora11g/','/home/oracle1/rman_clone/')
:wq!(저장)
#) 아카이브 파일 옮기기
[oracle1@oracle ~]$ cp -av /home/oracle1/arch1/*.* /home/oracle1/rman_clone
[oracle1@oracle ~]$ cd rman_clone/
[oracle1@oracle rman_clone]$ ls
arch_1_10_1159199033.arc arch_1_12_1159199033.arc arch_1_9_1159199033.arc
arch_1_11_1159199033.arc arch_1_8_1159199033.arc ORA11G_162hicjt_1_1_20240126(백업정보)
#) control file 옮기기
[oracle1@oracle ~]$ cp -av /u01/app/oracle/fast_recovery_area/ORA11G/autobackup/2024_01_26/o1_mf_s_1159279278_lv6h4yft_.bkp /home/oracle1/rman_clone
[oracle1@oracle ~]$ cd rman_clone/
[oracle1@oracle rman_clone]$ ls
arch_1_10_1159199033.arc arch_1_8_1159199033.arc ORA11G_162hicjt_1_1_20240126
arch_1_11_1159199033.arc arch_1_9_1159199033.arc
arch_1_12_1159199033.arc o1_mf_s_1159279278_lv6h4yft_.bkp(control file)
#) clone DB 접속
=> 물리적 위치 확인
[oracle1@oracle ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0.4/db_1
[oracle1@oracle ~]$ . oraenv
ORACLE_SID = [ora11g] ? clone
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/11.2.0.4/db_1
The Oracle base remains unchanged with value /u01/app/oracle
#) sql 접속
[oracle1@oracle ~]$ sqlplus / as sysdba
#) 비정상적인 종료 DB 후 다시 접속
shutdown abort
exit
[oracle1@oracle ~]$ sqlplus / as sysdba
#) startup nomount 하기
startup pfile=$ORACLE_HOME/dbs/initclone.ora nomount
#) OS 로 나와서 rman 접속
exit
[oracle1@oracle ~]$ rman auxiliary /
#) 복구 하기
DUPLICATE DATABASE TO 'clone'
pfile='/u01/app/oracle/product/11.2.0.4/db_1/dbs/initclone.ora'
nofilenamecheck
backup location '/home/oracle1/rman_clone'
until time "to_date('2024-01-26 14.12.00','yyyy-mm-dd hh24:mi:ss')";
...
#) rman 나와서 cloneDB 접속
RMAN> exit
[oracle1@oracle ~]$ sqlplus / as sysdba
#) hr 계정 접속 후 테이블 확인
conn hr/hr
select * from tab;
#) os로 나와서 export 하기
[oracle1@oracle ~]$ exp system/oracle tables=hr.new_20240126 file=new_20240126.dmp
#) 생성되었는지 확인
#) ora11g oracle 접속
[oracle1@oracle ~]$ . oraenv
ORACLE_SID = [clone] ? ora11g
#) ora11g 접속
[oracle1@oracle ~]$ sqlplus / as sysdba
#) table 확인
select count(*) from hr.new_20240126;
#) os로 나와서 import 하기
[oracle1@oracle ~]$ imp system/oracle tables=new_20240126 file=new_20240126.dmp fromuser=hr
#) oracle 접속
[oracle1@oracle ~]$ sqlplus / as sysdba
#) clone DB에 있는 테이블이 import 되었는지 확인
select count(*) from hr.new_20240126;
'Backup > RMAN' 카테고리의 다른 글
control file이 장애 났을 경우 ⓐ (0) | 2024.01.29 |
---|---|
CANCEL BASED RECOVERY (1) | 2024.01.26 |
clone DB 생성 후 운영 중인 table 삭제했을 경우 (1) | 2024.01.26 |
백업 받은 tablespace 운영 중에 삭제했을 경우 (1) | 2024.01.25 |
OS 에서 Backup File 지웠을 경우 (0) | 2024.01.25 |