LoginSignup
10
7

More than 5 years have passed since last update.

Oracle Connection Managerのインストール

Posted at

Oracle Connection Managerとは

クライアントからOracle Net(SQL*Net)でOracle DBに接続したいのだけれど、ネットワーク的にクライアントからDBサーバに直接アクセスはできず、別サーバ経由であればアクセスできる場合は、その別サーバ上にOracle Connection Managerをインストールすれば、クライアントからDBに接続が可能になります。Oracleを使い始めてもう20年近くになりますが、そんなコンポーネントがあるとはつい最近まで知りませんでした。普通にSQL*NetのリスナーにこのようなProxyの機能があるのかなと思っていたのですが、別コンポーネントが必要でした。

ただ、このOracle Connection Managerについては、非常に情報が少なく、Oracleのマニュアルだけを見ても、まず動かすことはできないだろうレベルですので、インストールして動かすまでの手順を残しておきます。

インストール

コンポーネントのインストール

そもそもどこからインストールできるかを調べるのにもちょっと苦労したのですが、最近のバージョンではOracleクライアントのインストーラからインストールできます。今回はOTNからダウンロードしたOracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64)を使います。

カスタムインストールで進めると、インストールするコンポーネントを選択する画面が出てきますが、ここでOracle Connection Managerに加えてOracle Net Listenerを忘れずに選んでください。これがわからなくて、私はずいぶんと無駄な時間を使ってしまいました。
install.png

また、最後のOracle Net Configuration Assistantは、標準設定をしてしまうと余計なリスナーの設定がされてしまうため、キャンセルしてしまいましょう。

cman.oraファイルの作成

network/adminディレクトリにOracle Connection Managerの設定ファイルであるcman.oraを作成します。ずばり必要最小限の内容は以下の通りです。

cman.ora
CMAN_almpjtc2=
(configuration=
  (address=(protocol=tcp)(host=almpjtc2)(port=1521))
  (rule_list=
    (rule=
       (src=*)(dst=*)(srv=*)(act=accept)
    )
  )
)

almpjtc2が今回Oracle Connection Managerをインストールしたサーバのホスト名です。

Oracle Connection Managerの起動

手動起動

まずは、手動で起動します。

C:\Users\Administrator>cmctl

CMCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 31-8月 -2016 23:42:13

Copyright (c) 1996, 2010, Oracle.  All rights reserved.

CMCTLへようこそ。詳細は"help"と入力してください。

CMCTL> administer
現行のインスタンスCMAN_almpjtc2はまだ開始していません
接続は(address=(protocol=tcp)(host=almpjtc2)(port=1521))を参照しています。
コマンドは正常に終了しました。
CMCTL:CMAN_almpjtc2> startup
Failed to open service <OracleOraClient11g_home1CMAdminCMAN_almpjtc2>, error 1060.
Oracle Connection ManagerのインスタンスCMAN_almpjtc2を開始しています。お待ちください...
TNS-04077: 警告: Oracle Connection Managerのインスタンスにパスワードが設定されていません。
CMAN for 64-bit Windows: Version 11.2.0.1.0 - Production
インスタンスのステータス
----------------------
インスタンス名             cman_almpjtc2
バージョン                 CMAN for 64-bit Windows: Version 11.2.0.1.0 - Production
開始日                     31-8月 -2016 23:42:23
稼働時間              0 日 0 時間 0 分 12 秒
起動したゲートウェイの数    2
平均ロード・レベル          0
ログ・レベル               SUPPORT
トレース・レベル            OFF
インスタンス構成ファイル    C:\app\oracle\product\11.2.0\client_1\network\admin\cman.ora
インスタンス・ログ・ディレクトリ     C:\app\oracle\product\11.2.0\client_1\network\log\
インスタンス・トレース・ディレクトリ  C:\app\oracle\product\11.2.0\client_1\network\trace\
コマンドは正常に終了しました。

administerとstartupコマンドで起動できます。shutdownで停止です。

サービスからの起動

ここまでの手順で、4つのOracle Connection Manager関連のサービスができますが、起動が必要なのは、OracleOraClient11g_home1CMAdminCMAN_<hostname>とOracleOraClient11g_home1TNSListenercman_<hostname>の2つです。前者を起動すれば、後者も起動します。
service.png

接続設定

REMOTE_LISTENERの設定

クライアントからOracle Connection Manager経由でOracle DBに接続するには、まずDB側の設定でREMOTE_LISTENERを設定します。その前にまずCMAN_almpjtc2に接続できるように、tnsnames.oraを設定します。

tnsnames.ora
CMAN_almpjtc2=
(description=
  (address=(protocol=tcp)(host=almpjtc2)(port=1521))
)

次に初期化パラメータを設定します。

alter system set REMOTE_LISTENER=CMAN_almpjtc2;
alter system register;

通常のリスナー動的構成で、local_listenerに指定されたリスナーにサービス登録が行われるのと同様に、remote_listenerで指定されたOracle Connection Managerのリスナーにサービス登録が行われます。

サービス登録の確認

念のため、Oracle Connection Managerにサービスが登録されたかを確認してみます。

CMCTL> administer
CMCTL:CMAN_almpjtc2> show services
サービスのサマリー...
...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
    ハンドラ:
      "DEDICATED" 確立:0 拒否:0 状態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521))
...

クライアントからの接続

あとは、クライアントから接続するのみです。tnsnames.oraで接続先のホスト名をDBサーバではなく、Oracle Connection Managerのホスト名にするだけです。

tnsnames.ora
orcl=
(description=
  (address=(protocol=tcp)(host=almpjtc2)(port=1521))
  (connect_data=
    (server=dedicated)(service_name=orcl)
  )
)
$ sqlplus <username>@orcl/<password>

SQL*Plus: Release 11.2.0.1.0 Production on 土 9月 3 18:58:27 2016

Copyright (c) 1982, 2009, Oracle.  All rights reserved.



Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
に接続されました。

これで、無事にOracle Connection Manager経由で接続できるようになりました。念のため、Oracle Connection Manager側でも確認してみます。

CMCTL:CMAN_almpjtc2> show services
サービスのサマリー...
...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
    ハンドラ:
      "DEDICATED" 確立:1 拒否:0 状態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521))
...

確立がちゃんと1になっていますね。ここまで来るまで長かった。。。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7