본문 바로가기

Oracle/admin

archive mode로 변경과 백업및 복구방법


 

아카이브변경

 

1. 

SQL> alter system set log_archive_dest_1='location=/oracle/arc_back' scope=spfile;


2.

SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;

 

3.

os상에서 oracle/product/102/db_1/dbs/initorcl.ora 파일을 찾아서 삭제한다.

 

4.

SQL>create pfile from spfile;


SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
-->여기까지 archive 적용완료

 

test

1.test를 위해서 콜드백업을 받아야한다.

우선 sql문을 수행하여 백업받을 파일들을 확인한다.

 

나의 database 파일목록이다.

 

select name from v$controlfile;

/oracle/oradata/orcl/control01.ctl
/oracle/oradata/orcl/control02.ctl
/oracle/oradata/orcl/control03.ctl

select member from v$logfile;

/oracle/oradata/orcl/redo03.log
/oracle/oradata/orcl/redo02.log
/oracle/oradata/orcl/redo01.log

select name from v$datafile;

/oracle/oradata/orcl/system01.dbf
/oracle/oradata/orcl/undotbs01.dbf
/oracle/oradata/orcl/sysaux01.dbf
/oracle/oradata/orcl/users01.dbf
/oracle/oradata/orcl/example01.dbf

 

 위에 나열된 파일들을 Database를 내린후에 OS상에서 copy명령을 통해 백업받아 두자.

&ORACLE_HOME/dbs/initorcl.ora <--파라메터파일은 중요한 파일이므로 만약을 대비해 copy를 꼭 해두자

 

데이터베이스를 shutdown immediate 하고

os상의 명령어를 통해 위의 목록들을 백업받을 공간에 카피해둔다.

다시 데이터베이스를 startup하고 다음과 같이 한다.

 

SQL> alter system switch logfile;

자신이 지정해놓은 archive 파일경로에 파일이 생성되는지 확인후

 

생성이 되면 여러번 로그스위치를 강제로 일으켜준다.

 

2.

#>oracle/oradata/orcl에서 임의로 파일 하나를 삭제한다.

 

3.

SQL>shutdown immeate;

SQL>startup

ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              96470608 bytes
Database Buffers          184549376 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/oracle/oradata/orcl/users01.dbf'

 

해당 데이터파일을 찾을수 없다면서 발생하는 error이다.

 

4.복구를 하기 위해

SQL>shutdown immediate;

 

os상에서 콜드백업을 받은 파일을 oradata/oracl/ 밑에 카피해서 복구해준다. 그리고 콜드백업을 한 시점 이후에 변경된 사항에 대해서 복구하기 위해 아카이브 로그파일을 적용해야 한다.

 

SQL>startup mount;

SQL>set autorecovery on; <--이 옵션을 주게 되면 완전복구를 하는 것이다. 만약 불완전 복구(특정한 시점으로 복구)를 하고자 할때는 이 옵션을 제외한다.

SQL>recover database;

하게 되면 자동으로 archive log가 적용되면서 적용되는 archive log파일을 보여준다.

 

그리고 Media recovery complete. 라는 문구가 떨어지면

복구가 완료된것이다.

SQL>alter database open;