환경 구성

OCI에서 보조 시스템을 설정하고 기본 온프레미스 시스템의 대기로 구성합니다.

일부 단계를 자동화하는 데 스크립트를 사용할 수 있습니다. 이 스크립트는 전체 설정을 자동화하지 않으므로 태스크를 완료해야 하며 참조 시 스크립트를 사용할 수 있습니다.

이 문서에 참조된 스크립트를 다운로드하려면 링크를 보려면 코드 다운로드로 이동하십시오.

기본 데이터 센터에서 WebLogic 데이터 소스 준비

이중 문자열, 서로 다른 접속 문자열, TNS 별칭 등 재해 복구 토폴로지에서 WebLogic 데이터 소스의 데이터베이스 접속 문자열에 사용할 수 있는 여러 가지 접근 방법이 있습니다. 자세한 내용과 여러 접근 방법 간의 비교는 Oracle Fusion Middleware Disaster Recovery Guide를 참조하십시오. TNS 별칭은 일회성 설정이 필요하므로 사용합니다. TNS 별칭을 사용하면 WebLogic 구성을 보조 구성으로 복사할 때마다 변경할 필요가 없습니다. GridLink 데이터 소스에서 TNS 별칭 사용은 FMW 버전 12.2.1.3부터 지원됩니다.

TNS 별칭은 기본 및 보조에서 동일한 이름이므로 데이터 소스는 동일한 DB 연결 문자열을 사용합니다. standby로 복사되지 않은 tnsnames.ora 파일로 분석되므로 각 사이트에서 서로 다른 tnsnames.ora 컨텐트를 가질 수 있습니다. 사이트 간에 복제되지 않는 파일 시스템에서 WebLogic 도메인 구성과 별도로 배치할 수 있습니다. 또는 구성의 일부인 경우 도메인 구성 아래의 폴더에 저장할 수도 있습니다. 이 경우 도메인 구성을 기본에서 대기로 복사할 때 해당 폴더를 제외해야 합니다. 각 사이트는 로컬 데이터베이스만 가리키는 각 사이트에 적합한 연결 문자열로 TNS 별칭을 분석합니다. 예를 들면 다음과 같습니다.

Connect string in data sources in primary site:
jdbc:oracle:thin:@mypdbservice

The tnsnames.ora file in primary contains:
MYPDBSERVICE =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=mypdbservice.example.com))
)

Connect string in data sources in secondary site:
jdbc:oracle:thin:@mypdbservice
The tnsnames.ora file in secondary: 
MYPDBSERVICE =
(DESCRIPTION=
 (ADDRESS_LIST=
    (LOAD_BALANCE=ON)
    (ADDRESS=(PROTOCOL=TCP)(HOST=stby-scan)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=mypdbservice.example.com))
)

다음은 TNS 별칭을 사용할 경우의 장점입니다.

  • 동일한 DB 접속 문자열이 WebLogic 도메인 config에서 사용되므로 config를 기본에서 대기로 복제한 후 WebLogic 구성을 변경할 필요가 없습니다.
  • 각 사이트가 로컬 데이터베이스만 가리키므로 중간 계층에서 원격 데이터베이스로의 교차 연결 위험이 없습니다.

