Oracle Database Cloud Serviceにおけるオンプレミス・スクリプト言語の使用

スクリプト言語およびOracle Cloud

以下に示す手順は、言語API(Node.jsのnode-oracledb、Pythonのcx_Oracle、PHPのOCI8とPDO_OCI、Rubyのruby-oci8など)を使用するオンプレミス・アプリケーションからOracle Database Cloud Serviceに接続する方法です。この手順は、OCIまたはOCCIを使用して実装されるドライバおよびアプリケーション(SQL*Plusなど)にも当てはまります。


このチュートリアルは、Oracle Database Cloud Service(Oracle DBCS)インスタンスがすでに作成済みであることが前提です。

1.Oracle Database Language APIのインストール

オンプレミスのコンピュータにプログラミング言語およびOracle Database APIをインストールします。ここで取り上げるOCIベースの言語については、Oracle Clientライブラリが必要です。通常、Oracle Instant Clientが使用されます。

  • cx_Oracle for Pythonをインストールするには、PyPIのバイナリを使用するか、またはこちらの手順を実行します。

  • node-oracledb for Node.jsをインストールするには、こちらの手順を実行します。

  • ROracle for Rをインストールするには、こちらの手順を実行します。

  • PHP OCI8 for PHPをインストールするには、こちらの手順を実行します。Windows DLLはPHPに含まれておりPECLからも入手できます。

  • PHP PDO_OCI for PHPをインストールするには、こちらの手順を実行します。Windows DLLは、PHPに含まれています

  • ruby-oci8 for Rubyをインストールするには、こちらの手順を実行します。

  • DBD::Oracle for Perlをインストールするには、ORACLE_HOMEおよびライブラリ検索パス(LD_LIBRARY_PATHやPATHなど)をInstant Clientディレクトリに設定し、こちらの手順を実行します。

2.データベース・サービスのCompute NodeへのSSHトンネルの作成

接続にはSSHトンネルが推奨されます。たとえば、LinuxまたはmacOSでは次のようにします。

  • データベース・サービス・コンソールで、Public IPアドレスおよび'SQL*Net Port'を特定します。

  • ローカル・ポートを選択します。未使用であればどのポートも使用できますが、同じポート番号にしておくと後でわかりやすくなります。

  • データベース・サービスに認識されている公開鍵とSSL秘密鍵がペアになっているホスト上でトンネルを開始します。


      $ ssh -L local-port:public-ip-address:SQL*Net-port opc@public-ip-address
          

    たとえば、次のように実行します。


      $ ssh -L 1521:a.b.c.d:1521 opc@a.b.c.d
          

    a.b.c.dはサービスのPublic IPアドレスを表し、1521はサービスのSQL*Netのポートです。

    秘密鍵がデフォルトの位置にない場合は、次のように-iオプションを追加します。


      $ ssh -i private-key-file -L . . .
          

    これが初めての接続の場合、sshが公開鍵を確認します。'yes'と入力して接続を許可します。

    データベース・サービスにアクセスしている間、トンネルを開いたままにします。

WindowsにおけるSSHトンネルの作成を含む、SSHトンネルの詳細は、DBaaSのドキュメントに記載されています。こちらのOBEチュートリアルも参照してください。


3.データベース・サービスを使用するアプリケーションの構成

アプリケーションには、Easy Connectやtnsnames.ora構文など、標準的なOracleネットワーク・ネーミング・メソッドを使用できます。詳細については、Oracle Net Documentationを参照してください。

接続文字列を構成するには、以下の3つの情報を使用します。

hostlocalhostまたはホストのIP address

port:SSHトンネルが使用するlocal-port

service_name[Oracle SIDまたはPDB].[Cloud Identity Domain].oraclecloud.internalのような形式の文字列

Easy Connect構文がもっとも手っ取り早い方法です。


  host:port/service_name
  

例:


  localhost:1521/PDB1.myclouddomain.oraclecloud.internal
  

希望の資格証明および接続文字列を使用するようアプリケーションを構成します。例:node-oracledbの場合


  oracledb.getConnection(
  {
    user          : "hr",
    password      : "welcome",
    connectString : "localhost:1521/PDB1.myclouddomain.oraclecloud.internal"
  },  . . .
  

例:cx_Oracleの場合


  conn = cx_Oracle.connect("hr", "welcome", "localhost:1521/PDB1.myclouddomain.oraclecloud.internal")
  

4.アプリケーションの開始

コンピュータ上でアプリケーションを実行します。コマンドラインからアプリケーションを開始するときは、新しいターミナルを使用してください。SSHを実行しているターミナルは使用しないでください。

接続に関するトラブルを解決するには、次に示すSQL*Plusコマンドライン・ユーティリティを使用してテストします。


  sqlplus hr@\"localhost:1521/PDB1.myclouddomain.oraclecloud.internal\"

 

Exadata Expressに関するリソース

他の開発者向けリソース