Database
Oracle Database技術INDEX
Scripting Languages
スクリプト言語および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)インスタンスがすでに作成済みであることが前提です。
オンプレミスのコンピュータにプログラミング言語および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ディレクトリに設定し、こちらの手順を実行します。
接続には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チュートリアルも参照してください。
アプリケーションには、Easy Connectやtnsnames.ora構文など、標準的なOracleネットワーク・ネーミング・メソッドを使用できます。詳細については、Oracle Net Documentationを参照してください。
接続文字列を構成するには、以下の3つの情報を使用します。
host:localhostまたはホストの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")
コンピュータ上でアプリケーションを実行します。コマンドラインからアプリケーションを開始するときは、新しいターミナルを使用してください。SSHを実行しているターミナルは使用しないでください。
接続に関するトラブルを解決するには、次に示すSQL*Plusコマンドライン・ユーティリティを使用してテストします。
sqlplus hr@\"localhost:1521/PDB1.myclouddomain.oraclecloud.internal\"