Amazon Relational Database Service (Amazon RDS) for Oracle DB インスタンスに接続できません。
簡単な説明
RDS for Oracle DB インスタンスへの接続の問題が発生する最も一般的な理由は次のとおりです。
- セキュリティグループ、ネットワークアクセスコントロールリスト (ネットワーク ACL)、またはローカルファイアウォールが正しく設定されていない。設定が正しくないと、インスタンスへのトラフィックがブロックされる可能性があります。
- インスタンスが利用可能状態ではない。
- 間違ったユーザー認証情報を使用している。
- RDS DB インスタンスへの接続に間違ったエンドポイントを使用している。
- クライアントから DB インスタンスへの接続に互換性がない。
- 必要なアクセス許可がない。
解決策
TNSPING を使用して接続を確認する
注: TNSPING ユーティリティを使用するには、Oracle クライアントをインストールする必要があります。
TNSPING ユーティリティを使用して、Oracle クライアントが DB インスタンスに接続できるかどうかを確認します。tnsnames.ora ファイルにデータベースエントリを追加した場合は、次のコマンドを実行して RDS for Oracle にアクセスできるかどうかを確認します。
tnsping <Service Name>
tnsnames.ora ファイルにデータベースエントリを追加しなかった場合は、次のようなコマンドを実行します。
tnsping "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxx-yyyyy.us-east-1.rds.amazonaws.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))"
TNS Ping Utility for 64-bit Windows: Version 19.0.0.0.0 - Production on 23-JUL-2023 19:48:22
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxx-yyyyy.us-east-1.rds.amazonaws.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (210 msec)
TNSPING により Oracle クライアントが DB インスタンスに接続できないことが確認されたら、次の設定を確認します。
VPC 設定を確認する
仮想プライベートクラウド (VPC) の外部から DB インスタンスに接続する場合は、DB インスタンスの [パブリックにアクセス可能] プロパティが [はい] に設定されていることを確認します。プロパティが [いいえ] に設定されている場合、DB インスタンスにはパブリック IP アドレスが割り当てられません。VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスとクライアントのみが、Amazon RDS プライベート IP アドレスを介してデータベースに接続できます。
異なる VPC またはオンプレミスネットワークからアクセスするには、VPC ピアリングや AWS Direct Connect などの追加設定を行う必要があります。[パブリックにアクセス可能] プロパティが [はい] に設定されている場合、VPC の外部にいるクライアントは、インターネットゲートウェイを使用してインターネット経由で DB インスタンスに接続できます。
セキュリティグループの設定を確認する
DB インスタンスのセキュリティグループがデータベースへの適切な受信トラフィックを許可していることを確認します。詳細については、「セキュリティグループによるアクセス制御」を参照してください。
ネットワーク ACL 設定を確認する
ネットワークアクセスコントロールリスト (ネットワーク ACL) は、VPC の特定のサブネット内のリソースのファイアウォールとして機能します。VPC にネットワーク ACL がある場合は、インスタンスとの間のインバウンドトラフィックとアウトバウンドトラフィックを許可するルールがあることを確認します。ネットワーク ACL はすべてのインバウンドトラフィックとアウトバウンドトラフィックをデフォルトで許可しています。ネットワーク ACL の制限が厳しい場合は、エフェメラルポート範囲へのトラフィックを明示的に許可する必要があります。
ネットワークまたはローカルのファイアウォールを確認する
クライアント接続は、オンプレミスネットワークから発信されている可能性があります。お使いのインスタンスがインバウンドとアウトバウンドの通信に使用するポートへのトラフィックとポートからのトラフィックが、ネットワークで許可されているかどうかを確認します。この情報については、ネットワーク管理者に問い合わせる必要がある場合があります。
ルートテーブルの設定を確認する
ルートテーブルが関連する DB サブネットで正しく設定されていることを確認します。
その他のトラブルシューティング
接続に関する問題をさらにトラブルシューティングするには、次のアクションを実行します。
-
次のコマンドを実行して、ネットワーク接続を確認します。example-rds-endpoint と example-port-number の値を、DB インスタンスの RDS エンドポイントとポート番号に置き換えます。
注: Amazon RDS は ping を含むインターネット制御メッセージプロトコル (ICMP) トラフィックを受け入れません。
telnet example-rds-endpoint example-port-number
OR
curl -v http://<example-rds-endpoint>:<PORT>
-
nslookup コマンドを実行して、クライアント側の DNS サーバーが DB インスタンスの DNS エンドポイント名を正しい IP アドレスに解決することを確認します。
nslookup example-instance.example-accountcode.example-region.rds.amazonaws.com
-
DB インスタンスのステータスが利用可能状態であることを確認します。バージョンのアップグレード、インスタンスクラスのアップグレード、マルチ AZ フェイルオーバーなどのデータベースアクティビティにより、短時間停止することがあります。停止すると、DB インスタンスの状態が変化し、接続の問題が発生する可能性があります。
-
接続は DB インスタンスに到達する可能性がありますが、それでも接続は失敗します。DB インスタンスへの接続に使用するユーザー認証情報が正しいことを確認します。必要に応じて、プライマリユーザーパスワードをリセットできます。
-
DB インスタンスに接続するために必要なアクセス許可があることを確認します。
Amazon EC2 を使用して DB インスタンスに接続する
Amazon EC2 と DB インスタンス間の接続を設定するには、Aurora と RDS コンソールで自動接続機能を使用します。
注: 自動接続機能を使用するには、EC2 インスタンスと DB インスタンスが同じ VPC 内にある必要があります。
踏み台ホストなしで EC2 インスタンス接続エンドポイントを使用して、AWS マネジメントコンソールから Amazon RDS などのリソースにアクセスすることもできます。まず、ユーザーが EC2 接続エンドポイントに接続するために必要な AWS Identity and Access Management (IAM) のアクセス許可を持っていることを確認します。また、DB インスタンスのセキュリティグループが VPC エンドポイントからのトラフィックを許可していることも確認します。
**aws ec2-instance-connect open-tunnel ** コマンドを実行して WebSocket トンネルを開きます。
aws ec2-instance-connect open-tunnel --instance-connect-endpoint-id "VPC Endpoint ID"--private-ip-address "Private IP"--local-port "random port number to use locally" --remote-port "rds port number"
関連情報
Oracle DB インスタンスへの接続のトラブルシューティング
Amazon RDS DB インスタンスに接続できない
Oracle のウェブサイトの TNSPING