Azure Linux VM(가상 머신)에서 Oracle Golden Gate 구현
적용 대상: ✔️ Linux VM
명령줄 또는 스크립트에서 Azure 리소스를 만들고 관리하는 데 Azure CLI가 사용됩니다. 이 가이드에서는 Azure CLI를 사용하여 Azure Marketplace 갤러리 이미지에서 Oracle 19c 데이터베이스를 배포하는 방법을 자세히 설명합니다.
이 문서에서는 Azure VM에서 Oracle Golden Gate를 만들고, 설치 및 구성하는 방법을 단계별로 보여 줍니다. 이 자습서에서는 단일 지역의 가용성 집합에 2개의 가상 머신을 설정합니다. 동일한 자습서를 사용하여 단일 Azure 지역의 서로 다른 가용성 영역에 VM용 OracleGolden Gate를 설정할 수도 있고 서로 다른 두 지역에 VM용 OracleGolden Gate를 설정할 수도 있습니다.
시작하기 전에 Azure CLI가 설치되어 있는지 확인합니다. 자세한 내용은 Azure CLI 설치 가이드를 참조하세요.
소개
GoldenGate는 원본 데이터베이스에서 대상 데이터베이스로 데이터를 실시간으로 복제, 필터링 및 변환할 수 있는 논리적 복제 소프트웨어입니다. 이 기능을 사용하면 원본 데이터베이스의 변경 내용이 실시간으로 복제되므로 대상 데이터베이스를 최신 데이터로 유지할 수 있습니다.
서로 다른 원본 데이터베이스의 데이터를 단일 데이터베이스로 복제하는 등 이기종 복제 사례에 주로 GoldenGate를 사용합니다. 예를 들어, 데이터 웨어하우스입니다. SPARC 및 AIX에서 Linux x86 환경으로의 플랫폼 간 마이그레이션과 고급 고가용성 및 확장성 시나리오에도 사용할 수 있습니다.
뿐만 아니라 GoldenGate는 원본 시스템 중단을 최소화하면서 온라인 마이그레이션을 지원하므로 거의 0에 가까운 가동 중지 시간 마이그레이션에도 적합합니다.
GoldenGate는 양방향 복제를 용이하게 하지만, 애플리케이션을 적절하게 구성해야 합니다. 또한 소프트웨어는 특정 비즈니스 요구 사항을 충족하도록 데이터를 필터링 및 변환하는 것을 허용하므로, 사용자가 복제된 데이터를 다양한 용도로 사용할 수 있습니다.
환경 준비
Oracle Golden Gate 설치를 수행하려면 동일한 가용성 집합에서 두 개의 Azure VM을 만들어야 합니다. VM을 만드는 데 사용하는 Marketplace 이미지는 Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1입니다.
Unix 편집기 vi를 숙지하고 X Server에 대한 기초 지식을 갖추어야 합니다.
다음 표에는 환경 구성이 요약되어 있습니다.
기본 사이트 | 복제 사이트 | |
---|---|---|
Oracle 릴리스 | Oracle Database 19.3.1.0 | Oracle Database 19.3.1.0 |
컴퓨터 이름 | ggVM1 | ggVM2 |
운영 체제 | Oracle Linux 7.x | Oracle Linux 7.x |
Oracle SID | CDB1 | CDB1 |
복제 스키마 | 테스트 | 테스트 |
Golden Gate 소유자/복제 | C##GGADMIN | REPUSER |
Golden Gate 프로세스 | EXTORA | REPORA |
Azure에 로그인
Windows, Linux 또는 Azure Shell에서 기본 설정 셸을 엽니다.
az login 명령을 사용하여 Azure 구독에 로그인합니다. 그런 다음 화면에 나타나는 지침에 따릅니다.
$ az login
구독 이름 및/또는 ID를 확인하여 올바른 구독에 연결되어 있는지 확인합니다.
$ az account show
{ "environmentName": "XXXXX", "homeTenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "id": "<SUBSCRIPTION_ID>", "isDefault": true, "managedByTenants": [], "name": "<SUBSCRIPTION_NAME>", "state": "Enabled", "tenantId": XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "user": { "cloudShellID": true, "name": "aaaaa@bbbbb.com", "type": "user" } }
인증 키 생성
ssh와 함께 키 파일 기반 인증을 사용하여 Oracle Database VM에 연결합니다. 프라이빗 키 파일(id_rsa
)과 공개 키 파일(id_rsa.pub
)을 셸에 만들어야 합니다.
키 파일의 위치는 소스 시스템에 따라 달라집니다.
Windows: %USERPROFILE%.ssh Linux: ~/.ssh
없는 경우 새 키 파일 쌍을 만들 수 있습니다.
ssh-keygen -m PEM -t rsa -b 4096
.ssh 디렉터리 및 키 파일이 만들어집니다. 자세한 내용은 Azure에서 Linux VM에 대한 인증을 위한 SSH 키 만들기 및 관리를 참조 하세요.
리소스 그룹 만들기
리소스 그룹을 만들려면 az group create 명령을 사용합니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.
$ az group create --name GoldenGateOnAzureLab --location westus
네트워크 만들기 및 구성
가상 네트워크 만들기
다음 명령을 사용하여 이 랩에서 만드는 리소스를 호스트하는 가상 네트워크를 만듭니다.
$ az network vnet create \
--name ggVnet \
--resource-group GoldenGateOnAzureLab \
--address-prefixes "10.0.0.0/16" \
--subnet-name ggSubnet1 \
--subnet-prefixes "10.0.0.0/24"
NSG(네트워크 보안 그룹) 만들기
NSG(네트워크 보안 그룹)를 만들어 가상 네트워크를 잠급니다.
$ az network nsg create \ --resource-group GoldenGateOnAzureLab \ --name ggVnetNSG
가상 네트워크 내에서 통신을 허용하는 NSG 규칙을 만듭니다.
$ az network nsg rule create --resource-group GoldenGateOnAzureLab --nsg-name ggVnetNSG \ --name ggAllowVnet \ --protocol '*' --direction inbound --priority 3400 \ --source-address-prefix 'VirtualNetwork' --source-port-range '*' \ --destination-address-prefix 'VirtualNetwork' --destination-port-range '*' --access allow
모든 인바운드 연결을 거부하는 NSG 규칙을 만듭니다.
$ az network nsg rule create \ --resource-group GoldenGateOnAzureLab \ --nsg-name ggVnetNSG \ --name ggDenyAllInBound \ --protocol '*' --direction inbound --priority 3500 \ --source-address-prefix '*' --source-port-range '*' \ --destination-address-prefix '*' --destination-port-range '*' --access deny
서버를 호스트하는 서브넷에 NSG를 할당합니다.
$ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
Bastion 네트워크 만들기
Bastion 서브넷을 만듭니다. 서브넷의 이름은 AzureBastionSubnet이어야 합니다.
$ az network vnet subnet create \ --resource-group GoldenGateOnAzureLab \ --name AzureBastionSubnet \ --vnet-name ggVnet \ --address-prefixes 10.0.1.0/24
Bastion에 대한 공용 IP를 만듭니다.
$ az network public-ip create \ --resource-group GoldenGateOnAzureLab \ --name ggBastionIP \ --sku Standard
Azure Bastion 리소스를 만듭니다. 리소스를 배포하는 데 약 10분 정도 걸립니다.
$ az network bastion create \ --resource-group GoldenGateOnAzureLab \ --name ggBastion \ --public-ip-address ggBastionIP \ --vnet-name ggVnet \ --sku Standard \ --enable-tunneling \ --enable-ip-connect true
X Server VM(ggXServer) 만들기
암호를 바꾸고 다음 명령을 실행하여 X Server를 배포하는 Windows 워크스테이션 VM을 만듭니다.
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggXServer \
--image MicrosoftWindowsDesktop:Windows-10:win10-22h2-pro-g2:19045.2604.230207 \
--size Standard_DS1_v2 \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-sku Standard \
--nsg "" \
--data-disk-delete-option Delete \
--os-disk-delete-option Delete \
--nic-delete-option Delete \
--admin-username azureuser \
--admin-password <ENTER_YOUR_PASSWORD_HERE>
Bastion을 통해 ggXServer에 연결
Bastion을 사용하여 ggXServer에 연결합니다.
- Azure Portal에서 ggXServer로 이동
- 왼쪽 탐색 영역에서 개요 찾기
- 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
- Bastion 탭을 선택합니다.
- Bastion 사용을 클릭합니다.
X Server를 실행하도록 ggXServer 준비
이 랩의 이후 단계에서는 X Server가 필요합니다. 다음 단계를 수행하여 X Server를 설치하고 시작합니다.
Xming X Server for Windows를 ggXServer에 다운로드하고 모든 기본 옵션을 사용하여 설치합니다.
설치가 끝나면 실행을 선택하지 않았는지 확인합니다.
시작 메뉴에서 "XLAUNCH" 애플리케이션을 시작합니다.
여러 창을 선택합니다.
클라이언트 시작 안 함을 선택합니다.
액세스 제어 없음을 선택합니다.
Windows 방화벽을 통해 X Server를 허용하도록 액세스 허용을 선택합니다.
ggXServer VM을 다시 시작하는 경우 위의 2~6단계에 따라 X Server 애플리케이션을 다시 시작해야 합니다.
Oracle 데이터 베이스 가상 머신 만들기
이 랩에서는 Oracle Database 19c 이미지로 가상 머신 ggVM1
및 ggVM2
를 만듭니다. 기본 키 위치에 SSH 키가 없는 경우 이 명령은 SSH 키를 만듭니다. 특정 키 집합을 사용하려면 --ssh-key-value
옵션을 사용합니다. 인증 키 생성 섹션에서 SSH 키를 이미 만든 경우 해당 키가 사용됩니다.
새 가상 머신을 만들 때 매개 변수는 size
만든 가상 머신의 크기와 유형을 나타냅니다. 가상 머신을 만들기 위해 선택한 Azure 지역과 구독 설정에 따라 일부 가상 머신 크기와 유형을 사용하지 못할 수도 있습니다. 다음 예에서는 이 랩에 필요한 최소 크기(Standard_DS1_v2
)를 사용합니다. 가상 머신의 사양을 변경하려면 Azure VM 크기에서 사용 가능한 크기 중 하나를 선택합니다. 테스트를 위해 범용(D 시리즈) 가상 머신 유형 중에서 선택할 수 있습니다. 프로덕션 또는 파일럿 배포의 경우 메모리 최적화(E 시리즈 및 M 시리즈)가 더 적합합니다.
ggVM1(기본) 만들기
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggVM1 \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
--size Standard_DS1_v2 \
--generate-ssh-keys \
--admin-username azureuser \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-address "" \
--nsg "" \
--zone 1
ggVM2(복제본) 만들기
$ az vm create \
--resource-group GoldenGateOnAzureLab \
--name ggVM2 \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
--size Standard_DS1_v2 \
--generate-ssh-keys \
--admin-username azureuser \
--vnet-name ggVnet \
--subnet ggSubnet1 \
--public-ip-address "" \
--nsg "" \
--zone 2
ggVM1(기본)에 연결
Bastion을 사용하여 ggVM1에 연결합니다.
- Azure Portal에서 ggVM1으로 이동합니다.
- 왼쪽 창에서 개요로 이동합니다.
- 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
- Bastion 탭 선택
- Bastion 사용 선택
ggVM1(기본)에 데이터베이스 만들기
Oracle 소프트웨어가 Marketplace 이미지에 이미 설치되어 있으므로, 다음 단계는 데이터베이스를 만드는 것입니다.
oracle
사용자로 소프트웨어를 실행합니다.
$ sudo su - oracle
- 다음 명령을 사용하여 데이터베이스를 만듭니다. 이 명령을 완료하는 데 30~40분이 걸릴 수 있습니다.
$ dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb1 \
-sid cdb1 \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OraPasswd1 \
-systemPassword OraPasswd1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OraPasswd1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/" \
-ignorePreReqs
다음 응답과 비슷한 결과가 나올 것입니다.
Copying database files
1% complete
2% complete
8% complete
13% complete
19% complete
27% complete
Creating and starting Oracle instance
29% complete
32% complete
33% complete
34% complete
38% complete
42% complete
43% complete
45% complete
Completing Database Creation
48% complete
51% complete
53% complete
62% complete
70% complete
72% complete
Creating Pluggable Databases
78% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for more details.
- ORACLE_SID 및 LD_LIBRARY_PATH 변수를 설정합니다.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 다음을 실행하여 .bashrc 파일에 ORACLE_SID 및 LD_LIBRARY_PATH를 추가합니다. 그러면 이후 로그인에 사용할 수 있도록 이러한 설정이 저장됩니다. ORACLE_HOME 변수는 .bashrc 파일에 이미 설정되어 있습니다.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
- Oracle 수신기 시작
$ lsnrctl start
ggVM2(복제본)에 연결
Bastion을 사용하여 ggVM2에 연결합니다.
- Azure Portal에서 ggVM2로 이동합니다.
- 왼쪽 창에서 개요로 이동합니다.
- 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
- Bastion 탭 선택
- Bastion 사용 선택
ggVM1에 대한 방화벽 포트 열기
ggVM1에서 연결할 수 있도록 방화벽을 구성합니다. 다음 명령은 ggVM2에서 실행됩니다.
$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit
ggVM2(복제본)에서 데이터베이스 만들기
- 필요한 경우
oracle
사용자로 전환합니다.
$ sudo su - oracle
- 데이터베이스 생성
$ dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb1 \
-sid cdb1 \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OraPasswd1 \
-systemPassword OraPasswd1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OraPasswd1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/" \
-ignorePreReqs
- ORACLE_SID 및 ORACLE_HOME 변수를 설정합니다.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 다음을 실행하여 .bashrc 파일에 ORACLE_SID 및 LD_LIBRARY_PATH를 추가합니다. 그러면 이후 로그인에 사용할 수 있도록 이러한 설정이 저장됩니다. ORACLE_HOME 변수는 .bashrc 파일에 이미 설정되어 있습니다.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
- Oracle 수신기 시작
$ lsnrctl start
ggVM1에서 Golden Gate 구성
이 섹션의 단계에 따라 Golden Gate를 설치하고 구성합니다.
ggVM1(기본)에서 보관 로그 모드 사용
sqlplus
에 연결
$ sqlplus / as sysdba
- 보관 로그를 사용하도록 설정합니다.
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
- 강제 로깅을 사용하도록 설정하고 하나 이상의 로그 파일이 있는지 확인합니다.
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER SYSTEM set enable_goldengate_replication=true;
SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN;
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SESSION SET CONTAINER=PDB1;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> EXIT;
Golden Gate 소프트웨어 다운로드
다운로드 제목 Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64의 Oracle Golden Gate 다운로드 페이지에서 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip 파일을 다운로드합니다.
클라이언트 컴퓨터에 .zip 파일을 다운로드한 후에는 SCP(보안 복사 프로토콜)를 사용하여 파일을 가상 머신(ggVM1 및 ggVM2)에 복사할 수 있습니다.
scp
명령이 .zip 파일의 올바른 경로를 가리키는지 확인합니다.ggVM1에 복사합니다.
로그인하고 Azure에 로그인에 설명된 대로 필요한 경우 올바른 구독을 사용하고 있는지 확인합니다.
다음 PowerShell 명령을 사용하여 대상 VM에 대한 터널을 엽니다.
$ggVM1id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM1 --query 'id' --output tsv) az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM1id --resource-port 22 --port 57500
터널을 통해 대상 VM에 연결하려면 첫 번째 명령 프롬프트를 실행 상태로 두고 두 번째 명령 프롬프트를 엽니다. 이 두 번째 명령 프롬프트 창에서 다음 명령을 사용하여 파일을 로컬 컴퓨터에서 대상 VM으로 업로드할 수 있습니다. 가상 머신에 액세스하는 올바른
id_rsa
키 파일은.ssh
디렉터리에 있어야 합니다. 그렇지 않으면scp
명령에-i
매개 변수를 사용하여 다른 키 파일을 가리킬 수 있습니다.scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip" azureuser@127.0.0.1:.
ggVM2에 복사
다음 PowerShell 명령을 사용하여 대상 VM에 대한 터널을 엽니다.
$ggVM2id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM2 --query 'id' --output tsv) az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM2id --resource-port 22 --port 57501
첫 번째 명령 프롬프트를 실행 중인 상태로 두고, 두 번째 명령 프롬프트를 열어 터널을 통해 대상 VM에 연결합니다. 이 두 번째 명령 프롬프트 창에서 다음 명령을 사용하여 파일을 로컬 컴퓨터에서 대상 VM으로 업로드할 수 있습니다. 가상 머신에 액세스하는 올바른
id_rsa
키 파일은.ssh
디렉터리에 있어야 합니다. 그렇지 않으면scp
명령에-i
매개 변수를 사용하여 다른 키 파일을 가리킬 수 있습니다.scp -P 57501 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip" azureuser@127.0.0.1:.
Golden Gate 소프트웨어 설치
Bastion을 사용하여 ggVM1에 연결합니다.
- Azure Portal에서 ggVM1으로 이동합니다.
- 왼쪽 패널에서 개요로 이동합니다.
- 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
- Bastion 탭 선택
- Bastion 사용 선택
.zip 파일을 /opt 폴더로 이동한 다음, 소유자를 변경합니다.
$ sudo su - $ mv /home/azureuser/*.zip /opt
파일 압축을 풉니다(아직 설치되지 않은 경우 압축 풀기 유틸리티 설치)
$ yum install unzip $ cd /opt $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
권한을 변경합니다.
$ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome $ exit
Golden Gate 설치 프로그램을 시작합니다.
$ sudo su - oracle $ export DISPLAY=10.0.0.4:0.0 $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1 $ ./runInstaller
설치 프로그램이 ggXServer에서 열립니다.
'Oracle GoldenGate for Oracle Database 21c'를 선택합니다. 그리고 다음을 선택하여 계속합니다.
소프트웨어 위치를 /u01/app/oracle/product/19.0.0/oggcore_1로 설정하고, 시작 관리자 확인란을 선택하고, 다음을 선택하여 계속합니다.
요약 화면에서 설치를 선택하여 계속합니다.
설치가 완료될 때까지 기다립니다.
닫기를 선택하여 계속합니다.
Bastion을 사용하여 ggVM2에 연결합니다.
- Azure Portal에서 ggVM2로 이동합니다.
- 왼쪽 창에서 개요로 이동합니다.
- 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
- Bastion 탭 선택
- Bastion 사용 선택
ggVM2에서 위의 2~10단계를 반복합니다.
ggVM1(기본)에서 서비스 설정
tnsnames.ora 파일을 만들거나 업데이트합니다.
$ sudo su - oracle $ cd $ORACLE_HOME/network/admin $ vi tnsnames.ora
vi 편집기가 열리면
i
를 눌러 삽입 모드로 전환한 다음, 파일 내용을 복사하여 붙여넣고Esc
키를 누른 후:wq!
를 입력하여 파일을 저장해야 합니다.cdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=cdb1) ) ) pdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=pdb1) ) )
Golden Gate 소유자 및 사용자 계정을 만듭니다.
참고 항목
소유자 계정에는 C## 접두사가 있어야 합니다.
$ sqlplus / as sysdba
SQL> CREATE USER C##GGADMIN identified by ggadmin; SQL> EXEC dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL'); SQL> GRANT DBA to C##GGADMIN container=all; SQL> connect C##GGADMIN/ggadmin SQL> ALTER SESSION SET CONTAINER=PDB1; SQL> EXIT;
Golden Gate 테스트 사용자 계정을 만듭니다.
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ sqlplus system/OraPasswd1@pdb1
SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; SQL> GRANT connect, resource, dba TO test; SQL> ALTER USER test QUOTA 100M on USERS; SQL> connect test/test@pdb1 SQL> @demo_ora_create SQL> @demo_ora_insert SQL> EXIT;
extract 매개 변수 파일을 구성합니다.
Golden Gate 명령줄 인터페이스(ggsci)를 시작합니다.
$ sudo su - oracle $ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ ./ggsci
GGSCI> DBLOGIN USERID test@pdb1, PASSWORD test Successfully logged into database pdb1 GGSCI> ADD SCHEMATRANDATA pdb1.test 2017-05-23 15:44:25 INFO OGG-01788 SCHEMATRANDATA has been added on schema test. 2017-05-23 15:44:25 INFO OGG-01976 SCHEMATRANDATA for scheduling columns has been added on schema test. GGSCI> EDIT PARAMS EXTORA
i
키를 눌러 삽입 모드로 전환하고, 다음을 복사하여 EXTRACT 매개 변수 파일에 붙여넣습니다(SSH 창을 마우스 오른쪽 단추로 클릭). Esc 키를 누르고:wq!
를 입력하여 파일을 저장합니다.EXTRACT EXTORA USERID C##GGADMIN@cdb1, PASSWORD ggadmin RMTHOST 10.0.0.5, MGRPORT 7809 RMTTRAIL ./dirdat/rt DDL INCLUDE MAPPED DDLOPTIONS REPORT LOGALLSUPCOLS UPDATERECORDFORMAT COMPACT TABLE pdb1.test.TCUSTMER; TABLE pdb1.test.TCUSTORD;
extract--integrated extract를 등록합니다.
GGSCI> dblogin userid C##GGADMIN@cdb1, password ggadmin Successfully logged into database CDB$ROOT. GGSCI> REGISTER EXTRACT EXTORA DATABASE CONTAINER(pdb1) 2023-03-03 19:37:01 INFO OGG-02003 Extract group EXTORA successfully registered with database at SCN 2142014. GGSCI> exit
extract 검사점을 설정하고 실시간 추출을 시작합니다.
$ ./ggsci
GGSCI> ADD EXTRACT EXTORA, INTEGRATED TRANLOG, BEGIN NOW EXTRACT (Integrated) added. GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT EXTORA, MEGABYTES 10 RMTTRAIL added. GGSCI> START EXTRACT EXTORA Sending START request to MANAGER ... EXTRACT EXTORA starting GGSCI > INFO ALL Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXTORA 00:00:11 00:00:04 GGSCI > EXIT
이 단계에서는 나중에 다른 섹션에서 사용되는 시작 SCN을 찾습니다.
$ sqlplus / as sysdba
SQL> alter session set container = pdb1; SQL> SELECT current_scn from v$database; CURRENT_SCN ----------- 2172191 SQL> EXIT;
$ ./ggsci GGSCI> EDIT PARAMS INITEXT
vi 편집기가 열리면
i
를 눌러 삽입 모드로 전환한 다음, 파일 내용을 복사하여 붙여넣고Esc
키를 누른 후:wq!
를 입력하여 파일을 저장해야 합니다.EXTRACT INITEXT USERID C##GGADMIN@cdb1, PASSWORD ggadmin RMTHOST 10.0.0.6, MGRPORT 7809 RMTTASK REPLICAT, GROUP INITREP TABLE pdb1.test.*, SQLPREDICATE 'AS OF SCN 2172191';
GGSCI> ADD EXTRACT INITEXT, SOURCEISTABLE Extract added. GGSCI> EXIT
ggVM2(복제본)에서 서비스 설정
tnsnames.ora 파일을 만들거나 업데이트합니다.
$ cd $ORACLE_HOME/network/admin $ vi tnsnames.ora
vi 편집기가 열리면
i
를 눌러 삽입 모드로 전환한 다음, 파일 내용을 복사하여 붙여넣고Esc
키를 누른 후:wq!
를 입력하여 파일을 저장해야 합니다.cdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=cdb1) ) ) pdb1= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=localhost) (PORT=1521) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=pdb1) ) )
복제 계정을 만듭니다.
$ sqlplus / as sysdba
SQL> ALTER SYSTEM set enable_goldengate_replication=true; SQL> ALTER SESSION SET CONTAINER = pdb1; SQL> CREATE USER REPUSER IDENTIFIED BY REP_PASS CONTAINER=CURRENT; SQL> GRANT DBA TO REPUSER; SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('REPUSER',CONTAINER=>'PDB1'); SQL> CONNECT REPUSER/REP_PASS@PDB1 SQL> EXIT;
Golden Gate 테스트 사용자 계정을 만듭니다.
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ sqlplus system/OraPasswd1@pdb1
SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; SQL> GRANT connect, resource, dba TO test; SQL> ALTER USER test QUOTA 100M on USERS; SQL> CONNECT test/test@pdb1 SQL> @demo_ora_create SQL> EXIT;
변경 내용을 복제할 매개 변수 파일을 REPLICAT합니다.
$ cd /u01/app/oracle/product/19.0.0/oggcore_1 $ ./ggsci
GGSCI> EDIT PARAMS REPORA
vi 편집기가 열리면
i
를 눌러 삽입 모드로 전환한 다음, 파일 내용을 복사하여 붙여넣고Esc
키를 누른 후:wq!
를 입력하여 파일을 저장해야 합니다.REPLICAT REPORA ASSUMETARGETDEFS DISCARDFILE ./dirrpt/repora.dsc, PURGE, MEGABYTES 100 DDL INCLUDE MAPPED DDLOPTIONS REPORT DBOPTIONS INTEGRATEDPARAMS(parallelism 6) USERID repuser@pdb1, PASSWORD REP_PASS MAP pdb1.test.*, TARGET pdb1.test.*;
복제본 검사점을 설정합니다.
GGSCI> ADD REPLICAT REPORA, INTEGRATED, EXTTRAIL ./dirdat/rt GGSCI> EDIT PARAMS INITREP
vi 편집기가 열리면
i
를 눌러 삽입 모드로 전환한 다음, 파일 내용을 복사하여 붙여넣고Esc
키를 누른 후:wq!
를 입력하여 파일을 저장해야 합니다.REPLICAT INITREP ASSUMETARGETDEFS DISCARDFILE ./dirrpt/tcustmer.dsc, APPEND USERID repuser@pdb1, PASSWORD REP_PASS MAP pdb1.test.*, TARGET pdb1.test.*;
GGSCI> ADD REPLICAT INITREP, SPECIALRUN GGSCI> EXIT
복제 설정(ggVM1 및 ggVM2)
1. ggVM2(복제본)에서 복제 설정
ggsci
에 로그인합니다.
$ cd /u01/app/oracle/product/12.1.0/oggcore_1
$ ./ggsci
GGSCI> EDIT PARAMS MGR
다음을 사용하여 파일을 업데이트합니다.
PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW
Manager 서비스를 다시 시작합니다.
GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT
2. ggVM1(기본)에서 복제 설정
초기 로드를 시작하고 오류를 확인합니다.
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> START EXTRACT INITEXT
GGSCI> VIEW REPORT INITEXT
3. ggVM2(복제본)에서 복제 설정
SCN 번호를 이전에 얻은 번호로 바꿉니다.
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
START REPLICAT REPORA, AFTERCSN 2172191
복제가 시작되면 TEST 테이블에 새 레코드를 삽입하여 테스트할 수 있습니다.
작업 상태 보기 및 문제 해결
보고서 보기
ggVM1에서 보고서를 보려면 다음 명령을 실행합니다.
GGSCI> VIEW REPORT EXTORA
ggVM2에서 보고서를 보려면 다음 명령을 실행합니다.
GGSCI> VIEW REPORT REPORA
상태 및 기록 보기
ggVM1에서 상태 및 기록을 보려면 다음 명령을 실행합니다.
GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin GGSCI> INFO EXTRACT EXTORA, DETAIL
ggVM2에서 상태 및 기록을 보려면 다음 명령을 실행합니다.
GGSCI> DBLOGIN USERID REPUSER@PDB1 PASSWORD REP_PASS GGSCI> INFO REP REPORA, DETAIL
$ sqlplus test/test@pdb1
SQL> select * from TCUSTMER; SQL> select * from TCUSTORD;
데이터 복제 관찰
ggVM1에서 주 데이터베이스에 연결합니다.
$ sqlplus test/test@pdb1
테이블의 기존 레코드를 선택합니다.
SQL> select * from TCUSTORD;
테스트 레코드 만들기
SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102); SQL> COMMIT; SQL> EXIT;
Golden Gate가 선택한 트랜잭션을 관찰합니다(Total inserts 값 확인).
$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> STATS EXTORA
Sending STATS request to Extract group EXTORA ...
Start of statistics at 2023-03-24 19:41:54.
DDL replication statistics (for all trails):
*** Total statistics since extract started ***
Operations 0.00
Mapped operations 0.00
Unmapped operations 0.00
Other operations 0.00
Excluded operations 0.00
Output to ./dirdat/rt:
Extracting from PDB1.TEST.TCUSTORD to PDB1.TEST.TCUSTORD:
*** Total statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Daily statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Hourly statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
*** Latest statistics since 2023-03-24 19:41:34 ***
Total inserts 1.00
Total updates 0.00
Total deletes 0.00
Total upserts 0.00
Total discards 0.00
Total operations 1.00
End of statistics.
ggVM2에서 주 데이터베이스에 연결합니다.
$ sqlplus test/test@pdb1
새 레코드가 복제되었는지 확인합니다.
SQL> select * from TCUSTORD;
CUST ORDER_DAT PRODUCT_ ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID ---- --------- -------- ---------- ------------- -------------- -------------- OLLJ 11-APR-99 CYCLE 400 16000 1 102 WILL 30-SEP-94 CAR 144 17520 3 100 JANE 11-NOV-95 PLANE 256 133300 1 100
이것으로 Oracle linux에 Golden Gate를 설치하고 구성하는 작업이 완료되었습니다.
ggXServer VM 삭제
ggXServer VM은 설치하는 동안에만 사용됩니다. 이 랩 문서를 완료한 후 안전하게 삭제할 수 있지만, Azure 랩 설정에서 GoldenGate를 그대로 유지해도 됩니다.
$ az vm delete --resource-group GoldenGateOnAzureLab --name ggXServer --force-deletion yes
$ az network public-ip delete --resource-group GoldenGateOnAzureLab --name ggXServerPublicIP
Azure 랩 설정에서 Golden Gate 삭제
더 이상 필요 없으면 다음 명령을 사용하여 리소스 그룹, VM 및 이 랩과 관련된 모든 리소스를 제거할 수 있습니다.
$ az group delete --name GoldenGateOnAzureLab