Oracle DB インスタンスへの接続 - Amazon Relational Database Service

Oracle DB インスタンスへの接続

Amazon RDS によって Oracle DB インスタンスがプロビジョニングされると、標準の SQL クライアントアプリケーションを使用して DB インスタンスに接続できます。このトピックでは、Oracle SQL Developer または SQL*Plus を使用して Oracle データベースエンジンを実行している DB インスタンスに接続します。

サンプルの DB インスタンスの作成と接続のプロセスを示す手順の例は、「Oracle DB インスタンスを作成して Oracle DB インスタンスのデータベースに接続する」を参照してください。

Oracle DB インスタンスのエンドポイントの検索

各 Amazon RDS DB インスタンスにはエンドポイントがあり、各エンドポイントに DB インスタンスの DNS 名とポート番号があります。SQL クライアントアプリケーションを使用して DB インスタンスに接続するには、DB インスタンスの DNS 名とポート番号が必要です。

Amazon RDS コンソールまたは AWS CLI を使用して、DB インスタンスのエンドポイントを見つけることができます。

注記

Kerberos 認証を使用している場合は、「Oracle を Kerberos 認証に接続する」を参照してください。

Console

コンソールを使用してエンドポイントを見つけるには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. コンソールの右上で、DB インスタンスの AWS リージョンを選択します。

  3. DB インスタンスの DNS 名とポート番号を見つけます。

    1. [データベース] を選択して DB インスタンスを一覧表示します。

    2. 詳細を表示する Oracle DB インスタンスの名前を選択します。

    3. [接続とセキュリティ] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。

      
                                DB インスタンスのエンドポイントとポートを確認する

AWS CLI

AWS CLI を使用して Oracle DB インスタンスのエンドポイントを確認するには、describe-db-instances コマンドを呼び出します。

例 AWS CLI を使用してエンドポイントを見つけるには

aws rds describe-db-instances

出力で Endpoint を検索して、DB インスタンスの DNS 名とポート番号を検索します。出力の Address 行には DNS 名が含まれています。JSON エンドポイント出力の例を以下に示します。

"Endpoint": { "HostedZoneId": "Z1PVIF0B656C1W", "Port": 3306, "Address": "myinstance.123456789012.us-west-2.rds.amazonaws.com" },
注記

出力には、複数の DB インスタンスに関する情報が含まれている場合があります。

Oracle SQL Developer を使用した DB インスタンスへの接続

この手順では、Oracle SQL Developer を使用して DB インスタンスに接続します。このユーティリティのスタンドアロンバージョンをダウンロードするには、Oracle SQL デベロッパーのダウンロードページを参照してください。

DB インスタンスに接続するには、DNS 名とポート番号が必要です。DB インスタンスの DNS 名とポート番号を見つける方法については、Oracle DB インスタンスのエンドポイントの検索 を参照してください。

SQL Developer を使用して DB インスタンスに接続するには

  1. Oracle SQL Developer を開始します。

  2. [Connections] タブで、[add (+)] アイコンを選択します。

    
                        追加 (+) アイコンを強調表示した Oracle SQL Developer
  3. [New/Select Database Connection] ダイアログボックスで、DB インスタンスの情報を提供します。

    • [Connection Name (接続名)] に、接続の名前 (Oracle-RDS など) を入力します。

    • [Username (ユーザー名)] に、DB インスタンスのデータベース管理者の名前を入力します。

    • [Password (パスワード)] に、データベース管理者のパスワードを入力します。

    • [Hostname (ホスト名)] に、DB インスタンスの DNS 名を入力します。

    • [Port (ポート)] に、ポート番号を入力します。

    • [SID] に、Oracle データベース SID を入力します。

    完了したダイアログボックスは次のように表示されます。

    
                        Oracle SQL Developer での新しい接続の作成
  4. [接続] を選択します。

  5. 独自のデータベースを作成し、通常のデータベースに加え、DB インスタンスに対しクエリを実行できるようになりました。DB インスタンスに対してテストクエリを実行するには、次を実行します。

    1. 接続の [Worksheet (ワークシート)] タブに、次の SQL クエリを入力します。

      SELECT NAME FROM V$DATABASE;
    2. 実行アイコンを選択して、クエリを実行します。

      
                                実行アイコンを使用した Oracle SQL Developer のクエリの実行

      SQL Developer はデータベース名を返します。

      
                                Oracle SQL Developer のクエリの結果