기본 WebLogic 서버 시스템에서 이 접근 방식을 아직 사용하고 있지 않은 경우 다음 단계를 수행하여 데이터 소스에서 TNS 별칭을 사용합니다.

  1. 기본 중간 계층 호스트에 tns 폴더를 생성합니다.

    이 폴더는 Oracle 사용자가 읽을 수 있어야 하며 사이트 간에 복제되지 않는 파일 시스템에 배치해야 합니다.

    tns 폴더가 구성의 일부인 경우 모든 서버에서 공유하는 구성 폴더 아래에 폴더를 만들 수도 있습니다. 그러나 이 경우 도메인 구성을 primary에서 standby로 복사하거나 failover 또는 switchover 후에 standby 시스템에서 tnsnames.ora를 갱신하여 보조 데이터베이스를 가리킬 때 tns 폴더를 제외해야 합니다.

    [oracle@host3 ~]$ mkdir -p /home/oracle/tnsnames_dir
    [oracle@host4 ~]$ mkdir -p /home/oracle/tnsnames_dir
  2. 예제와 같이 데이터 소스에서 사용할 TNS 별칭을 사용하여 디렉토리에 tnsnames.ora 파일을 만듭니다.
    Oracle은 문자열을 한 행에 입력할 것을 권장합니다.
    MYPDBSERVICE = 
    (DESCRIPTION=
      (ADDRESS_LIST=
        (LOAD_BALANCE=ON)
        (ADDRESS=(PROTOCOL=TCP)(HOST=dbhost-scan.example.com)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME= mypdbservice.example.com))
    )
  3. tnsnames.ora 파일의 디렉토리 위치를 가리키는 oracle.net.tns_admin 등록 정보를 지정합니다. 다음 방법 중 한 가지를 사용합니다.
    • 옵션 1: 속성을 데이터 소스 연결 속성으로 설정합니다. Oracle은 이 방식을 권장합니다.

      1. 데이터 소스 구성에서 oracle.net.tns_admin=tns_directory 속성을 지정합니다.

        WebLogic 관리 콘솔에서 이 등록 정보를 지정하려면 서비스로 이동하고 데이터 소스를 누른 다음 목록에서 데이터 소스를 선택하고 접속 풀을 누른 다음 속성 텍스트 상자에 추가합니다. 각 데이터 소스에 대해 이 단계를 반복합니다.

        예: oracle.net.tns_admin=/home/oracle/tnsnames_dir

      2. OPSS 보안에 이 속성을 지정하면 $ASERVER_HOME/config/fmwconfig 폴더에 있는 jps-config-jse.xmljps-config.xm 파일이 저장됩니다.

        이러한 jps 파일을 수정하려면 해당 파일을 편집하고 jdbc.url 등록 정보 뒤에 oracle.net.tns_admin 등록 정보를 추가합니다. 예를 들면 다음과 같습니다.

        …
        <property name="jdbc.url" value="jdbc:oracle:thin:@soaedg"/>
        <property name="oracle.net.tns_admin" value="tns_directory"/>
        …

        참고:

        이 등록 정보는 지정된 특정 파일(데이터 소스, jps 파일)에 적용됩니다.
    • 옵션 2: 속성을 java 시스템 속성으로 설정합니다.

      1. -Doracle.net.tns_admin=tns_directory 시스템 등록 정보를 지정합니다. 여기서 tns_directorytnsnames.ora 파일의 디렉토리 위치입니다.

        서버의 java 속성으로 설정하려면 다음 파일을 편집합니다.
        • $ASERVER_HOME/bin/setUserOverrides.sh and
        • $MSERVER_HOME/bin/setUserOverrides.sh(이 파일은 공유되지 않습니다. 따라서 모든 SOA 중간 계층 호스트에서 파일을 편집해야 합니다.)
      2. 다음 내용을 이 파일에 추가합니다.

        # For using tns alias in the datasources 
        export EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Doracle.net.tns_admin=/home/oracle/tnsnames_dir

        참고:

        이 등록 정보는 Oracle WebLogic Server의 모든 데이터 소스 및 jps 파일에 적용됩니다. WLST 명령 및 구성 마법사를 실행하기 전에 이 방법을 사용하려면 환경에서 등록 정보를 설정해야 합니다.
        • WLST를 실행하기 전에 WLST_PROPERTIES 환경 변수에서 등록 정보를 설정합니다.
        • Configuration Wizard를 실행하기 전에 config_internal.sh 스크립트의 JVM_ARGS 환경 변수에 속성을 추가합니다.
      3. 옵션 3: jdbc URL에서 등록 정보를 설정합니다.

        tnsnames.ora 파일의 위치를 데이터 소스 및 jps 파일의 연결 문자열의 일부로 지정합니다.

        jdbc:oracle:thin:@alias?TNS_ADMIN=tns_directory

      참고:

      이 등록 정보는 지정된 특정 파일(데이터 소스, jps 파일)에 적용됩니다.

      이 메소드는 JDBC Driver 18.3 이상에서 사용할 수 있습니다. 이는 Fusion Middleware 12.2.1.4(JDBC Driver 19.3 사용) 이상에 적용됩니다.

  4. 접속 문자열을 별칭으로 바꾸어 데이터 소스 정의 URL에 별칭을 사용합니다.
    jdbc:oracle:thin:@mypdbservice
    다음 파일을 수정합니다.
    • $ASERVER_HOME/config/jdbc/에 있는 데이터 소스 파일
    • $ASERVER_HOME/config/fmwconfig/에 있는 jps-config.xmljps-config-jse.xml 파일
    Oracle WebLogic Server 관리 콘솔을 사용하여 데이터 소스를 수정할 수 있지만 jps-config xml 파일을 수동으로 편집해야 합니다. update_dbconnect.sh 스크립트를 사용하여 언급된 모든 파일에서 바꾸기를 수행할 수 있습니다.

    스크립트를 다운로드하려면 코드 다운로드로 이동합니다.

  5. 도메인의 각 Oracle WebLogic Server를 재시작합니다.
    1. 기본 도메인(관리 서버 및 관리 서버)에 있는 모든 WebLogic 서버를 정지합니다.
    2. 기본 도메인에서 관리 서버를 시작합니다.
    3. 관리 서버가 실행되면 관리되는 서버를 시작합니다.
    4. 데이터베이스와 연결이 올바르게 설정되었는지 확인합니다.
  6. 추가 최적의 사용법: Oracle Database 12c 이상 버전을 사용하는 경우 ONS(Oracle Notification Service) 호스트 및 포트 구성 값이 GridLink 데이터 소스에 필요하지 않습니다.
    클라이언트 드라이버가 데이터베이스에서 Oracle Notification Service 목록을 자동으로 가져옵니다. Oracle은 각 데이터 소스의 ONS 구성에 스캔 주소 또는 Oracle RAC 노드 목록을 제공하는 대신 이 기능을 사용할 것을 권장합니다. FAN이 사용으로 설정되고 각 데이터 소스에서 ONS nodes 속성이 비어 있는지 확인합니다.
    1. Oracle WebLogic Server 관리 콘솔을 엽니다.
    2. 서비스, 데이터 소스로 차례로 이동합니다. 데이터 소스 이름을 선택한 다음 구성ONS를 선택합니다.
    3. ONS 노드 목록이 비어 있는지 확인합니다.

