以前、SQL DeveloperからOracle Cloudを試すを書いたので、SQL*PlusからOracle Autonomous Transaction Processing (ATP)データベースへの接続方法を検証します。
#ウォレットの利用
##ウォレットのダウンロードと展開
SQL*PlusからATPへ接続するにはSQL Developerの時と同様にWalletをダウンロードします。該当データベースのコンソールから「DB接続」ボタンをクリックします。
「ウォレット・タイプ」には「インスタンス・ウォレット」を選択し、「ウォレットのダウンロード」ボタンをクリックします。次にダウンロードされたzipファイルをSQL*Plusを実行するホストで任意の場所にダウンロードし、展開します。
$ mkdir wallet
$ unzip Wallet_DB202003021003.zip -d wallet
Archive: Wallet_DB202003021003.zip
inflating: wallet/cwallet.sso
inflating: wallet/tnsnames.ora
inflating: wallet/truststore.jks
inflating: wallet/ojdbc.properties
inflating: wallet/sqlnet.ora
inflating: wallet/ewallet.p12
inflating: wallet/keystore.jks
$ cd wallet
$ ls
cwallet.sso keystore.jks sqlnet.ora truststore.jks
ewallet.p12 ojdbc.properties tnsnames.ora
$
##ファイルの修正
展開されたファイルからsqlnet.oraファイルを修正します。WALLET_LOCATION属性に指定されたDIRECTORY項目を変更します。デフォルトでは"?/network/admin"になっている部分をウォレットをダウンロードしたディレクトリに変更します。
$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes
$
$ vi sqlnet.ora
<<ファイルの修正>>
$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/oracle/wallet")))
SSL_SERVER_DN_MATCH=yes
##環境変数の設定
環境変数TNS_ADMINを、ウォレットを展開したディレクトリに指定します。これによりSQL*Plusがsqlnet.oraファイルやtnsnames.oraファイルを見つけることができ、sqlnet.oraファイルに指定されたウォレットが有効になります。
$ export TNS_ADMIN=/home/oracle/wallet
#SQL*Plusからの接続
##tnsnames.oraファイルの内容
ウォレットを展開したディレクトリにはtnsnames.oraファイルも作成されています。このファイルにはATPに接続する複数のデータベース・サービス名が含まれています。優先度が高いサービスは同時実行数が制限され、優先度が低いサービスは並列度が制限される傾向があります。
データベース・サービス名 | 説明 | 並列度 | 同時実行数 |
---|---|---|---|
{データベース名}_tpurgent | 最も優先度が高いサービス。 | 手動変更可 | 100 x OCPUs |
{データベース名}_tp | OLTPの一般的なアプリケーション接続用サービス | シリアル | 100 x OCPUs |
{データベース名}_high | レポートまたはバッチ処理で優先度が高いサービス | すべて並列処理 | 3 |
{データベース名}_medium | レポートとバッチ処理用のサービス | シリアル | 1.25 x OCPUs |
{データベース名}_low | レポートまたはバッチ処理で優先度が低いサービス | 4に制限 | 100 x OCPUs |
詳しくはマニュアルを参照してください。
下記の例ではURL部分を一部変更しています。
$ cat tnsnames.ora
db202003021003_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name={*******}_db202003021003_high.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
db202003021003_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name={*******}_db202003021003_low.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
db202003021003_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name={*******}_db202003021003_medium.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
db202003021003_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name={*******}_db202003021003_tp.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
db202003021003_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name={*******}_db202003021003_tpurgent.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
SQL*Plusによる接続
SQL*PlusからADMINユーザー、パスワード、データベース・サービス名を指定して接続します。オンプレミスの接続と同じです。ADMINユーザーではAS SYSDBAを指定した接続は実行できません。
$ sqlplus ADMIN/{password}@db202003021003_high AS SYSDBA
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 3 10:30:09 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name: ^C
$
$ sqlplus ADMIN/{password}@db202003021003_high
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Mar 2 10:37:21 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Mon Mar 02 2020 10:30:49 +09:00
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL>
SQL> SELECT * FROM V$VERSION;
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------------------------------------------------------------------
BANNER_LEGACY CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production 0
SQL*PlusからOracle Clound Autonomous Transaction Databaseに接続することができました。