SQL *Plus を使用した DB インスタンスへの接続

SQL*Plus などのユーティリティを使用して、Oracle を実行している Amazon RDS DB インスタンスに接続できます。SQL*Plus のスタンドアロンバージョンを含む Oracle Instant Client をダウンロードするには、Oracle Instant Client Downloads を参照してください。

DB インスタンスに接続するには、DNS 名とポート番号が必要です。DB インスタンスの DNS 名とポート番号を見つける方法については、Oracle DB インスタンスのエンドポイントの検索 を参照してください。

例 SQL*Plus を使用して Oracle DB インスタンスに接続するには

次の例では、DB インスタンス管理者のユーザー名を使用します。また、DNS 名を DB インスタンスに置き換えて、ポート番号および Oracle SID を含めます。SID 値は、DB インスタンスを作成したときに指定した DB インスタンスのデータベースの名前であり、DB インスタンスの名前ではありません。

Linux、macOS、Unix の場合:

sqlplus 'user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))'

Windows の場合:

sqlplus user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))

次のような出力が表示されます。

SQL*Plus: Release 12.1.0.2.0 Production on Mon Aug 21 09:42:20 2017

ユーザーのパスワードを入力すると、SQL プロンプトが表示されます。

SQL>
注記

sqlplus USER/PASSWORD@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/DATABASE_IDENTIFIER のような短い形式の接続文字列 (Easy connect または EZCONNECT) は、最大文字数制限に達する可能性があるため、接続には使用しないでください。

セキュリティグループに関する考慮事項

DB インスタンスに接続するためには、DB インスタンスを、必要な IP アドレスとネットワーク設定を含むセキュリティグループに関連付ける必要があります。DB インスタンスは、デフォルトのセキュリティグループを使用することがあります。DB インスタンスの作成時に、デフォルトの設定されていないセキュリティグループを割り当てた場合は、ファイアウォールによって接続が禁止されます。

新しいセキュリティグループを作成するために作成するセキュリティグループは、DBインスタンスの Amazon EC2 プラットフォームによって異なります。プラットフォームを決定するには、「EC2-VPC または EC2-Classic のどちらのプラットフォームを使用しているかを確認する」を参照してください。一般的に、DB インスタンスが EC2-Classic プラットフォームにある場合は、DB セキュリティグループを作成します。DB インスタンスが VPC プラットフォームにある場合は、VPC セキュリティグループを作成します。新しいセキュリティグループの作成方法については、セキュリティグループによるアクセスコントロール を参照してください。

新しいセキュリティグループを作成したら、そのセキュリティグループと関連付けるように DB インスタンスを変更します。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。

SSL を使用して DB インスタンスへの接続を暗号化することで、セキュリティを高めることができます。詳細については、「Oracle Secure Sockets Layer」を参照してください。

プロセスアーキテクチャに関する考慮事項

サーバープロセスは、ユーザーの Oracle DB インスタンスへの接続を処理します。デフォルトでは、Oracle DB インスタンスは専用サーバープロセスを使用します。専用サーバープロセスでは、各サーバープロセスは 1 人のユーザープロセスにのみ設定できます。任意で共有サーバープロセスを設定できます。共有サーバープロセスでは、各サーバープロセスは複数のユーザープロセスを設定できます。

多数のユーザーセッションがサーバー上でメモリを過度に使用している場合は、共有サーバープロセスの使用を検討することもできます。また、セッションが頻繁に接続されたり切断されてパフォーマンス上の問題を引き起こす場合も、共有サーバープロセスを検討できます。共有サーバープロセスの使用には欠点もあります。例えば、CPU リソースに負荷をかけることがあり、設定や管理がより複雑になります。

専用インスタンスと共有サーバーのプロセスの詳細については、Oracle ドキュメントの「専用および共有サーバープロセスについて」を参照してください。RDS for Oracle DB インスタンスで共有サーバープロセスを設定する方法の詳細については、ナリッジセンターの共有サーバーを使用するように Amazon RDS for Oracle Database を設定する方法を参照してください。