네트워크 구성

기본 온프레미스 네트워크와 보조 OCI(Oracle Cloud Infrastructure) 네트워크 간에는 연결이 필요합니다. Oracle은 전용, 전용, 고대역폭 연결을 통해 OCI 가상 클라우드 네트워크에 직접 연결할 수 있는 Oracle Cloud Infrastructure FastConnect를 사용할 것을 권장합니다. 데이터 양에 따라 적절한 포트 속도를 선택합니다. 또는 낮은 대역폭과 가변 대기 시간, 지터 및 비용을 제공하지만 사이트 간 VPN을 사용할 수 있습니다.
  1. OCI에서 필요한 리소스 결정에 정의된 대로 OCI 구획에 VCN 및 서브넷을 생성합니다. 온프레미스 네트워크와 VCN 간 통신이 가능하도록 Oracle Cloud Infrastructure FastConnect(또는 사이트 간 VPN)를 구성합니다. 자세한 내용은 FastConnectSite-to-Site VPN을 참조하십시오.
  2. 다음 표와 같이 OCI 및 온프레미스 방화벽에서 필요한 네트워크 규칙을 생성하고 소스, 대상, 프로토콜 및 포트를 구성합니다.

    각 서브넷 내에서 모든 트래픽이 사용으로 설정된다고 가정합니다.

    네트워크 보안 규칙에 대한 자세한 내용은 OCI Documentation을 참조하십시오.

    소스 대상 프로토콜 및 포트 사용
    구내 네트워크 OCI 중간 계층 서브넷 SSH(포트 22) 설정 및 수명 주기
    구내 네트워크 OCI 웹 계층 서브넷 SSH(포트 22) 설정 및 수명 주기(OCI에서 Oracle HTTP Server를 사용하는 경우)
    구내 네트워크 OCI DB 계층 서브넷 SSH(포트 22) 설정 및 수명 주기
    온-프레미스 DB 호스트 OCI DB 계층 서브넷 SQLNET(포트 1521) Oracle Data Guard redo transport의 경우
    구내 네트워크 OCI 웹 계층 서브넷 HTTPS/HTTP(443, 80, 7001) 웹 애플리케이션 및 관리 콘솔에 접근
    구내 네트워크 OCI 중간 계층 서브넷 HTTP(7001,8001,9001) Oracle WebLogic Server에 대한 직접 검사의 경우
    OCI 웹 계층 서브넷 OCI 중간 계층 서브넷 HTTP(7001,8001,9001) 웹 계층 구성 요소(OCI 로드 밸런서, Oracle HTTP Server)에서 WebLogic 서버로 연결하는 경우
    OCI 중간 계층 서브넷 OCI DB 계층 서브넷 SQLNET (1521), 온스 (6200) WebLogic Server에서 데이터베이스로 연결
    OCI 중간 계층 서브넷 OCI fss 계층 서브넷 자세한 내용은 파일 스토리지의 VCN 보안 규칙 구성을 참조하십시오. NFS를 사용하여 OCI File Storage 파일 시스템 익스포트를 마운트합니다.
    OCI 중간 계층 서브넷 온프레미스 중간 계층 호스트 SSH(포트 22) rsync의 경우
    OCI DB 계층 서브넷 온-프레미스 DB 호스트 SQLNET(1521) Oracle Data Guard redo transport의 경우
    OCI 중간 계층 서브넷 OCI 웹 계층 서브넷 HTTPS(443) 애플리케이션에서 프런트엔드로의 콜백

    참고:

    다운로드 코드에서 VCN, 서브넷 및 보안 규칙을 생성하는 terraform 코드를 찾을 수 있습니다.

