ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Connection Managerのインストールおよび構成
イントロダクション
Oracle Connection Manager (CMAN)は、クライアントからデータベースに接続リクエストを転送するプロキシ・サーバーとして機能するOracleユーティリティです。セッション・レベルで動作し、通常は別のサーバーにインストールされます。
CMANのユースケース
-
シナリオ1: アクセス制御
ルールベースの構成を使用して、クライアントIPアドレスなどに基づいて特定のクライアント・リクエストを拒否または受け入れます。
次の図では、クライアントがマシンIPから接続している場合、
192.168.0.74
接続はデータベースに接続するためにACCEPTEDになりますが、クライアントがマシン192.168.0.75
接続から接続しようとすると、REJECTEDになります。同様に、許可および拒否するIPアドレスの範囲を指定できます。 -
シナリオ2: 転送ルーティング
クライアントは1つ以上のデータベースに直接アクセスできず、CMANはクライアントから対応するデータベースに接続をリダイレクトします。
-
シナリオ3: 異なるポート
ターゲット・データベースでは、
1521
や1522
などの異なるポートが使用されますが、これらのポートはクライアント側で開かれません。1999
など、別のポートを使用するようにCMANを構成します。 -
シナリオ4: 異なるIPプロトコル
クライアントとデータベースは異なるIPプロトコルを使用します。たとえば、クライアントはIPv6を使用しますが、データベースはIPv4を使用します。CMANは、IPv6とIPv4の間のネットワーク・ブリッジとして機能します。このチュートリアルでは、CMANは、少なくとも1つのIPv6および少なくとも1つのIPv4インタフェースで構成されたデュアル・スタック・ホスト上で実行する必要があります。
目的
- Oracle Connection Manager (CMAN)を設定して、データベースへの接続を制限または許可します。
前提条件
-
(コンパートメント、仮想クラウド・ネットワーク(VCN)、サブネットなどの)OCI環境をプロビジョニングします。
-
Oracle Base Database Serviceデータベースをプロビジョニングします。たとえば、Targetなどです。
-
Oracle Cloud Infrastructure (OCI) Compute VM (CMANホスト)をプロビジョニングします。
-
クライアント仮想マシン(VM)ホスト・コンピュート。たとえば、「ソース」です。
タスク1: Oracle Connection Managerインストールの初期設定
このチュートリアルでは、次のIPアドレスを使用します。
client
、IP =192.168.0.74
およびIP =192.168.0.75
という名前のOCI Compute VM。cman
、IP =192.168.0.199
という名前のOCI Compute VM。dbcs01
、IP =192.168.0.48
という名前のOracle Base Database Service VM。
ファイアウォール接続を開く
ポートは、1999年にクライアントVMからCMAN VMに、1521年にCMAN VMからデータベース・サーバーにオープンする必要があります。
-
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)
-
2番目の接続(クライアントVMからCMAN VMへ):
CMANにはポート1999を使用します。ポート1999はデフォルトでは開いていないため、このポートを開く必要があります。
1999ポートを開くには、コマンドをrootとして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
-
Oracleユーザーとしてログインするたびに、
cmctl
およびSQL*Plusユーティリティに簡単にアクセスできるように、.bash_profile
ファイル($HOME/.bash_profile
)に次の行を追加します。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である必要はなく、データベース・リスナー・ポートと区別しています。rootとして:
$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サービスの起動
ウォレットを使用してソースおよびターゲットのコンテナ・データベースに接続し、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
Validate Connection:
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: ホップの使用
ターゲット・データベースでREMOTE_LISTENER
データベース・パラメータを変更できない場合は、cman.ora
ファイルまたはクライアントTNSファイルのいずれかでhopを使用する必要があります。
オプション1: cman.ora
ファイルにホップを追加
$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ファイルにホップを追加
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チャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Install and Configure Oracle Connection Manager
G16512-01
September 2024