Oracle DB インスタンスへの接続のトラブルシューティング

以下は、Oracle DB インスタンスの接続時に発生する可能性がある問題です。

問題 トラブルシューティングの推奨事項

DB インスタンスに接続できません。

新しく作成された DB インスタンスでは、使用できるようになるまで、DB インスタンスのステータスは [creating] となります。ステータスが [available] に変わると、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しい DB インスタンスを使用できるようになるまで最長 20 分かかることがあります。

DB インスタンスに接続できません。

DB インスタンスを作成したときに指定したポートを経由して通信を送信または受信できない場合は、DB インスタンスに接続できません。DB インスタンスに指定したポートでインバウンドおよびアウトバウンド通信できることを検証するよう、ネットワーク管理者に確認してください。

DB インスタンスに接続できません。

ローカルファイアウォールによって実施されるアクセスルールと、DB インスタンスのセキュリティグループで DB インスタンスへのアクセスを許可した IP アドレスが一致しない可能性があります。問題は、ほとんどの場合ファイアウォールのインバウンドまたはアウトバウンドルールです。

セキュリティグループでインバウンドのルールを追加または編集できます。ソース には [My IP] を選択します。これにより、ブラウザで検出された IP アドレスから DB インスタンスへのアクセスが許可されます。詳細については、「Amazon Virtual Private Cloud VPC および Amazon RDS」を参照してください。

セキュリティグループの詳細については、セキュリティグループによるアクセスコントロール を参照してください。

セキュリティグループにルールを設定する手順については、チュートリアル: DB インスタンス用の Amazon VPC を作成する を参照してください。

ターゲットホストまたはオブジェクトが存在しないため接続に失敗しました – Oracle、エラー: ORA-12545

サーバー名とポート番号を正しく指定していることを確認します。[Server name (サーバー名)] に、コンソールからの DNS 名を入力します。

DB インスタンスの DNS 名とポート番号を見つける方法については、Oracle DB インスタンスのエンドポイントの検索 を参照してください。

無効なユーザー名/パスワード、ログインが拒否されました – Oracle、エラー: ORA-01017

DB インスタンスには到達できましたが、接続が拒否されました。通常、これは誤ったユーザー名やパスワードが指定されたときに発生します。ユーザー名とパスワードを確認し、再試行します。

接続の問題の詳細については、「Amazon RDS DB インスタンスに接続できない」を参照してください。

sqlnet.ora パラメータを使用した接続プロパティの変更

sqlnet.ora ファイルに含まれているパラメータでは、Oracle データベースサーバーおよびクライアントの Oracle Net 機能を設定します。sqlnet.ora ファイルのパラメータを使用して、データベースに出入りする接続のプロパティを変更できます。

sqlnet.ora を設定する理由の詳細については、Oracle ドキュメントのプロファイルパラメータの設定に関する記事を参照してください。

sqlnet.ora パラメータの設定

Amazon RDS for Oracle パラメータグループには、sqlnet.ora パラメータのサブセットが含まれています。これらのパラメータは、他の Oracle パラメータと同じ方法で設定します。sqlnetora. プレフィックスは、どのパラメータが sqlnet.ora パラメータであるかを判別します。例えば、Amazon RDS の Oracle パラメータグループの場合、default_sdu_size sqlnet.ora パラメータは sqlnetora.default_sdu_size です。

パラメータグループの管理とパラメータ値の設定については、「DB パラメータグループを使用する」を参照してください。

サポートされている sqlnet.ora パラメータ

Amazon RDS は、以下の sqlnet.ora パラメータをサポートしています。動的な sqlnet.ora パラメータの変更は即時に反映されます。

Parameter 有効な値 静的/動的 説明

sqlnetora.default_sdu_size

Oracle 12c – 5122097152

動的

セッションデータユニット (SDU) のサイズ (バイト単位)。

SDU は、バッファに配置され、ネットワークで一度に送信されるデータの量です。

sqlnetora.diag_adr_enabled

ON, OFF

動的

自動診断リポジトリ (ADR) のトレースを有効化/無効化する値。

ON は、ADR ファイルのトレースを使用することを指定します。

OFF は、ADR 以外のファイルのトレースを使用することを指定します。

