DATOR


B&R4. SPFILE 백업 및 복구 DBMS B&R


 SPFILE은 실제 데이터가 담겨있는 파일은 아니지만, 인스턴스 Startup시 필요한 설정들이 담겨 있는 중요한 파일이다.
 이번 장에서는 SPFILE과 Control File의 백업 및 복구에 대해 알아보도록 한다.

1. 백업 방법
 SPFILE은 sys계정이 SQL문장으로 생성하는 방법과 OS의 CP를 통해 복사해 두는 등 크게 두가지 방법으로 백업이 가능 하다.
 먼저 SPFILE을 백업할 디렉토리를 생성하고 두가지 방법으로 두 백업 및 복구를 진행 하도록 한다.

mkdir -p /u02/spbkg/

(1) SQL구문을 이용해 생성
 SQL구문을 통해서 SPFILE을 생성하는 방법은 아래와 같다.
SQL> create pfile='/u02/spbkg/initorcl.bkg.20120214'  from   spfile ;
 
(2) OS CP를 통해 복사
CP 명령어로 백업 받는 것은 별 다를 바 없이 아래와 같이 사용할 수 있다.
cp /u01/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora /u02/spbkg/spfileorcl.ora.bkg

조회를 해 보면 아래와 같이 SPFILE이 생성되었음을 확인 할 수 있다.
ls /u02/spbkg/ initorcl.bkg.20120214  spfileorcl.ora.bkg

2. 데이터 파일 유실 및 장애 발생
 아래와 같이 데이터 파일을 삭제한다.
rm -rf /u01/app/oracle/product/10.2.0/db_1/dbs/s/dbs/spfileorcl.ora
rm -rf /u01/app/oracle/product/10.2.0/db_1/dbs/s/dbs/spfile.ora
rm -rf /u01/app/oracle/product/10.2.0/db_1/dbs/s/dbs/initorcl.ora
  SPFILE을 유실한다고 해서 바로 데이터베이스에 장애 사항이 나타나지는 않는 다.
 아래와 같이 HR계정으로 접속해 SQL문을 조회해보면 정상적으로 쿼리가 조회된다.

SQL> conn hr/hr
Connected.
SQL> select last_name from employees where rownum = 1;

LAST_NAME
---------------------------------------------------------------------------
Abel

 sys계정으로 접속해 SPFILE의 정보를 수정해도 에러가 발생하지는 않는 다.

SQL> conn / as sysdba
Connected.
SQL> alter system set undo_management=manual scope=spfile ;

System altered.

 물론 이 상태로 운영은 가능 할 수 있다.
 하지만 정기정검이나, 부득이 한 사정으로 셧다운 된 후 스타트업을 시킬 때 SPFILE이 없다면 인스턴스를 오픈 할 수 없다.
 아래와 같이 데이터베이스를 셧다운 후 다시 기동을 시도해 본다.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

3. SPFILE 복구
 SPFILE이 없어 스타트업을 할 수 없다. 백업본을 이용해 SPFILE을 복구한다.

SQL> create spfile from   pfile='/u02/spbkg/initorcl.bkg.20120214';

File created.

SPFILE이 생성되었다. 이제 다시 인스턴스를 스타트 업 한다.

SQL> startup
ORACLE instance started.

Total System Global Area  608174080 bytes
Fixed Size                  1220820 bytes
Variable Size             222301996 bytes
Database Buffers          377487360 bytes
Redo Buffers                7163904 bytes
Database mounted.
Database opened.

정상적으로 스타트 업 되었다.
 백업된 파일을 이용해 다음과 같이 OS cp를 이용해 복구해도 무방하다.
 cp /u02/spbkg/spfileorcl.ora.bkg  $ORACLE_HOME/dbs/spfileorcl.ora

 백업이 잘 된 것 같지만 주의 사항이 있다.
 실습 중 alter system 명령을 통해 undo_managementmanual로 변경하였었지만, 파라미터를 조회하면 아래와 같이 변경된 내용은 저장 되지 않았음을 알 수 있다.

 SQL> show parameter undo_management

NAME                        TYPE                           VALUE
--------------------- ----------------------- ------------------------------
undo_management      string                            AUTO

 실습에서는 이 설정을 기본 설정으로 두는 것이 더 낫기 때문에 이대로 사용하지만, 만약 운영환경에서 중요한 파라미터를 변경하였다면 반드시 백업을 받아 두어 장애시 백업 작업 이후로 파라미터 변경을 하는 이중 작업을 줄 일 필요성이 있다.

Tag :

Leave Comments