환경 구성
| 구분 | 사양 |
|---|---|
| 원본 서버 | Windows Server 2008 R2 (32-bit), Oracle 11.2.0.1.0 |
| 대상 서버 | Windows Server 2012 Standard (64-bit), Oracle 11.2.0.1.0 |
| 백업 솔루션 | EMC Avamar 7.5.1 |
백업 스크립트 구조
Avamar에서 자동 생성한 RMAN 채널 설정은 다음과 같이 구성됩니다:
RUN {
CONFIGURE CONTROLFILE AUTOBACKUP ON;
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT TO 'CTL_%F';
ALLOCATE CHANNEL ch1 TYPE SBT
PARMS="SBT_LIBRARY=C:\PROGRA~1\avs\bin\LIBOBK~1.DLL"
FORMAT '%d_%U';
SEND CHANNEL 'ch1'
'"--libport=55154"
"--cacheprefix=ORCL_ch1"
"--sysdir=C:\Program Files\avs\etc"';
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE INPUT;
}
복구 과정 및 장애 발생
1단계: 인스턴스 준비
DBCA로 동일한 SID로 인스턴스를 생성한 후, 제어 파일을 복원하여 복구를 시작합니다.
2단계: 아카이브 갭 발생
초기 복구 시 SCN 동기화를 고려하지 않아 다음 오류가 발생했습니다:
아카이브 로그 시퀀스=29360 삭제 완료
아카이브 로그를 찾을 수 없음: 시퀀스=29361, 스레드=1
RMAN-06054: 미디어 복구에서 알 수 없는 스레드 1 시퀀스 29361의
아카이브 로그 및 시작 SCN 983751610을 요청함
SCN 기반 복구로 전환하여 Avamar에서 복구 완료 표시가 났으나, 실제 연결 시 치명적 오류가 발생했습니다.
3단계: LBAC 보안 모듈 오류
RMAN-04005: 대상 데이터베이스에 오류 존재:
ORA-12432: LBAC 오류: zllesesinit:OCIStmtExecute
SQL*Plus로 SYSDBA 접속은 가능했으나, 쿼리 실행 시 다음 오류가 발생했습니다:
ORA-01012: 로그온되지 않음
해결 절차
단계별 복구 시퀀스
Linux 환경의 표준 해결책(lbac_off 컴파일)이 Windows에서 적용 불가하여 대체 접근법을 시도했습니다.
첫 번째 시도
SQL> SHUTDOWN ABORT;
SQL> STARTUP MIGRATE;
SQL> @?\rdbms\admin\catnools.sql
결과: PLS-801 내부 오류 발생
두 번째 시도
SQL> SHUTDOWN ABORT;
SQL> STARTUP UPGRADE;
SQL> @?\rdbms\admin\utlirp.sql;
SQL> SHUTDOWN IMMEDIATE;
결과: 동일한 ORA-12432 오류 재발
세 번째 시도
SQL> SHUTDOWN ABORT;
SQL> STARTUP UPGRADE;
SQL> @?\rdbms\admin\utlrp.sql;
결과: 무한 대기 상태 발생
최종 성공 시퀀스
별도 세션에서 재시도하여 예상치 못하게 성공했습니다:
-- 세션 1: 강제 종료 후 마이그레이션 모드
SQL> SHUTDOWN ABORT;
SQL> STARTUP MIGRATE;
-- 세션 2: LBAC 컴포넌트 제거
SQL> @?\rdbms\admin\catnools.sql;
-- 정상 모드 전환
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
-- 검증
SQL> SELECT banner FROM v$version WHERE ROWNUM = 1;
핵심 원인 분석
| 오류 코드 | 원인 | 해결 핵심 |
|---|---|---|
| ORA-01012 | 세션 비정상 종료 후 메모리 잔여 | SHUTDOWN ABORT로 정리 |
| ORA-12432 | LBAC(Label-Based Access Control) 모듈 초기화 실패 | catnools.sql로 컴포넌트 제거 |
| PLS-801 | 32→64비트 마이그레이션 시 PL/SQL 객체 불일치 | utlirp/utlrp 재컴파일 시도 |
운영 권고사항
- 플랫폼 전환 시: 32비트→64비트 복구 전에 반드시
utlirp.sql실행 계획 수립 - SCN 관리: 복구 시작 전
SET UNTIL SCN또는SET UNTIL TIME명시적 지정 - LBAC 점검: 원본 DB에서
SELECT * FROM dba_ols_status;로 보안 옵션 사용 여부 확인 - Windows 특화:
make명령 사용 불가 시, 레지스트리 기반 옵션 비활성화 고려