sqlnetora.recv_buf_size

8192268435456

動的

セッションの受信オペレーションのバッファ容量制限。TCP/IP、TCP/IP with SSL、SDP の各プロトコルでサポートされます。

sqlnetora.send_buf_size

8192268435456

動的

セッションの送信オペレーションのバッファ容量制限。TCP/IP、TCP/IP with SSL、SDP の各プロトコルでサポートされます。

sqlnetora.sqlnet.allowed_logon_version_client

8, 10, 11, 12

動的

Oracle DB インスタンスへの接続を確立するために、クライアント、およびクライアントとして機能するサーバーに許可される最小認証プロトコルバージョン。

sqlnetora.sqlnet.allowed_logon_version_server

8, 9, 10, 11, 12, 12a

動的

Oracle DB インスタンスへの接続を確立するために許可される最小認証プロトコルバージョン。

sqlnetora.sqlnet.expire_time

01440

動的

チェックを送信してクライアントサーバー接続がアクティブであることを確認する時間間隔 (分単位)。

sqlnetora.sqlnet.inbound_connect_timeout

0、または 107200

動的

クライアントからデータベースサーバーに接続し、必要な認証情報を提供するまでの時間 (秒単位)。

sqlnetora.sqlnet.outbound_connect_timeout

0、または 107200

動的

クライアントから DB インスタンスへの Oracle Net 接続を確立するまでの時間 (秒単位)。

sqlnetora.sqlnet.recv_timeout

0、または 107200

動的

接続の確立後にデータベースサーバーがクライアントデータを待機する時間 (秒単位)。

sqlnetora.sqlnet.send_timeout

0、または 107200

動的

接続の確立後にデータベースサーバーからクライアントへの送信オペレーションが完了するまでの時間 (秒単位)。

sqlnetora.tcp.connect_timeout

0、または 107200

動的

クライアントからデータベースサーバーへの TCP 接続を確立するまでの時間 (秒単位)。

sqlnetora.trace_level_server

0, 4, 10, 16, OFF, USER, ADMIN, SUPPORT

動的

ADR 以外のトレースの場合、指定したレベルでトレースをオンにするか、トレースをオフにします。

サポートされている各 sqlnet.ora パラメータのデフォルト値は、リリースの Oracle デフォルトです。Oracle Database 12c のデフォルト値については、Oracle Database 12c ドキュメントの「sqlnet.ora ファイルのパラメータ」を参照してください。

sqlnet.ora パラメータの表示

AWS Management Console、AWS CLI、または SQL を使用して、sqlnet.ora のパラメータとその設定を表示できます。

コンソールでの sqlnet.ora パラメータの表示

パラメータグループ内のパラメータの表示方法については、「DB パラメータグループを使用する」を参照してください。

Oracle パラメータグループでは、sqlnetora. プレフィックスにより、どのパラメータが sqlnet.ora パラメータであるかを判別します。

AWS CLI での sqlnet.ora パラメータの表示

Oracle パラメータグループに設定されている sqlnet.ora パラメータを表示するには、AWS CLI の describe-db-parameters コマンドを使用します。

Oracle DB インスタンスのすべての sqlnet.ora パラメータを表示するには、AWS CLI の download-db-log-file-portion コマンドを呼び出します。DB インスタンス識別子、ログファイル名、および出力のタイプを指定します。

次のコードでは、mydbinstance のすべての sqlnet.ora パラメータを一覧表示します。

Linux、macOS、Unix の場合:

aws rds download-db-log-file-portion \ --db-instance-identifier mydbinstance \ --log-file-name trace/sqlnet-parameters \ --output text

Windows の場合:

aws rds download-db-log-file-portion ^ --db-instance-identifier mydbinstance ^ --log-file-name trace/sqlnet-parameters ^ --output text

SQL クライアントでの sqlnet.ora パラメータの表示

SQL クライアントで Oracle DB インスタンスに接続すると、次のクエリで sqlnet.ora パラメータが一覧表示されます。

SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'BDUMP', p_filename => 'sqlnet-parameters'));

SQL クライアントで Oracle DB インスタンスに接続する方法については、「Oracle DB インスタンスへの接続」を参照してください。