토폴로지 배치 준비
Data Guard가 작동하려면 서로 다른 지역에 있는 두 데이터베이스가 통신해야 합니다. 따라서 각 DRG를 통해 OCI의 두 영역 간에 원격 피어링 접속을 설정해야 합니다. DRG는 Azure 설정용 OracleDB에 의해 생성되므로 기존 DRG 간에 원격 피어링 연결만 설정하면 됩니다.
네트워크 설정
네트워크를 설정하려면 다음 단계를 수행합니다.
- Azure VM 및 Azure 데이터베이스 시스템용 OracleDB에 대한 네트워크 연결을 설정합니다.Set up network connectivity for the Azure VM and OracleDB for Azure database systems.
- Azure VM에서 사용 가능한 Oracle DB 시스템에 대한 SSH 전용 키가 있는지 확인합니다.
- Azure VM과 Azure DB 시스템용 OracleDB 간의 연결을 테스트합니다.Test the connectivity between the Azure VMs and the OracleDB for Azure DB systems.
- OCI에서 데이터베이스 시스템에 대한 네트워크를 설정합니다.
- 먼저 영역 1에서 DB 시스템의 VCN 세부정보로 이동하여 동적 경로 지정 게이트웨이 연결, DRG 이름 순으로 선택하여 DRG 세부정보를 영역 1로 로드합니다. 그런 다음 Remote Peering Connection Attachments를 선택합니다. 두번째 브라우저 window에서 영역 2에 대해 정확히 동일한 작업을 수행합니다.
- 다음으로 두 영역에서 원격 피어링 접속 생성을 선택하여 RPC를 생성합니다.
- 두 RPC가 모두 생성되면 영역 1에서 RPC 이름을 선택하고 OCID를 복사합니다.
- 영역 2에서 RPC 이름을 선택하고 연결 설정을 선택합니다. 영역 1에 대해 올바른 영역 이름(연결하려는 위치)을 선택하고 이전 단계에서 복사한 영역 1에서 RPC에 대한 OCID를 제공합니다. 연결을 설정한 후 잠시 후 피어 상태가 "피어링"이어야 합니다.
- 다음으로 두 지역의 VCN 간 트래픽을 허용합니다. VCN 세부 사항으로 이동하여 기본 보안 목록을 선택합니다. 반대 VCN의 CIDR 범위로부터의 트래픽을 허용하려면 수신 규칙 추가를 선택합니다.
- 마지막으로 Azure의 VM에서 각 OCI 기본 DB 시스템에 연결합니다. 다른 데이터베이스에 연결되도록 두 Base DB 시스템에 대한
tnsnames.ora
파일을 편집합니다. - 두 DB 시스템에서 반대 데이터베이스로
tnsping
가 제대로 작동하는지 확인합니다.
Oracle Database for Azure DR 구성 설정
Azure DR 구성을 위해 Oracle 데이터베이스를 설정하려면 아래 설명된 대로 기본 데이터베이스와 보조 데이터베이스를 모두 준비해야 합니다.To set up the Oracle database for Azure DR configuration, you need to prepare both a primary and a secondary database, as described below.
주:
명령줄에 붙여 넣기 위해 명령 예제를 클립보드에 저장하려면 복사를 누릅니다.variables
를 사용자의 구현과 관련된 값으로 바꿔야 합니다.
기본 데이터베이스 준비
기본 데이터베이스를 준비하려면 정적 리스너를 구성하고, tnsnames.ora 파일을 업데이트하고, 다양한 데이터베이스 설정 및 매개변수를 구성해야 합니다.
SQL>
프롬프트에서 다음 정보를 확인합니다.- 데이터베이스 플래시백이 사용으로 설정되었는지 확인하십시오.
- 데이터베이스 강제 로깅이 사용으로 설정되었는지 확인하십시오.
- 데이터베이스가 아카이브 로그 모드인지 확인합니다.
- 데이터베이스가 개방 모드인지 확인
- 데이터베이스가 기본 데이터베이스 롤에 있는지 확인하십시오.
select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
출력은 다음과 유사해야 합니다.LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE ---------------- ------------------------ ---------------------- -------------------- ----------------------- ARCHIVELOG YES YES READ WRITE PRIMARY
- 다음 명령을 실행하여 자동 standby file management가 auto로 설정되었는지 확인합니다.
show parameter standby_file_management
출력은 다음과 유사해야 합니다.NAME TYPE VALUE ------------------------------------ ----------- ---------- standby_file_management string AUTO
- Broker 구성 파일을 설정합니다.
show parameter dg_broker_config_file1;
출력은 다음과 유사해야 합니다.NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
다음 명령을 입력합니다.
show parameter dg_broker_config_file2;
출력은 다음과 유사해야 합니다.NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file2 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
- Data Guard broker를 활성화합니다.
show parameter dg_broker_start
출력은 다음과 유사해야 합니다.NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean FALSE
그런 다음 다음 다음 명령을 입력합니다.alter system set dg_broker_start=true scope=both;
show parameter dg_broker_start
출력은 다음과 유사해야 합니다.NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean TRUE
- 명령 프롬프트(예:
[oracle@ldbuksdr ]$
)에서 listerner 상태를 확인합니다.lsnrctl status
- 주 데이터베이스 구성 세부 정보:
srvctl config database -d db_unique_name
tns
항목을 확인합니다.cat $ORACLE_HOME/network/admin/tnsnames.ora
sqlnet.ora
출력에 유의하십시오.cat $ORACLE_HOME/network/admin/sqlnet.ora
- 다음 명령을 입력하여 Password File을
/tmp
위치의 standby DB 시스템에 복사합니다.cd .ssh
scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid
- 전자 지갑 파일을 찾아서
/tmp
위치의 standby DB 시스템에 복사합니다.select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
출력은 다음과 유사해야 합니다.CON_ID WRL_PARAMETER STATUS WALLET_TYPE ---------- ------------------------------------------------------------------------------ ------------ ------------ ---------------------------- 1 /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/ OPEN AUTOLOGIN 2 OPEN AUTOLOGIN 3 OPEN AUTOLOGIN
그리고 다음을 입력합니다.cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde ls -ltra
다음과 같은 결과가 표시됩니다.-rw------- 1 oracle asmadmin 5467 Jun 19 18:59 ewallet.p12 -rw------- 1 oracle asmadmin 5512 Jun 19 18:59 cwallet.sso
그런 다음 다음 다음 명령을 입력합니다. 여기서db_unique_name
은 전자 지갑 데이터베이스의 고유 이름입니다.[oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
chmod 777 /tmp/ewallet.p12
chmod 777 /tmp/cwallet.sso
scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
- 정적 리스너를 구성합니다.standby database의 초기 Instantiation을 위해서는 정적 리스너가 필요합니다. 데이터베이스가 작동 중지되면 정적 리스너가 Instance에 대한 원격 연결을 활성화하므로 Oracle Data Guard를 사용하여 Instance를 시작할 수 있습니다.
listener.ora
파일에 줄 바꿈이나 공백이 없어야 합니다.기본 데이터베이스에서
listener.ora
파일에SID_LIST_LISTENER
파일을 추가하여 기본 데이터베이스의 데이터베이스 고유 이름, Oracle 홈 및 Oracle SID(시스템 식별자)를 포함합니다.
다음 항목을lsnrctl status vi listener.ora
listener.ora
에 추가합니다. 설명:DB_UNIQUE_NAME
은 기본 데이터베이스의 고유한 이름입니다.ORACLE_HOME
는 기본 데이터베이스의 로컬 Oracle 홈입니다.ORACLE SID
는 기본 데이터베이스의 SID입니다.
항목은 다음과 유사해야 합니다.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE SID)))
GLOBAL_DBNAME
,ORACLE_HOME
및SID_NAME
에 대한 항목은 서로 다릅니다.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
리스너를 재로드하고 상태를 확인합니다.lsnrctl reload lsnrctl status
tns
항목을 구성합니다.리두 전송을 제대로 수행하려면 primary 및 standbytnsnames.ora
파일 모두에 각 데이터베이스에 대한 항목이 필요합니다. IP 주소는 서버 이름을 IP 주소로 분석하기 위해 데이터베이스 간에 DNS가 없기 때문에 사용됩니다. 다음 예를 사용하여 구성과 관련된 값을 바꿉니다. Oracle RAC(Oracle Real Application Clusters) 구성은 스캔 리스너 이름을 분석할 수 없으므로 주소 목록을 사용하여 모든 노드를 정의해야 합니다. 이러한 IP 주소는 나중에 추가됩니다. 초기 인스턴스는 Oracle Recovery Manager(RMAN)가 항상 동일한 노드에 연결되도록 하기 위해 tns 항목에 하나의 IP 주소만 나열해야 합니다.[oracle@~]$ cd $ORACLE_HOME/network/admin [oracle@~]$ vi tnsnames.ora
tnsnames.ora
파일의 항목은 다음과 같아야 합니다.DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))
대기 데이터베이스 준비
그런 다음 standby database를 perpare합니다.
- Oracle Database for Azure 툴에서 생성된 데이터베이스를 수동으로 삭제합니다. standby database를 삭제하기 전에 현재 db_unique_name를 저장하고 나중에 사용될 전자 지갑 위치를 기록해 둡니다. 다음 질의는 전자 지갑 위치에 대한 세부정보를 제공합니다.
- sqlplus 명령 프롬프트에서 다음을 입력합니다.
select * from V$ENCRYPTION_WALLET;
- 그런 다음
rm_dbfiles.sql
스크립트를 준비하여 데이터베이스 관련 파일을 제거합니다.srvctl config database -d db_unique_name
- 다음 스크립트를 실행하여 대기 데이터베이스로 작성 중인 데이터베이스를 종료하고 데이터베이스 파일을 제거합니다.
vi rm_dbfiles.sql set heading off linesize 999 pagesize 0 feedback off trimspool on spool /home/oracle/demo/files.lst select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; spool off create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; exit
- 그런 다음 시스템 DBA로 sqlplus 프롬프트로 이동합니다.
sqlplus "/ as sysdba"
다음 명령을 실행합니다.@rm_dbfiles.sql
exit
- 그런 다음 읽기, 쓰기 및 실행 권한을 부여합니다. 여기서
db_unique_name
은 영향을 받는 데이터베이스의 고유한 이름입니다.chmod 777 files.lst
srvctl stop database -d db_unique_name
- 스크립트를 저장하고 실행합니다.
./files.lst
- sqlplus 명령 프롬프트에서 다음을 입력합니다.
/tmp
에 수신된 비밀번호 파일과 전자 지갑 파일을 기본 데이터베이스에서 대기 데이터베이스 DB 시스템의 해당 위치로 복사합니다.- 기본 데이터베이스 DB 시스템에서 /tmp로 수신된 데이터베이스 비밀번호 파일과 전자 지갑 파일을 대기 데이터베이스 DB 시스템의 해당 위치로 복사합니다. 여기서 orapwsid는 SID 비밀번호입니다.
예:sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid
다음과 비슷한 출력이 나타나야 합니다.sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
-rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- 암호 파일의 md5sum 출력이 Primary 및 Standby(여기서 orapwsid는 SID passsword임)에서 일치하는지 확인합니다.
기본 데이터베이스의 출력은 다음과 같아야 합니다(여기서 orapwsid는md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid
orapwdbuks
임).
그리고 standby database의 경우:b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- 기존 전자 지갑 파일을 제거하고
/tmp
에서 TDE 위치로 전자 지갑 파일을 복사합니다. 여기서db_unique_name
은 영향을 받는 데이터베이스의 고유 이름입니다.[oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
rm ewallet.p12 cwallet.sso
sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
- 기본 데이터베이스 DB 시스템에서 /tmp로 수신된 데이터베이스 비밀번호 파일과 전자 지갑 파일을 대기 데이터베이스 DB 시스템의 해당 위치로 복사합니다. 여기서 orapwsid는 SID 비밀번호입니다.
- 정적 리스너 구성:
- OCI의 대기 데이터베이스에서 데이터베이스 고유 이름, OCI의 Oracle 홈 및 기본 데이터베이스의 Oracle SID(시스템 식별자)를 포함하는
SID_LIST_LISTENER
파일을 추가합니다.lsnrctl status
vi listener.ora
- 다음 항목을
listener.ora
파일에 추가합니다. 설명:- DB_UNIQUE_NAME은 기본 데이터베이스의 이름입니다.
- ORACLE_HOME는 기본 데이터베이스의 로컬 Oracle 홈입니다.
- ORACLE SID는 기본 데이터베이스의 SID입니다.
예를 들어, 항목은 다음과 유사해야 합니다.SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE_SID)))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
- 리스너 재로드 및 상태 검사
lsnrctl reload
lsnrctl status
- OCI의 대기 데이터베이스에서 데이터베이스 고유 이름, OCI의 Oracle 홈 및 기본 데이터베이스의 Oracle SID(시스템 식별자)를 포함하는
tns
항목을 구성합니다.cd $ORACLE_HOME/network/admin
vi tnsnames.ora
tnsnames.ora
파일의 항목은 다음과 같아야 합니다.DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))