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 인증을 사용 중이라면 Kerberos 인증을 사용하여 Oracle에 연결 단원을 참조하십시오.

Console

콘솔을 사용하여 엔드포인트를 찾으려면

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 콘솔의 오른쪽 상단에서 DB 인스턴스의 AWS 리전을 선택합니다.

  3. DB 인스턴스에 대한 DNS 이름과 포트 번호를 찾습니다.

    1. DB 인스턴스 목록을 표시할 인스턴스를 선택합니다.

    2. 인스턴스 세부 정보를 표시할 Oracle DB 인스턴스 이름을 선택합니다.

    3. Connectivity & security(연결 및 보안) 탭에서 엔드포인트를 복사합니다. 또한 포트 번호를 적어 둡니다. DB 인스턴스에 연결하려면 엔드포인트와 포트 번호가 모두 필요합니다.

      
                                DB 인스턴스 엔드포인트 및 포트 찾기

AWS CLI

AWS CLI를 사용하여 Oracle DB 인스턴스의 엔드포인트를 찾으려면 describe-db-instances 명령을 호출하십시오.

예 AWS CLI를 사용하여 엔드포인트를 찾으려면

aws rds describe-db-instances

출력에서 Endpoint를 검색하여 DB 인스턴스의 DNS 이름과 포트 번호를 찾습니다. DNS 이름은 출력의 Address 라인에 포함되어 있습니다. 다음은 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 Developer 다운로드 페이지를 참조하세요.

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 instance 정보를 입력합니다.

    • 연결 이름에 연결을 설명하는 이름(예: Oracle-RDS)을 입력합니다.

    • 사용자 이름에 DB 인스턴스의 데이터베이스 관리자 이름을 입력합니다.

    • 암호에 데이터베이스 관리자 암호를 입력합니다.

    • 호스트 이름에 DB 인스턴스의 DNS 이름을 입력하거나 붙여 넣습니다.

    • 포트에 포트 번호를 입력합니다.

    • SID에 Oracle 데이터베이스 SID를 입력합니다.

    정보가 모두 입력된 대화 상자는 다음과 비슷한 모습이 되어야 합니다.

    
                        Oracle SQL Developer에서 새로운 연결 생성
  4. [Connect]를 선택합니다.

  5. 이제 자체 데이터베이스 생성을 시작하고 평소대로 DB 인스턴스와 데이터베이스에 대한 쿼리 실행을 시작할 수 있습니다. DB 인스턴스에 대한 테스트 쿼리를 실행하려면 다음 중 하나를 수행합니다.

    1. 해당 연결의 워크시트 탭에 다음 SQL 쿼리를 입력합니다.

      SELECT NAME FROM V$DATABASE;
    2. 실행 아이콘을 클릭하여 쿼리를 실행합니다.

      
                                Oracle SQL Developer에서 execute 아이콘을 사용하여 쿼리 실행

      SQL Developer가 데이터베이스 이름을 반환합니다.

      
                                Oracle SQL Developer의 쿼리 결과

SQL*Plus를 사용하여 DB 인스턴스에 연결

SQL*Plus 같은 유틸리티를 사용하면 Oracle을 실행하는 Amazon RDS DB 인스턴스에 연결할 수 있습니다. 독립형 버전의 SQL*Plus를 포함하는 Oracle 인스턴트 클라이언트를 다운로드하려면 Oracle 인스턴트 클라이언트 다운로드를 참조하세요.

DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. DB 인스턴스의 DNS 이름 및 포트 번호를 찾는 자세한 내용은 Oracle DB 인스턴스의 엔드포인트 찾기를 참조하십시오.

예 SQL*Plus를 사용하여 Oracle DB 인스턴스에 연결하려면

다음 예제에서 DB 인스턴스 관리자의 사용자 이름을 대체합니다. 또한 DB 인스턴스를 DNS 이름으로 대체한 다음, 포트 번호와 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 보안 소켓 Layer 섹션을 참조하세요.

프로세스 아키텍처 고려 사항

서버 프로세스는 Oracle DB 인스턴스에 대한 사용자 연결을 처리합니다. 기본적으로 Oracle DB 인스턴스는 전용 서버 프로세스를 사용합니다. 전용 서버 프로세스에서는 서버 프로세스 하나로 사용자 프로세스 하나만 처리합니다. 원한다면 공유 서버 프로세스를 구성할 수 있습니다. 공유 서버 프로세스에서는 서버 프로세스 하나로 사용자 프로세스를 여러 개 처리할 수 있습니다.

다수의 사용자 세션에서 서버 메모리를 지나치게 많이 사용한다면 공유 서버 프로세스를 사용해 보십시오. 또한 세션이 빈번하게 연결 및 연결 해제되어 성능 문제가 발생하는 경우에도 공유 서버 프로세스의 사용을 고려해 볼 수 있습니다. 그러나 공유 서버 프로세스 사용에는 단점도 있습니다. 예를 들어, 공유 서버 프로세스는 CPU 리소스를 과도하게 사용할 수 있고 구성 및 관리하기가 훨씬 복잡합니다.

전용 및 공유 서버 프로세스에 대한 자세한 내용은 Oracle 설명서의 About Dedicated and Shared Server Processes를 참조하십시오. RDS for Oracle DB 인스턴스에서 공유 서버 프로세스를 구성하는 방법에 대한 자세한 내용은 지식 센터에서 공유 서버에서 Amazon RDS for Oracle Database가 작동하도록 구성하려면 어떻게 해야 합니까?​를 참조하세요.

Oracle DB 인스턴스에 대한 연결 문제 해결

