ノート:

Oracle Connection Managerのインストールおよび構成

イントロダクション

Oracle Connection Manager (CMAN)は、クライアントからデータベースに接続リクエストを転送するプロキシ・サーバーとして機能するOracleユーティリティです。セッション・レベルで動作し、通常は別のサーバーにインストールされます。

イメージ

CMANのユースケース

目的

前提条件

タスク1: Oracle Connection Managerインストールの初期設定

このチュートリアルでは、次のIPアドレスを使用します。

ファイアウォール接続を開く

ポートは、1999年にクライアントVMからCMAN VMに、1521年にCMAN VMからデータベース・サーバーにオープンする必要があります。

タスク2: Oracle Connection Manager仮想マシンへのOracle Connection Managerのインストール

  1. インストール用にCMAN VMを準備します。次のコマンドを実行して、Oracleユーザーの作成、パッケージのインストール、カーネル・パラメータの変更などを行います。

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. mkdir -p $HOME/stageコマンドを実行してディレクトリを作成します。

  3. 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
    
  4. クライアント・ソフトウェアを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
    
  5. 次に、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
    
  6. 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 
    
  7. 次のコマンドを実行してCMANをインストールします。

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. インストールをrootユーザーとして確定します。インストールを完了するには、rootユーザーとして実行します。

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. 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/
    
  10. 次のコマンドを実行して、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
  1. 通常の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
    
  2. ルール・ベースの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

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。