Amazon Web Services(AWS) 환경에서는 Oracle Database 9i Release 2 이상 버전부터 Oracle® 데이터베이스 백업이 가능합니다. 백업 작업에는 Oracle Secure Backup(OSB) 클라우드 모듈을 사용하며, 단 OSB는 운영체제 파일의 백업은 지원하지 않는다는 점에 유의해야 합니다.
개요
Oracle Database 9i Release 2부터 Recovery Manager(RMAN)를 사용해 Amazon S3에 OSB 기반 백업을 수행할 수 있습니다. 다만, 이 모듈로는 운영체제(OS) 파일의 백업은 불가능합니다.
Amazon S3는 디스크 기반 스토리지로서 테이프 미디어보다 본질적으로 더 높은 신뢰성을 제공합니다. 인터넷 스토리지 서비스 업체는 가용성과 확장성을 위해 여러 개의 중복 복사본을 보관하므로, 조직은 더욱 안정적인 데이터 관리의 혜택을 누릴 수 있습니다.
사전 요구 사항
이 가이드를 따라 하기 전에 아래 요구 사항을 확인하세요.
S3 접속용 액세스 키, 시크릿 액세스 키 또는 IAM 역할
AWS 계정과 AWS S3에 대한 전체 액세스 권한을 가진 IAM(Identity and Access Management) 사용자가 필요합니다. 설정 과정에서는 IAM 역할 또는 IAM 사용자의 액세스 키와 시크릿 액세스 키를 사용합니다.
AWS용 OSB 모듈
AWS용 OSB 모듈은 Oracle 공식 다운로드 페이지에서 내려받을 수 있습니다.
Oracle Technology Network(OTN) 계정
설치 과정에서 OTN 계정의 사용자 이름과 비밀번호를 입력해야 합니다.
Java 1.7 이상
진행하기 전에 서버에 Java® 1.7 이상 버전이 설치되어 있어야 합니다. 다음 명령어로 Java 버전을 확인할 수 있습니다:
$java -version
지원 플랫폼
- Linux® x86-64
- Microsoft® Windows® (64비트)
- SPARC 기반 Oracle Solaris (64비트)
- Oracle Solaris X64
- ZLinux-64
- AIX (PPC64)
- HP-UX® IA64
참고: HP-UX PA-RISC 64비트는 지원되지 않습니다.
Oracle 12cR2 설치
다음 절차에 따라 Oracle 12cR2를 설치합니다:
- wallet 디렉터리를 생성하여 AWS 액세스 키, 시크릿 액세스 키 또는 IAM 역할 정보를 저장합니다.
- 요구 사항 섹션의 링크에서 내려받은 osbws_installer.zip 파일의 압축을 해제합니다.
- 아래 명령어를 실행하여 Amazon S3용 OSB 클라우드 모듈을 ORACLE_HOME 디렉터리에 설치합니다. 각 항목은 자신의 환경에 맞게 수정하세요.
Microsoft Windows의 경우:
set ORACLE_HOME=C:\oracle\product\12.2.0\Oracle12cR2
set ORACLE_SID=TEST
Linux의 경우:
export ORACLE_HOME=C:\oracle\product\12.2.0\Oracle12cR2
export ORACLE_SID=TEST
$ java -jar osbws_install.jar -AWSID XxXxX -AWSKey XxXxX -walletDir $ORACLE_HOME/osbws_wallet -libDir $ORACLE_HOME/lib -location eu-west-2 -awsEndPoint s3-eu-west-2.amazonaws.com -otnUser mmahajan@test.com -otnPass xxxxx
또는 IAM 역할을 사용하는 방식입니다:
$ java -jar osbws_install.jar -IAMRole xxxxx -walletDir "$ORACLE_HOME\osbws_wallet" -libDir "$ORACLE_HOME\lib" -otnUser mmahajan@test.com -otnPass xxxx
RMAN을 통한 OSB 설치 및 백업 수행
설치 과정에서 $ORACLE_HOME/dbs 경로에 채널 할당 명령에 사용될 파일(일반적으로 osb<SID>.ora)이 생성됩니다. 이 파일을 참조할 때는 반드시 전체 경로를 사용해야 합니다.
다음은 샘플 SID를 사용한 예시입니다. OSBTEST.ora 파일의 파라미터 예시는 다음과 같습니다:
++++++++++++++++++++++++++++++++++++++++++++++
OSB_WS_HOST=https://s3.amazonaws.com
OSB_WS_IAM_ROLE=iops-test-dev-ec2-role-policy
OSB_WS_BUCKET=test-ec2-backups
OSB_WS_WALLET='location=file:E:\oracle\product\12.2.0\Oracle12cR2\osbws_wallet CREDENTIAL_ALIAS=aws-itco_aws'
+++++++++++++++++++++++++++++++++++++++++++++++
또는 리전별 엔드포인트를 지정하는 방식입니다:
++++++++++++++++++++++++++++++++++++++++++++++
OSB_WS_HOST=https://s3-eu-west-1.amazonaws.com
OSB_WS_LOCATION=eu-west-1
OSB_WS_BUCKET=test-ec2-backups
OSB_WS_WALLET='location=file:E:\oracle\product\12.2.0\Oracle12cR2\osbws_wallet CREDENTIAL_ALIAS=aws-itco_aws'
+++++++++++++++++++++++++++++++++++++++++++++++
다음 예시는 SBT_TAPE 유형의 채널을 할당한 후 컨트롤 파일(controlfile)과 데이터파일 1(datafile 1)을 백업하는 과정입니다:
D:\OSB>rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Thu Dec 17 13:38:07 2019
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST (DBID=2717091126)
RMAN> run
2> {
3> allocate channel c1 device type sbt parms='SBT_LIBRARY=E:\oracle\product\12.2.0\Oracle12cR2\lib\oraosbws.dll,SBT_PARMS=(OSB_WS_PFILE=E:\oracle\product\12.2.0\Oracle12cR2\database\osbwsSDMS.ora)';
4> backup current controlfile;
5> }
allocated channel: c1
channel c1: SID=50 device type=SBT_TAPE
channel c1: Oracle Secure Backup Web Services Library VER=3.17.4.21
Starting backup at 17-DEC-19
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 17-DEC-19
channel c1: finished piece 1 at 17-DEC-19
piece handle=3iujli8o_1_1 tag=TAG20191217T144544 comment=API Version 2.0,MMS Version 3.17.4.21
channel c1: backup set complete, elapsed time: 00:00:07
Finished backup at 17-DEC-19
Starting Control File and SPFILE Autobackup on 17-DEC-19
piece handle=c-2467059049-20191217-00 comment=API Version 2.0,MMS Version 3.17.4.21
Finished Control File and SPFILE Autobackup on 17-DEC-19
released channel: c1
RMAN> run
2> {
3> allocate channel c1 device type sbt parms='SBT_LIBRARY=E:\oracle\product\12.2.0\Oracle12cR2\lib\oraosbws.dll,SBT_PARMS=(OSB_WS_PFILE=E:\oracle\product\12.2.0\Oracle12cR2\database\osbwsSDMS.ora)';
4> backup datafile 1;
5> }
allocated channel: c1
channel c1: SID=50 device type=SBT_TAPE
channel c1: Oracle Secure Backup Web Services Library VER=3.17.4.21
Starting backup on 17-DEC-19
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=F:\ORADATA\SDMS\SYSTEM01.DBF
channel c1: starting piece 1 on 17-DEC-19
channel c1: finished piece 1 at 17-DEC-19
piece handle=3kujlia1_1_1 tag=TAG20191217T144625 comment=API Version 2.0,MMS Version 3.17.4.21
channel c1: backup set complete, elapsed time: 00:03:15
Finished backup on 17-DEC-19
Starting Control File and SPFILE Autobackup on 17-DEC-19
piece handle=c-2467059049-20191217-01 comment=API Version 2.0,MMS Version 3.17.4.21
Finished Control File and SPFILE Autobackup on 17-DEC-19
released channel: c1
백업 세트 목록 조회
다음 명령어를 실행하면 컨트롤 파일과 데이터파일 1의 백업 세트 목록을 확인할 수 있습니다:
RMAN> list backup of controlfile;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
113 Full 18.75M SBT_TAPE 00:00:01 17-DEC-19
BP Key: 113 Status: AVAILABLE Compressed: NO Tag: TAG20191217T144940
Handle: c-2467059049-20191217-01 Media: s3.amazonaws.com/sdms-ec2-backups
Control File Included: Ckp SCN: 64476065 Ckp time: 17-DEC-19
RMAN> list backup of datafile 1;
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
112 Full 733.25M SBT_TAPE 00:02:46 17-DEC-19
BP Key: 112 Status: AVAILABLE Compressed: NO Tag: TAG20191217T144625
Handle: 3kujlia1_1_1 Media: s3.amazonaws.com/sdms-ec2-backups
백업 세트 112에 포함된 데이터파일 목록은 다음과 같습니다:
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 64474680 17-DEC-19 NO F:\ORADATA\SDMS\SYSTEM01.DBF
설치 시 발생 가능한 오류
백업 진행 중 ORA-03113 오류가 발생할 수 있으며, 이 경우 Metalink 노트 2396267.1을 참조하여 문제를 해결할 수 있습니다:
PSDRPC returns significant error 3113.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of allocate command on c1 channel at 12/16/2019 15:49:58
ORA-03113: end-of-file on communication channel
다음과 같은 오류가 얼럿 로그(alert log)에 기록될 수 있습니다:
ORA-07445: exception encountered: core dump [PC:0x7FEDDB54FBC] [ACCESS_VIOLATION] [ADDR:0x0] [PC:0x7FEDDB54FBC] [UNABLE_TO_READ] []
Incident details in: <path>\incident\incdir_249332\<oracle_sid>_ora_30776_i249332.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Fri Apr 13 10:01:59 2018
Dumping diagnostic data in directory=[cdmp_20180413100159], requested by (instance=1, osid=30776), summary=[incident=249332].
오류 원인
이 설치 오류는 실행 중인 데이터베이스 서비스가 SBT(Serial Backup Tape) 라이브러리를 잠그고(lock) 있기 때문에 발생합니다.
해결 방법은 다음과 같습니다:
- 데이터베이스를 종료(shutdown)합니다.
- 앞서 설명한 절차에 따라 Oracle Cloud Backup 모듈을 재설치합니다.
결론
이 글에서는 Amazon S3에 RMAN 데이터베이스 백업을 수행하는 절차를 살펴보았습니다. OSB 클라우드 모듈을 통해 Amazon S3 스토리지에 저장된 백업은 언제든지 접근 가능합니다. 클라우드 스토리지 서비스의 가용성과 접근 모델은 조직의 복구 작업을 크게 간소화해 줍니다. 예를 들어, 복원 작업을 수행하기 전에 테이프를 배송하거나 로딩할 필요가 없습니다.
궁금한 점이나 의견이 있다면 피드백 탭을 이용해 남겨주세요. 지금 바로 채팅으로 대화를 시작할 수도 있습니다.