다음은 Oracle DB 인스턴스 연결을 시도할 때 발생할 수 있는 문제입니다.

문제 문제 해결 제안

DB 인스턴스에 연결할 수 없습니다.

새로 생성한 DB 인스턴스의 경우, DB 인스턴스를 사용할 준비가 될 때까지 DB 인스턴스의 상태는 [creating]입니다. 상태가 available로 변경되면 DB 인스턴스에 연결할 수 있습니다. DB 인스턴스 클래스와 스토리지의 양에 따라 새 DB 인스턴스를 사용할 수 있을 때까지 최대 20분이 걸릴 수 있습니다.

DB 인스턴스에 연결할 수 없습니다.

DB 인스턴스를 만들 때 지정한 포트를 통해 통신을 보내거나 받을 수 없으면 DB 인스턴스에 연결할 수 없습니다. 네트워크 관리자에게 문의해 DB 인스턴스에 대해 지정한 포트가 인바운드 및 아웃바운드 통신을 허용하는지 확인하십시오.

DB 인스턴스에 연결할 수 없습니다.

로컬 방화벽에서 적용되는 액세스 규칙과 DB 인스턴스의 보안 그룹에 있는 DB 인스턴스에 액세스하기 위한 권한을 부여한 IP 주소가 일치하지 않을 수 있습니다. 방화벽의 인바운드 또는 아웃바운드 규칙에 문제가 있을 가능성이 높습니다.

보안 그룹에서 인바운드 규칙을 추가하거나 편집할 수 있습니다. 소스에서 내 IP를 선택합니다. 이렇게 하면 브라우저에서 감지된 IP 주소에서 DB 인스턴스에 액세스할 수 있습니다. 자세한 내용은 Amazon Virtual Private Cloud VPC 및 Amazon RDS 섹션을 참조하세요.

보안 그룹에 대한 자세한 내용은 보안 그룹을 통한 액세스 제어 단원을 참조하십시오.

보안 그룹의 규칙 설정 절차에 대한 자세한 내용은 자습서: DB 인스턴스에 사용할 Amazon VPC 생성 단원을 참조하십시오.

대상 호스트 또는 객체가 존재하지 않으므로 연결이 실패했습니다 - Oracle, 오류: ORA-12545(Connect failed because target host or object does not exist – Oracle, Error: ORA-12545)

서버 이름과 포트 번호를 정확하게 지정했는지 확인하십시오. 서버 이름에는 DNS 이름을 입력하거나 콘솔에서 붙여 넣습니다.

DB 인스턴스의 DNS 이름 및 포트 번호를 찾는 자세한 내용은 Oracle DB 인스턴스의 엔드포인트 찾기를 참조하십시오.

Invalid username/password; logon denied – Oracle, Error: ORA-01017(잘못된 사용자 이름/암호이므로, 로그인이 거부되었습니다 - 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 파라미터의 변경 내용은 즉시 적용됩니다.

파라미터 유효한 값 정적/동적 설명

sqlnetora.default_sdu_size

Oracle 12c – 512 ~ 2097152

동적

바이트로 표기하는 세션 데이터 단위(SDU).

SDU는 버퍼에 두었다가 한 번에 네트워크로 전송하는 데이터의 양입니다.

sqlnetora.diag_adr_enabled

ON, OFF

동적

ADR(Automatic Diagnostic Repository) 추적을 활성화하거나 비활성화하는 값.

ON은 사용하는 ADR 파일 추적을 지정합니다.

OFF는 사용하는 비ADR 파일 추적을 지정합니다.

sqlnetora.recv_buf_size

8192 to 268435456

동적

세션 작업 수신을 위한 버퍼 공간 제한. TCP/IP, SSL을 사용하는 TCP/IP, SDP 프로토콜이 지원합니다.

sqlnetora.send_buf_size

8192 to 268435456

동적

세션 작업 발송을 위한 버퍼 공간 제한. TCP/IP, SSL을 사용하는 TCP/IP, 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

0 to 1440

동적

클라이언트-서버 연결이 활성인지 확인하기 위해 점검을 보내는 시간 간격(분).

sqlnetora.sqlnet.inbound_connect_timeout

0 또는 10~7200

동적

클라이언트가 데이터베이스 서버에 연결하고 필요한 인증 정보를 제공하는 시간(초).

sqlnetora.sqlnet.outbound_connect_timeout

0 또는 10~7200

동적

클라이언트가 Oracle Net 연결을 DB 인스턴스에 수립하는 시간(초).

sqlnetora.sqlnet.recv_timeout

0 또는 10~7200

동적

데이터베이스 서버가 연결 수립 후 클라이언트 데이터를 기다리는 시간(초).

sqlnetora.sqlnet.send_timeout

0 또는 10~7200

동적

데이터베이스 서버가 연결 수립 후 클라이언트에 작업 전송을 완료하는 시간(초).

sqlnetora.tcp.connect_timeout

0 또는 10~7200

동적

클라이언트가 TCP 연결을 데이터베이스 서버에 수립하는 시간(초).

sqlnetora.trace_level_server

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

동적

비ADR 추적의 경우, 지정된 레벨에서 서버 추적을 켜거나 끄십시오.

지원되는 각 sqlnet.ora 파라미터의 기본값은 해당 릴리스에서 Oracle의 기본값입니다. Oracle Database 12c의 기본값에 대한 자세한 내용은 Oracle Database 12c 설명서에서 Parameters for the sqlnet.ora file을 참조하세요.

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 인스턴스에 연결을 참조하십시오.