Oracle Data Guard 구성

기본 온-프레미스 데이터베이스와 Oracle Cloud Infrastructure(OCI)의 대기 데이터베이스 간에 Oracle Data Guard를 구성합니다.
  1. Hybrid Data Guard to Oracle Cloud Infrastructure에 설명된 대로 기본, 온프레미스 데이터베이스와 OCI의 대기 데이터베이스 간에 Oracle Data Guard를 구성합니다.
    Oracle Data Guard를 구성하는 데 도움이 되는 스크립트는 GitHub에서 사용할 수 있으며 다운로드 코드에서 참조됩니다.
  2. Oracle Data Guard 명령행 인터페이스(DGMGRL)를 사용하여 Oracle Data Guard가 올바른지 확인합니다.
    DGMGRL> show configuration verbose
  3. Oracle Data Guard(2단계) 구성을 완료하면 기본 온-프레미스(On-Premise) 시스템에서 사용되는 것과 동일한 데이터베이스 서비스를 OCI DB 시스템에 생성합니다. PRIMARY 롤 및 SNAPSHOT_STANDBY 롤로 서비스를 구성합니다.
    두 롤을 모두 사용하여 서비스를 구성하면 데이터베이스가{\f2732 snapshot standby}로 변환될 때{\f2732 DG Broker}가 서비스를 자동으로 시작할 수 있습니다{\f2732 . }이 작업은 전체{\f2732 switchover}를 수행하지 않고 보조 시스템을 검증하려는 경우에 필요합니다{\f2732 .}
    예를 들어 기본 데이터베이스가 데이터베이스 서비스 mypdbservice.example.com을 사용하여 PDB에 접근하는 경우 보조 OCI DB 시스템에 동일한 서비스를 생성합니다.
    srvctl add service -db $ORACLE_UNQNAME -service mypdbservice.example.com -preferred ORCL1,ORCL2 -pdb PDB1 -role "PRIMARY,SNAPSHOT_STANDBY"
    srvctl modify service -db $ORACLE_UNQNAME -service mypdbservice.example.com -rlbgoal SERVICE_TIME -clbgoal SHORT
    srvctl config service -db $ORACLE_UNQNAME -service mypdbservice.example.com
  4. primary database의 서비스가 PRIMARY 전용(기본값) 롤로 생성된 경우 이를 수정하여 snapshot standby 롤을 추가할 수 있습니다.
    srvctl modify service -db $ORACLE_UNQNAME -s mypdbservice.example.com -role "PRIMARY,SNAPSHOT_STANDBY"
  5. 아카이브 로그가 대기 데이터베이스에 적용되기 전에 삭제되지 않도록 하려면 기본 데이터베이스에서 RMAN(Oracle Recovery Manager) 정책을 검토하십시오.
    기본 및 대기 데이터베이스에서 RMANarchivelog 삭제 정책에 applied on all standby 절이 있는지 확인합니다.

데이터베이스 버전 및 패치 레벨 정보

온-프레미스 데이터베이스의 Oracle 홈과 OCI의 대기 데이터베이스는 버전이 동일하고 패치 레벨이 동일해야 합니다. 다음과 같은 방법으로 이 작업을 수행할 수 있습니다.

  • OCI에서 DB 시스템 프로비전 중 데이터베이스 소프트웨어 이미지를 선택하는 경우 모든 버전 표시를 선택하고 온-프레미스 데이터베이스와 동일한 데이터베이스 버전 및 패치 세트 레벨을 선택합니다.
  • 소스 데이터베이스의 Oracle 홈 버전을 OCI에서 프로비전에 더 이상 사용할 수 없는 경우 소스 환경을 클라우드 환경의 데이터베이스 홈과 동일한 데이터베이스 패치 레벨로 패치해야 합니다.

다음 시나리오는 참조를 위한 실제 예입니다. 온-프레미스 DB 홈은 19.6이고 OCI DB 홈은 19.11입니다.

  1. $ORACLE_HOME/OPatch/opatch lspatches 명령을 실행하여 소스 환경과 대상 환경 모두에 설치된 패치를 식별합니다.
    $ORACLE_HOME/OPatch/opatch lspatches

    이 예의 출력은 다음과 같습니다.

    온프레미스 DB Oracle 홈 패치 OCI의 DB Oracle HOME 패치

    30676209;LNX64-20.1-RAC ASM HIT ORA-07445 EXCEPTION ENCOUNTERED CORE DUMP [KSXPOSDIFQRY()+556]

    30613937;IPCOR TOPO 서비스 수정 IP 유형 버그 IP 선택

    30484981;OJVM 릴리스 업데이트: 19.6.0.0.200114(30484981)

    30489227;OCW 릴리스 업데이트 19.6.0.0.0(30489227)

    30557433;데이터베이스 릴리스 업데이트 : 19.6.0.0.200114 (30557433)

    29780459;버그 29416368 수정에서 _LM_RES_HASH_BUCKET 및 백아웃 변경 사항 증가

    30310195;DBSAT에서 STS_CHUNKS 샤딩을 위해 사용 안함으로 설정된 제약 조건을 GSMADMIN_INTERNAL.SHARD_TS에 보고함

    32327201;RDBMS - DSTV36 업데이트 - TZDATA2020E

    31335037;RDBMS - DSTV35 업데이트 - TZDATA2020A

    30432118;버그를 위한 19.0.0.0.0의 정상에 병합 요청 28852325 29997937

    31732095;19C DATABASE ORACLE HOME에서 PERL을 V5.32로 업데이트

    32490416;JDK 번들 패치 19.0.0.0.210420

    32399816;OJVM 릴리스 업데이트: 19.11.0.0.210420 (32399816)

    32579761;OCW 릴리스 업데이트 19.11.0.0.0(32579761)

    32545013;데이터베이스 릴리스 업데이트 : 19.11.0.0.210420 (32545013)

  2. 기존 패치 분석: 일회용 패치를 확인하고, 새 RU 패치에서 패치가 이미 수정되었는지 또는 새 겹치는 패치가 필요한지 검토하고, 제거해야 할 패치를 결정하고, RU에 적합한 패치 파일을 찾습니다.
  3. 분석에 따라 RU 업데이트를 설치하기 전에 새 RU에서 이미 수정된 일회용 패치를 제거합니다. 그렇지 않으면 충돌이 발생합니다. 이 예제에서는 on-off 패치가 19.11에서 수정되므로 19.11 RU를 설치하기 전에 패치를 롤백해야 합니다.
    30676209;LNX64-20.1-RAC  ASM HIT ORA-07445  EXCEPTION ENCOUNTERED  CORE DUMP [KSXPOSDIFQRY()+556]
    30613937;IPCOR TOPO SERVICE  FIX IP TYPE BUG IN IP SELECTION
    
  4. RU 패치를 찾아 다운로드하고 설치합니다. 이 예에서 19.11 RU 패치는 콤보 패치 32578973: COMBO OF OJVM RU COMPONENT 19.11.0.0.210420 + GI RU 19.11.0.0.210420에 있으며 다음과 같습니다.
    32399816;OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816)  
    32579761;OCW RELEASE UPDATE 19.11.0.0.0 (32579761)            
    32545013;Database Release Update : 19.11.0.0.210420 (32545013)
  5. OCI DB 홈이 RU 위에 놓인 오버레이, 일회용 패치 및 기타 패치를 찾아 다운로드하여 설치합니다. 예제:
    29780459;INCREASE _LM_RES_HASH_BUCKET AND BACK OUT CHANGES FROM THE BUG 29416368 FIX
    30310195;DBSAT REPORTED DISABLED CONSTRAINTS FOR SHARDING STS_CHUNKS ON GSMADMIN_INTERNAL.SHARD_TS
    30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 (DSTV33 update) 29997937 (DSTV34 update)
    31335037;RDBMS - DSTV35 UPDATE - TZDATA2020A
    32327201;RDBMS - DSTV36 UPDATE - TZDATA2020E
    32490416;JDK BUNDLE PATCH 19.0.0.0.210420
    31732095;UPDATE PERL IN 19C DATABASE ORACLE HOME TO V5.32
  6. GI 패치에 대해 유사한 분석을 수행합니다.

