주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Connection Manager 설치 및 구성
소개
Oracle CMAN(Connection Manager)은 클라이언트에서 데이터베이스로 연결 요청을 전달하기 위한 proxy 서버 역할을 하는 Oracle 유틸리티입니다. 세션 레벨에서 작동하며 일반적으로 별도의 서버에 설치됩니다.
CMAN 사용 사례
-
시나리오 1: 액세스 제어
규칙 기반 구성을 사용하여 특정 클라이언트 요청을 거부하거나 수락합니다(예: 클라이언트 IP 주소 기반).
다음 다이어그램에서 클라이언트가 시스템 IP
192.168.0.74
접속에서 접속하는 경우 데이터베이스에 접속하기 위해 ACCEPTED가 되지만, 클라이언트가 시스템192.168.0.75
접속에서 접속을 시도할 경우 REJECTED가 됩니다. 마찬가지로 허용 및 거부할 IP 주소 범위를 지정할 수 있습니다. -
시나리오 2: 전송 라우팅
클라이언트는 하나 이상의 데이터베이스에 직접 액세스할 수 없습니다. CMAN은 클라이언트에서 해당 데이터베이스로 연결을 재지정합니다.
-
시나리오 3: 다른 포트
대상 데이터베이스는 다른 포트(예:
1521
및1522
)를 사용하지만 이러한 포트는 클라이언트측에서 열리지 않습니다. 다른 포트(예:1999
)를 사용하도록 CMAN을 구성합니다. -
시나리오 4: 다른 IP 프로토콜
클라이언트와 데이터베이스는 서로 다른 IP 프로토콜을 사용합니다. 예를 들어, 클라이언트는 IPv6를 사용하지만 데이터베이스는 IPv4를 사용합니다. CMAN은 IPv6와 IPv4 사이의 네트워크 브리지 역할을 합니다. 이 자습서에서는 CMAN이 하나 이상의 IPv6 및 하나 이상의 IPv4 인터페이스로 구성된 이중 스택 호스트에서 실행되어야 합니다.
목표
- 데이터베이스에 대한 연결을 제한하거나 허용하도록 CMAN(Oracle Connection Manager)을 설정합니다.
필요 조건
-
구획, VCN(가상 클라우드 네트워크), 서브넷 등과 같은 OCI 환경을 프로비전합니다.
-
Oracle Base Database Service 데이터베이스를 프로비전합니다. 예를 들면 Target입니다.
-
OCI(Oracle Cloud Infrastructure) 컴퓨트 VM(CMAN 호스트)을 프로비전합니다.
-
클라이언트 VM(가상 머신) 호스트 컴퓨트입니다. 출처를 예로 들 수 있습니다.
작업 1: Oracle Connection Manager 설치를 위한 초기 설정
이 자습서에서는 다음 IP 주소를 사용합니다.
- 이름이
client
, IP =192.168.0.74
, IP =192.168.0.75
인 OCI 컴퓨트 VM입니다. - 이름이
cman
, IP =192.168.0.199
인 OCI 컴퓨트 VM입니다. - Oracle Base Database Service VM(
dbcs01
, IP =192.168.0.48
)
열린 방화벽 접속
포트는 1999년 클라이언트 VM에서 CMAN VM으로, CMAN VM에서 1521년 데이터베이스 서버로 열어야 합니다.
-
첫번째 연결, CMAN에서 데이터베이스 서버로:
[oracle@cman ~]$ curl -sv telnet://192.168.0.48:1521 * Rebuilt URL to: telnet://192.168.0.48:1521/ * Trying 192.168.0.48... * TCP_NODELAY set * Connected to 192.168.0.48 (192.168.0.48) port 1521 (#0)
-
두번째 연결, 클라이언트 VM에서 CMAN VM으로:
CMAN에 포트 1999를 사용합니다. 포트 1999는 기본적으로 열리지 않으므로 이 포트를 열어야 합니다.
1999 포트를 열려면 CMAN 호스트에서 루트로 다음 명령을 실행합니다.
$firewall-cmd --permanent --add-port=1999/tcp $firewall-cmd –reload [oracle@client1 ~]$ curl -sv telnet://192.168.0.199:1999 * Rebuilt URL to: telnet://192.168.0.199:1999/ * Trying 192.168.0.199... * TCP_NODELAY set * Connected to 192.168.0.199 (192.168.0.199) port 1999 (#0)
작업 2: Oracle Connection Manager 가상 시스템에 Oracle Connection Manager 설치
-
설치를 위해 CMAN VM을 준비합니다. 다음 명령을 실행하여 Oracle 사용자를 만들고, 패키지를 설치하고, 커널 매개변수를 변경하는 등의 작업을 수행합니다.
$sudo su - root $yum install oracle-database-preinstall-21c.x86_64
-
mkdir -p $HOME/stage
명령을 실행하여 디렉토리를 만듭니다. -
Oracle Database 21c에서 Oracle Client
21.3.0
을 다운로드하고,winscp
또는$HOME/stage
아래의 기타 파일 전송 유틸리티를 사용하여 CMAN VM에 복사합니다.SSH를 사용할 수 없는 경우 브라우저에서 Oracle Database 21c 클라이언트 다운로드 페이지를 열고 눌러서 Linux용
LINUX.X64_213000_client.zip
파일을 다운로드합니다. 브라우저를 열고 다운로드에서 파일을 마우스 오른쪽 버튼으로 누르고 다음과 같이 다운로드 링크 복사를 선택합니다.AuthParam URL 매개변수는 다운로드 링크를 누를 때마다 달라집니다. Linux 시스템에서 필요한 디렉토리(예:
$HOME/stage
)로 이동하여 다음 명령을 입력합니다.$ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
-
Oracle 사용자로 클라이언트 소프트웨어의 압축을 풉니다. client라는 디렉토리가 생성됩니다.
[oracle@cman stage]$ ls -ltr /home/oracle/stage drwxr-xr-x. 5 oracle oinstall 90 Jul 27 2021 client -rwxr-xr-x. 1 oracle oinstall 1075931428 Sep 1 10:40 LINUX.X64_213000_client.zip
-
이제 CMAN 및 SQL*Plus를 설치합니다.
다음 명령을 실행하여 CMAN을 실행하기 위한 새 Oracle 사용자(
oracle
), 기본 및 홈 디렉토리를 만듭니다(Linux에서 Oracle 사용자를 설정하기 위해 최신 버전의 Oracle Database 사전 설치 라이브러리 설치).$ sudo su - root $ yum install oracle-database-preinstall-21c.x86_64 $ mkdir /u01 $ chown oracle:oinstall /u01 $ su - oracle $ mkdir -p /u01/app/oracle/product/cman2130
-
CMAN 및 SQL*Plus 설치를 위한 응답 파일을 준비합니다.
$ cat <<EOF > $HOME/client21.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v21.0.0 ORACLE_HOSTNAME=$(hostname) UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory SELECTED_LANGUAGES=en ORACLE_HOME=/u01/app/oracle/product/cman2130 ORACLE_BASE=/u01/app/oracle oracle.install.client.installType=Custom oracle.install.client.customComponents="oracle.sqlplus:21.0.0.0.0","oracle.network.client:21.0.0.0.0","oracle.network.cman:21.0.0.0.0","oracle.network.listener:21.0.0.0.0" EOF
-
CMAN을 설치하려면 다음 명령을 실행하십시오.
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
root 유저로 설치를 완료합니다. root 유저로 실행하여 설치를 완료합니다.
$ /u01/app/oraInventory/orainstRoot.sh $ /u01/app/oracle/product/cman2130/root.sh
-
.bash_profile
파일($HOME/.bash_profile
)에 다음 행을 추가하여 Oracle 유저로 로그인할 때마다cmctl
및 SQL*Plus 유틸리티에 쉽게 액세스할 수 있도록 합니다.export ORACLE_HOME=/u01/app/oracle/product/cman2130 export LD_LIBRARY_PATH=/u01/app/oracle/product/cman2130/lib export PATH=/u01/app/oracle/product/cman2130/bin:$PATH:$HOME export TNS_ADMIN=/u01/app/oracle/product/cman2130/network/admin/
-
다음 명령을 실행하여 SQL*Plus와 CMAN이 모두 실행 중인지 확인합니다.
[oracle@cman ~]$ sqlplus /nolog SQL*Plus: Release 21.0.0.0.0 - Production on Wed Sep 11 05:37:26 2024 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. SQL> exit [oracle@cman ~]$ cmctl CMCTL for Linux: Version 21.0.0.0.0 - Production on 11-SEP-2024 05:37:30 Copyright (c) 1996, 2021, Oracle. All rights reserved. Welcome to CMCTL, type "help" for information. CMCTL>
작업 3: Oracle Connection Manager 구성
이 작업에서는 CMAN을 구성합니다. 먼저 CMAN 리스너가 CMAN VM에서 사용해야 하는 포트를 엽니다. 이 예제에서는 포트 1999를 사용하여 1521일 필요는 없으며 반드시 데이터베이스 리스너 포트와 구분해야 한다는 것을 보여줍니다. 루트로:
$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
-
일반 CMAN 구성입니다.
Oracle 사용자로
$TNS_ADMIN
아래에 다음 내용이 포함된 CMAN 구성 파일cman.ora
를 만듭니다.주: 호스트 IP 주소를 CMAN VM IP로 변경하십시오!
$cat $TNS_ADMIN/cman.ora cman = (configuration= (address=(protocol=tcp)(host=192.168.0.199)(port=1999)) (parameter_list = (aso_authentication_filter=off) (connection_statistics=yes) (log_directory=/u01/app/oracle/product/cman2130/network/log) (log_level=support) (max_connections=256) (idle_timeout=0) (inbound_connect_timeout=0) (session_timeout=0) (outbound_connect_timeout=0) (max_gateway_processes=16) (min_gateway_processes=2) (remote_admin=on) (trace_directory=/u01/app/oracle/product/cman2130/network/trace) (trace_level=support) (trace_timestamp=off) (trace_filelen=1000) (trace_fileno=1) (max_cmctl_sessions=4) (event_group=init_and_term,memory_ops) (registration_invited_nodes = *) (service_affinity=off) ) (rule_list= (rule= (src=*)(dst=*)(srv=*)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) ) ) ) VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
-
규칙 기반 CMAN 구성입니다.
뒤로 이동하여
cman.ora
파일에서 규칙을 확인하면 다음과 같은 내용이 표시됩니다.(src=*)(dst=*)(srv=*)(act=accept)
따라서 모든 소스, 모든 대상 및 모든 서비스에 대한 연결을 허용합니다. 규칙 목록을 사용하면 특정 클라이언트, 특정 대상 또는 특정 서비스에 대한 연결을 허용하거나 거부하는 고유한 규칙을 정의할 수 있습니다. 예:
$cat cman.ora cman = (configuration= (address=(protocol=tcp)(host=192.168.0.199)(port=1999)) (parameter_list = (aso_authentication_filter=off) (connection_statistics=yes) (log_directory=/u01/app/oracle/product/cman2130/network/log) (log_level=support) (max_connections=256) (idle_timeout=0) (inbound_connect_timeout=0) (session_timeout=0) (outbound_connect_timeout=0) (max_gateway_processes=16) (min_gateway_processes=2) (remote_admin=on) (trace_directory=/u01/app/oracle/product/cman2130/network/trace) (trace_level=support) (trace_timestamp=off) (trace_filelen=1000) (trace_fileno=1) (max_cmctl_sessions=4) (event_group=init_and_term,memory_ops) (registration_invited_nodes = 192.168.0.48) (service_affinity=off) ) (rule_list= (rule= (src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) (rule= (src=192.168.0.74)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=accept) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) (rule= (src=192.168.0.75)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=Reject) (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) ) ) ) VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
CMAN은 강력한 도구입니다. 이것은 단순한 샘플 구성일 뿐입니다. 특히 보안과 관련된 자세한 구성 세부 정보는 Oracle 설명서를 참조하십시오.
작업 4: Oracle Connection Manager Services 시작
전자 지갑을 사용하여 소스 및 대상 컨테이너 데이터베이스에 연결하고 Oracle Data Guard 명령행 인터페이스(DGMGRL)를 사용하여 구성을 생성합니다. 이는 일반적인 Oracle Data Guard 구성과 동일합니다. 유일한 차이점은 두 컨테이너 데이터베이스가 모두 기본 데이터베이스이기 때문에 두 컨테이너 데이터베이스에 대해 이 작업을 수행해야 한다는 것입니다.
cmctl
CMCTL for Linux: Version 21.0.0.0.0 - Production on 04-SEP-2024 08:59:37
Copyright (c) 1996, 2021, Oracle. All rights reserved.
Welcome to CMCTL, type "help" for information.
CMCTL> admin cman
Current instance cman is not yet started
Connections refer to (DESCRIPTION=(address=(protocol=tcp)(host=192.168.0.199)(port=1999))).
The command completed successfully.
CMCTL:cman> startup
Starting Oracle Connection Manager instance cman. Please wait...
CMAN for Linux: Version 21.0.0.0.0 - Production
Status of the Instance
----------------------
Instance name cman
Version CMAN for Linux: Version 21.0.0.0.0 - Production
Start date 04-SEP-2024 08:59:43
Uptime 0 days 0 hr. 0 min. 9 sec
Num of gateways started 2
Average Load level 0
Log Level SUPPORT
Trace Level SUPPORT
Instance Config file /u01/app/oracle/product/cman2130/network/admin/cman.ora
Instance Log directory /u01/app/oracle/diag/netcman/cman/cman/alert
Instance Trace directory /u01/app/oracle/diag/netcman/cman/cman/trace
The command completed successfully.
다음 명령을 실행하여 상태 및 서비스를 확인합니다.
CMCTL:cman> show status
CMCTL:cman> show services
작업 5: Oracle Connection Manager를 통해 데이터베이스 연결
접근 방법 1: 대상 데이터베이스 매개변수 사용
CMAN이 들어오는 연결을 데이터베이스로 전달하려면 CMAN이 이러한 데이터베이스를 알고 있어야 합니다. 이를 위해서는 대상 데이터베이스에 REMOTE_LISTENER
를 설정해야 합니다. 또한 성공적으로 등록하려면 cman.ora
파일에서 VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
를 설정합니다.
대상 데이터베이스:
alter system set REMOTE_LISTENER='10.0.0.8:1999' scope=both sid='*';
alter system register;
cman.ora
파일에 다음 라인을 추가합니다.
VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
다음 명령을 실행하여 CMAN을 다시 시작하고 데이터베이스가 CMAN 리스너에 등록되어 있는지 확인합니다.
CMCTL:cman> show services
접속 검증:
CMAN IP 및 포트를 사용하여 클라이언트 VM에서 데이터베이스에 연결합니다. 클라이언트 VM의 tnsnames.ora
파일에 새 TNS 별칭을 만듭니다.
GGC1_CM=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=192.168.0.199)(PORT=1999)) -- CMAN IP and Port
(CONNECT_DATA=
(SERVICE_NAME=GGC1_SJ.sub0209xxxx0543360.vcnsj.oraclevcn.com)))
위 서비스 이름은 CMAN> show services
, 출력에 표시되어야 합니다.
$sqlplus system/MyPasswd__48@GGC1_CM
CMAN 추적 파일을 확인합니다.
/home/oracle/base/diag/netcman/cman/cman/trace/cman.log
/u01/app/oracle/diag/netcman/cman/cman_test/trace/ log.xml
접근 방식 2: Hop 사용
대상 데이터베이스에서 REMOTE_LISTENER
데이터베이스 매개변수를 변경할 수 없는 경우 cman.ora
파일 또는 클라이언트 TNS 파일에서 hop을 사용해야 합니다.
옵션 1: cman.ora
파일에 Hop 추가
$cat cman.ora
cman =
(configuration=
(address=(protocol=tcp)(host=192.168.0.199)(port=1999))
(parameter_list =
(aso_authentication_filter=off)
……
(service_affinity=off)
)
(next_hop=(description=(address=(protocol=tcp)(port=1521)(host=192.168.0.48))))
(rule_list=
(rule=
(src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept)
(action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
)
)
)
옵션 2: 클라이언트의 TNS 파일에 Hop 추가
GGC1_SJ_CM =
(DESCRIPTION =
(SOURCE_ROUTE = YES)
(ADDRESS =
(PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1999)
)
(ADDRESS =
(PROTOCOL = TCP)(HOST = 192.168.0.48)(PORT = 1521)
)
(CONNECT_DATA = (SERVICE_NAME=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)
)
)
다음 명령을 실행하여 연결을 검증합니다.
$sqlplus system/MyPasswd__48@GGC1_CM
관련 링크
확인
- 작성자 - Dharmesh Patel(Oracle North America Cloud Services 수석 클라우드 아키텍트 - NACIE)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Install and Configure Oracle Connection Manager
G16513-01
September 2024