Amazon RDS for Oracle 데이터베이스 인스턴스에 연결할 수 없는 이유가 무엇인가요?

4분 분량
0

Amazon Relational Database Service(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 설정 확인

Virtual Private Cloud(VPC) 외부에서 DB 인스턴스에 연결하는 경우 DB 인스턴스의 퍼블릭 액세스 가능 속성Yes로 설정되어 있는지 확인합니다. 이 속성이 No로 설정된 경우 DB 인스턴스에 퍼블릭 IP 주소가 할당되지 않습니다. VPC 내부의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스와 클라이언트만 Amazon RDS 프라이빗 IP 주소를 통해 데이터베이스에 연결할 수 있습니다.

다른 VPC 또는 온프레미스 네트워크에서 액세스하려면 VPC 피어링 또는 AWS Direct Connect와 같은 추가 구성을 구성해야 합니다. 퍼블릭 액세스 가능 속성을 Yes로 설정하면 VPC 외부에 있는 클라이언트가 인터넷 게이트웨이로 인터넷을 통해 DB 인스턴스에 연결할 수 있습니다.

보안 그룹 설정 확인

DB 인스턴스의 보안 그룹이 데이터베이스로 들어오는 적절한 트래픽을 허용하는지 확인합니다. 자세한 내용은 보안 그룹을 통한 액세스 제어를 참조하세요.

네트워크 ACL 설정 확인

네트워크 액세스 제어 목록(네트워크 ACL)은 VPC의 특정 서브넷에 있는 리소스에 대한 방화벽 역할을 합니다. VPC에 네트워크 ACL이 있는 경우 인스턴스에 들어오고 나가는 인바운드 및 아웃바운드 트래픽을 허용하는 규칙이 있는지 확인합니다. 기본적으로 네트워크 ACL은 모든 인바운드 및 아웃바운드 트래픽을 허용합니다. 네트워크 ACL이 더 제한적인 경우 임시 포트 범위로의 트래픽을 명시적으로 허용해야 합니다.

네트워크 또는 로컬 방화벽 확인

클라이언트 연결이 온프레미스 네트워크에서 시작되었을 수 있습니다. 인스턴스가 인바운드 및 아웃바운드 통신에 사용하는 포트를 오가는 트래픽을 네트워크에서 허용하는지 확인합니다. 이 정보는 네트워크 관리자에게 문의해야 할 수 있습니다.

라우팅 테이블 설정 확인

라우팅 테이블이 연결된 DB 서브넷으로 올바르게 구성되어 있는지 확인합니다.

추가 문제 해결

연결 문제를 추가로 해결하려면 다음 작업을 수행하세요.

  • 다음 명령을 실행하여 네트워크 연결을 확인합니다. example-rds-endpointexample-port-number 값을 DB 인스턴스의 RDS 엔드포인트 및 포트 번호로 바꿉니다.
    참고: Amazon RDS는 핑을 포함한 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 인스턴스 간의 연결을 구성하려면 Amazon RDS 콘솔의 자동 연결 기능을 사용합니다.

참고: 자동 연결 기능을 사용하려면 EC2 인스턴스와 DB 인스턴스가 동일한 VPC에 있어야 합니다.

또한 Bastion Host 없이 EC2 인스턴스 연결 엔드포인트를 사용하여 AWS Management Console에서 Amazon RDS와 같은 리소스에 액세스할 수 있습니다. 먼저 사용자에게 EC2 연결 엔드포인트에 연결하는 데 필요한 AWS Identity and Access Management(AWS 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

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음