참고:

이 예제에는 RDBMS Oracle 홈만 포함됩니다. 보조 항목과 동일한 레벨로 온-프레미스 GI 설치 패치를 적용하는 것은 반드시 필요하지는 않습니다.
  • Oracle Data Guard의 관점에서 기본 및 대기 버전에 동일한 GI 버전이 반드시 필요한 것은 아닙니다. Oracle Data Guard는 데이터베이스 아래에 있는 모든 것과 완전히 독립적이므로 버전이나 시간에 대한 제한 없이 여러 사이트에서 여러 버전의 운영 체제, Oracle Clusterware, 하드웨어 또는 스토리지 소프트웨어를 실행할 수 있습니다. (문서 ID 1265700.1)
  • Oracle Data Guard에 관계없이 RAC DB의 GI 버전과 RDBMS 버전에 동일한 버전이 있을 필요는 없습니다. 18c부터 Oracle Grid Infrastructure(GI) /Clusterware(CRS) 버전은 항상 가능한 조합의 첫번째 숫자와 같거나 가장 높은 버전이어야 합니다. 예를 들어, Grid Infrastructure는 18.1.0.0에 있고 Database는 18.3.0.0에 있을 수 있습니다. (문서 ID 337737.1)

DB 홈과 동일한 레벨에서 GI에 패치를 적용하는 것이 좋습니다. DB 홈에 최신 RU(릴리스 업데이트) 패치를 적용해야 하는 경우 대부분의 패치는 DB와 GI에 공통되며 동시에 두 홈에 OPatchAuto를 사용할 수 있습니다.