적용 대상:
Oracle 데이터베이스 - 11gR2
문제:
벤치마킹 테스트를 수행하는 동안 새로운 실행을 시작하기 전에 클린 데이터베이스를 로드해야 하는 경우가 많습니다. 클린 데이터베이스를 보장하는 한 가지 방법은 각 테스트 실행 전에 전체 데이터베이스를 다시 생성하는 것이지만 크기에 따라 이 방법은 시간이 오래 걸리거나 비효율적일 수 있습니다.
해결 방법:
이 문서에서는 Oracle의 플래시백 기능을 사용하여 워크로드를 실행하기 직전 상태로 데이터베이스를 신속하게 복구하는 방법에 대해 설명합니다. 특히 이 문서에서는 '복원 지점 보장'을 사용하는 방법에 대해 설명합니다.
복원 지점:
복원 지점에는 아무 것도 없지만, 이름은 데이터베이스의 타임스탬프 또는 SCN과 연결되어 있습니다. 누구나 일반 복원 지점 또는 보장된 복원 지점을 생성할 수 있습니다. 두 기능 간의 차이는 복원 지점을 보장함으로써 DB_FLASHBACK_RETENTION_TARGET 초기화 매개 변수에 관계없이 복원 지점으로 플래시백할 수 있다는 점입니다. 즉, 플래시 복원 영역에 충분한 공간이 있을 경우 언제나 사용할 수 있습니다.
참고: 이 문서에서는 플래시백 로깅이 설정되어 있지 않습니다.
복원 지점 보장:
사전 구성 요소: 보장된 복원 지점을 생성하려면 다음과 같은 사전 요구 사항을 충족해야 합니다.
- 사용자에게 SYSDBA 시스템 권한이 있어야 합니다.
- 플래시 복원 영역을 생성해야 합니다.
- 데이터베이스가 ARCHIVELOG 모드여야 합니다.
보장된 복원 지점 만들기:
새 데이터베이스를 만들거나 마이그레이션한 후에는 먼저 새 워크로드를 시작하기 전에 플래시백할 수 있는 보장된 복원 지점을 만들어야 합니다. 단계는 다음과 같습니다.
- $> su – oracle
- $> sqlplus / as sysdba;
- ARCHIVELOG가 활성화되어 있는지 확인합니다.
SQL>select log_mode from v$database;
3단계에서 ARCHIVELOG가 활성화되어 있지 않다고 표시되면 아래의 8단계로 건너뜁니다.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
여기서 CLEAN_DB는 보장된 복원 지점에 지정된 이름입니다.
보장된 복원 지점 보기
SQL> select * from v$restore_point;
새로 생성된 복원 지점에 대한 정보를 확인합니다. 또한 참조용 SCN#을 기록해 둡니다. 이를 "참조 SCN#"이라고 합니다.
보장된 복원 지점으로 플래시백
이제 데이터베이스를 보장된 복원 지점으로 복구하려면 다음을 따르십시오.
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
위의 9단계에서 확인한 SCN#을 참조 SCN#과 비교합니다.
참고: 위의 9단계에서 SCN#이 반드시 참조 SCN#으로서의 SCN#과 일치하지는 않을 수 있지만 상당히 근접합니다.
참고 자료: