다음을 통해 공유


Azure Linux 가상 머신에서 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에 로그인

  1. Windows, Linux 또는 Azure Shell에서 기본 설정 셸을 엽니다.

  2. az login 명령을 사용하여 Azure 구독에 로그인합니다. 그런 다음 화면에 나타나는 지침에 따릅니다.

    $ az login
    
  3. 구독 이름 및/또는 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(네트워크 보안 그룹) 만들기

  1. 가상 네트워크를 잠그는 데 사용할 NSG(네트워크 보안 그룹)를 만듭니다.

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. 가상 네트워크 내에서 통신을 허용하는 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
    
  3. 모든 인바운드 연결을 거부하는 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
    
  4. 서버를 호스트하는 서브넷에 NSG를 할당합니다.

    $ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
    

Bastion 네트워크 만들기

  1. Bastion 서브넷을 만듭니다. 서브넷 이름은 AzureBastionSubnet이어야 합니다.

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. Bastion용 공용 IP를 만듭니다.

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. 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에 연결합니다.

  1. Azure Portal에서 ggXServer로 이동합니다.
  2. 왼쪽 블레이드의 개요로 이동합니다.
  3. 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
  4. Bastion 탭을 선택합니다.
  5. Bastion 사용을 클릭합니다.

X Server를 실행하도록 ggXServer 준비

이 랩의 이후 단계에서는 X Server가 필요합니다. 다음 단계를 수행하여 X Server를 설치하고 시작합니다.

  1. Xming X Server for WindowsggXServer에 다운로드하고 모든 기본 옵션을 사용하여 설치합니다.

  2. 설치가 끝나면 실행을 선택하지 않았는지 확인합니다.

  3. 시작 메뉴에서 "XLAUNCH" 애플리케이션을 시작합니다.

  4. 여러 창을 선택합니다.

    Screenshot of XLaunch wizard step 1.

  5. 클라이언트 시작 안 함을 선택합니다.

    Screenshot of XLaunch wizard step 2.

  6. 액세스 제어 없음을 선택합니다.

    Screenshot of XLaunch wizard step 3.

  7. Windows 방화벽을 통해 X Server를 허용하도록 액세스 허용을 선택합니다.

    Screenshot of XLaunch wizard step 4.

ggXServer VM을 다시 시작하는 경우 위의 2~6단계에 따라 X Server 애플리케이션을 다시 시작해야 합니다.

Oracle 데이터 베이스 가상 머신 만들기

이 랩에서는 Oracle Database 19c 이미지로 가상 머신 ggVM1ggVM2를 만듭니다. 기본 키 위치에 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에 연결합니다.

  1. Azure Portal에서 ggVM1으로 이동합니다.
  2. 왼쪽 창에서 개요로 이동합니다.
  3. 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
  4. Bastion 탭을 선택합니다.
  5. Bastion 사용을 클릭합니다.

ggVM1(기본)에 데이터베이스 만들기

Oracle 소프트웨어가 Marketplace 이미지에 이미 설치되어 있으므로, 다음 단계는 데이터베이스를 만드는 것입니다.

  1. oracle 사용자로 소프트웨어를 실행합니다.
$ sudo su - oracle
  1. 다음 명령을 사용하여 데이터베이스를 만듭니다. 이 명령을 완료하는 데 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.
  1. ORACLE_SID 및 LD_LIBRARY_PATH 변수를 설정합니다.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 다음을 실행하여 .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
  1. Oracle 수신기 시작
$ lsnrctl start

ggVM2(복제본)에 연결

Bastion을 사용하여 ggVM2에 연결합니다.

  1. Azure Portal에서 ggVM2로 이동합니다.
  2. 왼쪽 창에서 개요로 이동합니다.
  3. 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
  4. Bastion 탭을 선택합니다.
  5. Bastion 사용을 클릭합니다.

ggVM1에 대한 방화벽 포트 열기

ggVM1에서 연결할 수 있도록 방화벽을 구성합니다. 다음 명령은 ggVM2에서 실행됩니다.

$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit

ggVM2(복제본)에서 데이터베이스 만들기

  1. 필요한 경우 oracle 사용자로 전환합니다.
$ sudo su - oracle
  1. 데이터베이스 생성
$ 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
  1. ORACLE_SID 및 ORACLE_HOME 변수를 설정합니다.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 다음을 실행하여 .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
  1. Oracle 수신기 시작
$ lsnrctl start

ggVM1에서 Golden Gate 구성

이 섹션의 단계에 따라 Golden Gate를 설치하고 구성합니다.

ggVM1(기본)에서 보관 로그 모드 사용

  1. sqlplus에 연결
$ sqlplus / as sysdba
  1. 보관 로그를 사용하도록 설정합니다.
SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
  1. 강제 로깅을 사용하도록 설정하고 하나 이상의 로그 파일이 있는지 확인합니다.
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 소프트웨어 다운로드

  1. Oracle Golden Gate 다운로드 페이지에서 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip 파일을 다운로드합니다. (다운로드 제목 Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64 아래)

  2. 클라이언트 컴퓨터에 .zip 파일을 다운로드한 후에는 SCP(보안 복사 프로토콜)를 사용하여 파일을 가상 머신(ggVM1 및 ggVM2)에 복사할 수 있습니다. scp 명령이 .zip 파일의 올바른 경로를 가리키는지 확인합니다.

  3. ggVM1에 복사합니다.

    1. 로그인하고 Azure에 로그인에 설명된 대로 필요에 따라 올바른 구독을 사용하고 있는지 확인합니다.

    2. 다음 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
      
    3. 첫 번째 명령 프롬프트를 실행 중인 상태로 두고, 두 번째 명령 프롬프트를 열어 터널을 통해 대상 VM에 연결합니다. 이 두 번째 명령 프롬프트 창에서 다음 명령을 사용하여 파일을 로컬 컴퓨터에서 대상 VM으로 업로드할 수 있습니다. 가상 머신에 액세스하는 올바른 id_rsa 키 파일은 .ssh 디렉터리에 있어야 합니다. 그렇지 않으면 scp 명령에 -i 매개 변수를 사용하여 다른 키 파일을 가리킬 수 있습니다.

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. ggVM2에 복사

    1. 다음 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
      
    2. 첫 번째 명령 프롬프트를 실행 중인 상태로 두고, 두 번째 명령 프롬프트를 열어 터널을 통해 대상 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 소프트웨어 설치

  1. Bastion을 사용하여 ggVM1에 연결합니다.

    1. Azure Portal에서 ggVM1으로 이동합니다.
    2. 왼쪽 패널에서 개요로 이동합니다.
    3. 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
    4. Bastion 탭을 선택합니다.
    5. Bastion 사용을 클릭합니다.
  2. .zip 파일을 /opt 폴더로 이동한 다음, 소유자를 변경합니다.

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. 파일의 압축을 풉니다(압축 풀기 유틸리티가 설치되어 있지 않으면 설치).

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. 권한을 변경합니다.

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Golden Gate 설치 프로그램을 시작합니다.

    $ sudo su - oracle
    $ export DISPLAY=10.0.0.4:0.0
    $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
    $ ./runInstaller
    

    설치 프로그램이 ggXServer에서 열립니다.

  6. 'Oracle GoldenGate for Oracle Database 21c'를 선택합니다. 그리고 다음을 선택하여 계속합니다.

    Screenshot of Golden Gate installation wizard step 1.

  7. 소프트웨어 위치를 /u01/app/oracle/product/19.0.0/oggcore_1로 설정하고, 시작 관리자 확인란을 선택하고, 다음을 선택하여 계속합니다.

    Screenshot of Golden Gate installation wizard step 2.

  8. 요약 화면에서 설치를 선택하여 계속합니다.

    Screenshot of Golden Gate installation wizard step 3.

  9. 설치가 완료될 때까지 기다립니다.

    Screenshot of Golden Gate installation wizard step 4.

  10. 닫기를 선택하여 계속합니다.

Screenshot of Golden Gate installation wizard step 5.

  1. Bastion을 사용하여 ggVM2에 연결합니다.

    1. Azure Portal에서 ggVM2로 이동합니다.
    2. 왼쪽 창에서 개요로 이동합니다.
    3. 위쪽 메뉴에서 연결>Bastion을 차례로 선택합니다.
    4. Bastion 탭을 선택합니다.
    5. Bastion 사용을 클릭합니다.
  2. ggVM2에서 위의 2~10단계를 반복합니다.

ggVM1(기본)에서 서비스 설정

  1. 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)
       )
     )
    
  2. 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;
    
  3. 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;
    
  4. 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
    
  5. 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;
    
  6. 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
    
  7. 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(복제본)에서 서비스 설정

  1. 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)
       )
     )
    
  2. 복제 계정을 만듭니다.

    $ 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;
    
  3. 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;
    
  4. 변경 내용을 복제할 매개 변수 파일을 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.*;
    
  5. 복제본 검사점을 설정합니다.

    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;
    

데이터 복제 관찰

  1. ggVM1에서 주 데이터베이스에 연결합니다.

    $ sqlplus test/test@pdb1
    
  2. 테이블의 기존 레코드를 선택합니다.

    SQL> select * from TCUSTORD;
    
  3. 테스트 레코드 만들기

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. 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.
  1. ggVM2에서 주 데이터베이스에 연결합니다.

    $ sqlplus test/test@pdb1
    
  2. 새 레코드가 복제되었는지 확인합니다.

    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

다음 단계

고가용성 가상 머신 만들기 자습서

VM 배포 CLI 샘플 탐색