為什麼我無法連線到我的 Amazon RDS for Oracle 資料庫執行個體?
我無法連線到 Amazon Relational Database Service (Amazon RDS) 以取得 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) 外部連線到資料庫執行個體,則請確認資料庫執行個體的可公開存取屬性是否設定為是。如果將屬性設定為否,則資料庫執行個體並未指派公有 IP 位址。只有 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和 VPC 內部的用戶端可以透過 Amazon RDS 私有 IP 位址連線到您的資料庫。
如需從不同的 VPC 或內部部署網路存取,您必須設定其他組態,例如 VPC 對等或 AWS Direct Connect。如果將可公開存取屬性設定為是,則 VPC 外部的用戶端可以透過網際網路使用網際網路閘道連線到資料庫執行個體。
檢查安全群組設定
請確認資料庫執行個體的安全群組是否允許您的資料庫適當的傳入流量。如需詳細資訊,請參閱使用安全群組控制存取。
檢查網路 ACL 設定
網路存取控制清單 (網路 ACL) 可作為 VPC 特定子網路中資源的防火牆。如果您的 VPC 具有網路 ACL,則請確認它們是否具有允許往返執行個體的傳入和傳出流量的規則。依預設,網路 ACL 會允許所有傳入和傳出流量。如果您的網路 ACL 限制更嚴格,則您必須明確允許暫時性連接埠範圍的流量。
檢查您的網路或本機防火牆
您的用戶端連線可能源自內部部署網路。請確認網路是否允許往返連接埠的流量,該流量是執行個體用於傳入和傳出的通訊。您可能需要聯絡您的網路管理員以取得此資訊。
檢查路由表設定
檢查您的路由表是否與相關的資料庫子網路正確設定。
進一步疑難排解
若要對連線問題進一步疑難排解,請執行下列動作:
-
執行下列命令以驗證網路連線。將 example-rds-endpoint 和 example-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 與資料庫執行個體之間的連線,請使用 Amazon RDS 主控台中的](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connect-instance-to-resources.html#connect-ec2-instance-to-rds-database)自動連線功能[。
**注意:**若要使用自動連線功能,EC2 執行個體和資料庫執行個體必須位於相同的 VPC。
您也可以使用不含堡壘主機的 EC2 執行個體連線端點,從 AWS 管理主控台存取資源 (例如,Amazon RDS)。首先,請檢查您的使用者是否具有連線至 EC2 連線端點所需的 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 網站上的 TNSPING
相關內容
- 已提問 8 個月前lg...
- 已提問 8 個月前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前