跳至內容

為什麼我無法連線到我的 Amazon RDS for Oracle 資料庫執行個體?

2 分的閱讀內容
0

我無法連線到我的 Amazon Relational Database Service (Amazon RDS) for Oracle 資料庫執行個體。

簡短說明

以下是 RDS for Oracle 資料庫執行個體發生連線問題最常見的原因:

  • 您的安全群組、網路存取控制清單 (網路 ACL) 或本機防火牆組態不正確。不正確的組態可能會封鎖前往執行個體的流量。
  • 您的執行個體未處於可用狀態。
  • 您使用了錯誤的使用者憑證。
  • 您使用錯誤的端點連線至 RDS 資料庫執行個體。
  • 從用戶端到資料庫執行個體的連線不相容。
  • 您沒有必要的權限。

解決方法

使用 TNSPING 檢查連線

**注意:**您必須安裝 Oracle 用戶端,才能使用 TNSPING 公用程式。

使用 TNSPING 公用程式檢查 Oracle 用戶端是否可以連線至資料庫執行個體。如果您已在 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 用戶端無法連線至資料庫執行個體,請檢查以下組態。

檢查 VPC 設定

如果您從虛擬私有雲端 (VPC) 外部連線至資料庫執行個體,請確認資料庫執行個體的 Publicly Accessible (公開存取) 屬性設定為 Yes (是)。如果屬性設定為 No (否),資料庫執行個體就不會取得公共 IP 位址。只有 VPC 內的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和用戶端,可以透過 Amazon RDS 私有 IP 位址連線到您的資料庫。

若要從不同 VPC 或內部部署網路存取,您必須設定其他組態,例如 VPC 對等互連AWS Direct Connect。如果 Publicly Accessible (公開存取) 屬性設定為 Yes (是),則 VPC 外部的用戶端可以透過網際網路閘道經由網際網路連線至您的資料庫執行個體。

檢查安全群組設定

確認資料庫執行個體的安全群組允許適當的傳入流量到達您的資料庫。如需更多資訊,請參閱使用安全群組控制存取

檢查網路 ACL 設定

網路存取控制清單 (網路 ACL) 會作為 VPC 特定子網路中資源的防火牆。如果您的 VPC 有網路 ACL,請確認其中包含允許傳入和傳出流量往返執行個體的規則。網路 ACL 預設允許所有傳入和傳出流量。如果您的網路 ACL 較嚴格,您必須明確允許暫時連接埠範圍的流量。

檢查您的網路或本機防火牆

您的用戶端連線可能來自內部部署網路。確認網路允許流量往返執行個體用於傳入和傳出通訊的連接埠。您可能需要聯絡網路管理員取得此資訊。

檢查您的路由表設定

檢查您的路由表是否已使用相關聯的資料庫子網路正確設定。

進一步疑難排解

若要進一步疑難排解連線問題,請採取以下動作:

  • 執行以下命令以驗證網路連線。將 example-rds-endpointexample-port-number 值替換為資料庫執行個體的 RDS 端點和連接埠號碼。
    **注意:**Amazon RDS 不支援網際網路控制訊息通訊協定 (ICMP) 流量,包括 ping。

    telnet example-rds-endpoint example-port-number  
    OR   
    curl -v http://<example-rds-endpoint>:<PORT>
  • 執行 nslookup 命令,確認用戶端的 DNS 伺服器將資料庫執行個體的 DNS 端點名稱解析為正確的 IP 位址:

    nslookup  example-instance.example-accountcode.example-region.rds.amazonaws.com
  • 確認您的資料庫執行個體狀態可用狀態。版本升級、執行個體類別升級或多可用區域容錯移轉等資料庫活動,可能會造成短暫中斷。中斷可能會變更資料庫執行個體狀態並造成連線問題。

  • 連線可能會到達資料庫執行個體,但連線仍然失敗。確認您用來連線至資料庫執行個體的使用者憑證正確。如有需要,您可以重設主要使用者密碼

  • 確認您具備連線至資料庫執行個體所需的權限。

使用 Amazon EC2 連線至您的資料庫執行個體

若要設定 Amazon EC2 與資料庫執行個體之間的連線,請使用 Aurora and RDS console 中的自動連線功能

**注意:**若要使用自動連線功能,EC2 執行個體和資料庫執行個體必須位於相同 VPC。

您也可以使用 EC2 Instance Connect 端點,而不透過堡壘主機,從 AWS 管理主控台存取 Amazon RDS 等資源。首先,檢查您的使用者是否具有連線至 EC2 Instance Connect 端點所需的 AWS Identity and Access Management (IAM) 權限。另外,檢查資料庫執行個體的安全群組是否允許來自 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 資料庫執行個體的連線

無法連線至 Amazon RDS 資料庫執行個體

Oracle 網站上的 TNSPING

AWS 官方已更新 3 年前