메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

Oracle DB 인스턴스에 대한 공통 DBA 시스템 작업

이 단원에서는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 공통 DBA 작업을 수행하는 방법에 대해 살펴보겠습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

세션 분리

세션 분리는 Oracle 버전 11.2.0.4.v1 이상에서 지원됩니다.

전용 서버 프로세스를 종료하여 현재 세션을 분리하는 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.disconnect를 사용할 수 있습니다. disconnect 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

sid

숫자

필수

세션 식별자입니다.

serial

숫자

필수

세션 일련번호입니다.

method

varchar

'IMMEDIATE'

선택 사항

유효한 값은 'IMMEDIATE' 또는 'POST_TRANSACTION'입니다.

다음 예제는 세션을 분리합니다.

Copy
begin rdsadmin.rdsadmin_util.disconnect( sid => sid, serial => serial_number); end; /

세션 식별자와 세션 일련번호를 얻으려면, V$SESSION 뷰를 쿼리하십시오. 다음 예제는 사용자 AWSUSER의 모든 세션을 확보합니다.

Copy
select SID, SERIAL#, STATUS from V$SESSION where USERNAME = 'AWSUSER';

이 메서드를 사용하려면 데이터베이스가 열려 있어야 합니다. 세션 분리에 대한 자세한 내용은 Oracle 문서에서 ALTER SYSTEM을 참조하십시오.

세션 종료

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.kill를 사용하여 세션을 종료할 수 있습니다. kill 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

sid

숫자

필수

세션 식별자입니다.

serial

숫자

필수

세션 일련번호입니다.

method

varchar

null

선택 사항

유효한 값은 'IMMEDIATE' 또는 'PROCESS'입니다. 버전 11.2.0.4.v1 이상에서 사용 가능합니다.

다음 예제는 세션을 종료합니다.

Copy
begin rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number); end; /

세션 식별자와 세션 일련번호를 얻으려면, V$SESSION 뷰를 쿼리하십시오. 다음 예제는 사용자 AWSUSER의 모든 세션을 확보합니다.

Copy
select SID, SERIAL#, STATUS from V$SESSION where USERNAME = 'AWSUSER';

11.2.0.4.v1이나 그 이상의 버전을 사용할 경우, IMMEDIATE 또는 PROCESSmethod 파라미터의 값으로 지정할 수 있습니다. PROCESS를 값으로 지정하면 세션과 연결된 프로세스를 종료할 수 있습니다. 이 방법은 IMMEDIATEmethod 값으로 사용하여 세션을 종료하지 못했을 경우에만 사용해야 합니다.

제한 세션 활성화 및 비활성화

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.restricted_session를 사용하여 제한 세션을 활성화 또는 비활성화할 수 있습니다. restricted_session 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_enable

부울

true

선택 사항

true는 제한 세션을 활성화하고, false는 제한 세션을 비활성화하도록 설정됩니다.

다음은 제한 세션을 활성화 및 비활성화하는 방법을 나타낸 예제입니다.

Copy
/* Verify that the database is currently unrestricted. */ select LOGINS from V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ exec rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ select LOGINS from V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ exec rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ select LOGINS from V$INSTANCE; LOGINS ------- ALLOWED

공유 풀 플러시

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.flush_shared_pool를 사용하여 공유 풀을 플러시할 수 있습니다. flush_shared_pool 프로시저에는 파라미터가 없습니다.

다음 예제는 공유 풀을 플러시합니다.

Copy
exec rdsadmin.rdsadmin_util.flush_shared_pool;

버퍼 캐시 플러시

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.flush_buffer_cache를 사용하여 버퍼 캐시를 플러시할 수 있습니다. flush_buffer_cache 프로시저에는 파라미터가 없습니다.

다음 예제는 버퍼 캐시를 플러시합니다.

Copy
exec rdsadmin.rdsadmin_util.flush_buffer_cache;

SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여

일반적으로 여러 객체가 포함되어 있을 수 있는 역할을 사용하여 권한을 이전합니다. Amazon RDS 프로시저 rdsadmin.rdsadmin_util.grant_sys_object를 사용하여 단일 객체에 권한을 부여할 수 있습니다. 이 프로시저는 마스터 계정이 이미 가지고 있는 권한만 역할을 통해, 혹은 직접 부여할 수 있습니다. 시스템 객체에 대한 SELECT 또는 EXECUTE 권한 부여는 Oracle 버전 11.2.0.4.v1 이상에 대해서만 지원됩니다.

grant_sys_object 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_obj_name

varchar2

필수

권한을 부여할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 DBA_OBJECTS에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도해보는 것이 좋습니다.

p_grantee

varchar2

필수

권한을 부여할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.

p_privilege

varchar2

null

필수

p_grant_option

부울

false

선택 사항

true는 부여 옵션과 함께 사용하도록 설정됩니다. p_grant_option 파라미터는 Oracle 버전 11.2.0.4.v8, 12.1.0.1.v5, 및 12.1.0.2.v4 이상에서 지원됩니다.

다음은 V_$SESSION 객체에 대한 선택 권한을 USER1이라는 이름의 사용자에게 부여하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /

다음은 V_$SESSION 객체에 대한 선택 권한을 USER1이라는 이름의 사용자에게 부여 옵션과 함께 부여하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option => true); end; /

객체에 권한을 부여할 수 있으려면 해당 권한을 부여 옵션을 통해 계정에 직접 부여하거나 with admin option을 사용해 부여된 역할을 통해 계정에 부여해야 합니다. 대부분 이미 SELECT_CATALOG_ROLE 역할에 부여된 DBA 뷰에 SELECT 권한을 부여하는 경우가 많습니다. 해당 역할이 아직 with admin option을 통해 사용자에게 직접 부여되지 않았다면 권한을 이전할 수 없습니다. DBA 권한이 있다면 역할을 직접 다른 사용자에게 부여할 수 있습니다.

다음은 SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLEUSER1에게 부여하는 예제입니다. with admin option을 사용했기 때문에, USER1은 이제 SELECT_CATALOG_ROLE에 부여된 SYS 객체 액세스 권한을 부여할 수 있습니다.

Copy
grant SELECT_CATALOG_ROLE to USER1 with admin option; grant EXECUTE_CATALOG_ROLE to USER1 with admin option;

PUBLIC에 이미 부여된 객체는 다시 부여할 필요가 없습니다. grant_sys_object 프로시저를 사용하여 액세스 권한을 다시 부여한다면, 프로시저는 성공을 호출합니다.

마스터가 아닌 사용자에게 권한 부여

SELECT_CATALOG_ROLE 역할을 사용하여 SYS 스키마에 있는 여러 객체에 선택 권한을 부여할 수 있습니다. SELECT_CATALOG_ROLE 역할은 사용자에게 데이터 딕셔너리 뷰에 대한 SELECT 권한을 부여합니다. 다음은 역할 SELECT_CATALOG_ROLE을 사용자 user1에 부여하는 예제입니다.

Copy
grant SELECT_CATALOG_ROLE to user1;

EXECUTE_CATALOG_ROLE 역할을 사용하여 SYS 스키마에 있는 여러 객체에 실행 권한을 부여할 수 있습니다. EXECUTE_CATALOG_ROLE 역할은 사용자에게 데이터 딕셔너리의 패키지와 프로시저에 대한 EXECUTE 권한을 부여합니다. 다음은 역할 EXECUTE_CATALOG_ROLEuser1이라는 사용자에게 부여하는 예제입니다.

Copy
grant EXECUTE_CATALOG_ROLE to user1;

다음은 역할 SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLE이 허용하는 허가를 획득하는 예제입니다.

Copy
select * from ROLE_TAB_PRIVS where ROLE in ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') order by ROLE, TABLE_NAME asc;

다음은 마스터가 아닌 user1이라는 이름의 사용자를 생성한 후 CREATE SESSION 권한과 SELECT 권한을 sh.sales라는 이름의 데이터베이스에 부여하는 예제입니다.

Copy
create user user1 identified by password; grant CREATE SESSION to user1; grant SELECT on sh.sales TO user1;

DBMS_SCHEDULER 작업 변경

Oracle 프로시저 dbms_scheduler.set_attribute를 사용하여 DBMS_SCHEDULER 업무를 수정할 수 있습니다. 자세한 정보는 Oracle 문서의 DBMS_SCHEDULERSET_ATTRIBUTE Procedure를 참조하십시오.

Amazon RDS DB 인스턴스를 작업할 때는, 스키마 이름 SYS를 객체 이름 앞에 붙이십시오. 다음은 월요일 창 객체에 자원 계획 속성을 설정하는 예제입니다.

Copy
begin dbms_scheduler.set_attribute( name => 'SYS.MONDAY_WINDOW', attribute => 'RESOURCE_PLAN', value => 'resource_plan_1'); end; /

사용자 지정 암호 확인 함수 생성

사용자 지정 암호 확인 함수는 두 가지 방법으로 생성할 수 있습니다. 표준 확인 로직을 사용하고 SYS 스키마에 함수를 저장하려면, create_verify_function 프로시저를 사용합니다. 사용자 지정 확인 로직을 사용하거나 SYS 스키마에 함수를 저장하지 않으려면, create_passthrough_verify_fcn 프로시저를 사용합니다.

create_verify_function 프로시저

create_verify_function 프로시저는 Oracle 버전 11.2.0.4.v9 이상, 12.1.0.1.v6 이상, 12.1.0.2.v5 이상에서 지원됩니다.

Amazon RDS프로시저 rdsadmin.rdsadmin_password_verify.create_verify_function을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. create_verify_function 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_verify_function_name

varchar2

필수

사용자 정의 함수 이름입니다. 이 함수는 SYS 스키마에서 자동으로 만들어집니다. 이 함수를 사용자 프로필에 할당합니다.

p_min_length

숫자

8

선택 사항

필요한 최소 문자 수입니다.

p_max_length

숫자

256

선택 사항

허용되는 최대 문자 수입니다.

p_min_letters

숫자

1

선택 사항

필요한 최소 글자 수입니다.

p_min_uppercase

숫자

0

선택 사항

필요한 최소 대문자 수입니다.

p_min_lowercase

숫자

0

선택 사항

필요한 최소 소문자 수입니다.

p_min_digits

숫자

1

선택 사항

필요한 최소 자릿수 숫자입니다.

p_min_special

숫자

0

선택 사항

필요한 최소 특수문자 수입니다.

p_min_different_chars

숫자

3

선택 사항

필요한 최소 고유문자 수입니다.

p_disallow_username

부울

true

선택 사항

true로 설정되어 암호에 사용자 이름을 사용할 수 없습니다.

p_disallow_reverse

부울

true

선택 사항

true로 설정되어 암호에 사용자 이름 반전을 사용할 수 없습니다.

p_disallow_db_name

부울

true

선택 사항

true로 설정되어 암호에 데이터베이스나 서버 이름을 사용할 수 없습니다.

p_disallow_simple_strings

부울

true

선택 사항

true로 설정되어 단순 문자열을 암호로 사용할 수 없습니다.

p_disallow_whitespace

부울

false

선택 사항

true로 설정되어 암호에 공백 문자를 사용할 수 없습니다.

p_disallow_at_sign

부울

false

선택 사항

true로 설정되어 암호에 @ 문자를 사용할 수 없습니다.

암호 확인 기능을 여러 개 만들 수 있습니다.

사용자 지정 기능의 이름에 대한 제한 사항이 있습니다. 사용자 지정 기능의 이름은 기존 시스템 객체의 이름과 같을 수 없고, 문자 30개를 초과할 수 없으며, PASSWORD, VERIFY, COMPLEXITY, ENFORCE 또는 STRENGTH 문자열 중 하나를 포함해야 합니다.

다음 예시에서는 CUSTOM_PASSWORD_FUNCTION이라는 기능을 생성합니다. 이 함수에는 최소한 문자 12개, 대문자 2개, 자릿수 1개, 특수 문자 1개가 필요하며 암호에는 @ 문자를 사용할 수 없습니다.

Copy
begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_min_length => 12, p_min_uppercase => 2, p_min_digits => 1, p_min_special => 1, p_disallow_at_sign => true); end; /

확인 함수의 텍스트를 보려면 DBA_SOURCE를 쿼리하십시오. 다음은 CUSTOM_PASSWORD_FUNCTION이라는 이름의 사용자 지정 암호 기능의 텍스트를 얻는 예제입니다.

Copy
col text format a150 select TEXT from DBA_SOURCE where OWNER = 'SYS' and NAME = 'CUSTOM_PASSWORD_FUNCTION' order by LINE;

확인 함수를 사용자 프로파일과 연결하려면 alter profile을 사용하십시오. 다음은 확인 함수를 DEFAULT 사용자 프로필과 연결하는 예제입니다.

Copy
alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

어떤 사용자 프로파일이 어떤 확인 기능과 연결되어 있는지 보려면 DBA_PROFILES를 쿼리하십시오. 다음은 CUSTOM_PASSWORD_FUNCTION이라는 이름의 사용자 지정 확인 기능과 연결된 프로필을 얻는 예제입니다.

Copy
select * from DBA_PROFILES where RESOURCE = 'PASSWORD' and LIMIT = 'CUSTOM_PASSWORD_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION

다음은 모든 프로필과 프로필에 연결된 암호 확인 기능을 얻는 예제입니다.

Copy
select * from DBA_PROFILES where RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL

create_passthrough_verify_fcn 프로시저

create_passthrough_verify_fcn 프로시저는 Oracle 버전 11.2.0.4.v11 이상과 12.1.0.2.v7 이상에서 지원됩니다.

Amazon RDS프로시저 rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. create_passthrough_verify_fcn 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_verify_function_name

varchar2

필수

사용자 정의 확인 함수의 이름입니다. SYS 스키마에서 자동으로 생성되는 래퍼 함수로서 확인 로직을 포함하지 않습니다. 이 함수를 사용자 프로필에 할당합니다.

p_target_owner

varchar2

필수

사용자 지정 확인 함수의 스키마 소유자입니다.

p_target_function_name

varchar2

필수

확인 로직을 포함하는 기존 사용자 지정 함수의 이름입니다. 사용자 정의 함수는 부울 값을 반환합니다. 사용자의 함수는 암호가 유효할 경우 true를 반환하고 암호가 유효하지 않을 경우 false를 반환해야 합니다.

다음은 PASSWORD_LOGIC_EXTRA_STRONG이라는 함수 로직을 사용하는 암호 확인 함수를 생성하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', p_target_owner => 'TEST_USER', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG'); end; /

확인 기능을 사용자 프로파일과 연결하려면 alter profile를 사용하십시오. 다음은 확인 함수를 DEFAULT 사용자 프로파일과 연결하는 예제입니다.

Copy
alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

사용자 지정 DNS 서버 설정

Amazon RDS는 Oracle을 실행하는 DB 인스턴스에서 아웃바운드 네트워크 액세스를 지원합니다. 사전 요구 사항을 포함한 아웃바운드 네트워크 액세스에 대한 자세한 내용은 Oracle DB 인스턴스에 utl_http, utl_tcp 및 utl_smtp 사용 단원을 참조하십시오.

Amazon RDS Oracle에서는 고객이 소유한 사용자 지정 DNS 서버에서의 DNS(Domain Name Service) 확인이 가능합니다. 사용자 지정 DNS 서버를 통해 Amazon RDS DB 인스턴스에서 전체 주소 도메인 이름만을 확인할 수 있습니다.

사용자 지정 DNS 이름 서버를 설정한 후 변경 사항이 DB 인스턴스에 전파되는 데 최대 30분이 걸립니다. 변경 사항이 DB 인스턴스에 전파된 후 DNS 조회를 필요로 하는 모든 아웃바운드 네트워크 트래픽은 포트 53을 통해 DNS 서버를 쿼리합니다.

Oracle Amazon RDS DB 인스턴스의 사용자 지정 DNS 서버를 설정하려면 다음과 같이 하십시오.

  • VPC에 연결된 DHCP 옵션 세트에서 DNS 이름 서버의 IP 주소에 대해 domain-name-servers 옵션을 설정합니다. 자세한 내용은 DHCP 옵션 세트를 참조하십시오.

    참고

    domain-name-servers 옵션은 최대 4개의 값을 받아들이지만 Amazon RDS DB 인스턴스는 첫 번째 값만을 사용합니다.

  • DNS 서버가 DNS 이름, Amazon EC2 프라이빗 DNS 이름, 고객별 DNS 이름을 비롯한 모든 조회 쿼리를 확인할 수 있는지 확인합니다. 아웃바운드 네트워크 트래픽에 DNS 서버가 처리할 수 없는 DNS 조회가 포함된 경우, DNS 서버에 적절한 업스트림 DNS 공급자가 구성되어 있어야 합니다.

  • 512바이트 이하의 UDP(User Datagram Protocol) 응답을 생성하도록 DNS 서버를 구성하십시오.

  • 1,024바이트 이하의 TCP(Transmission Control Protocol) 응답을 생성하도록 DNS 서버를 구성하십시오.

  • 포트 53을 통한 Amazon RDS DB 인스턴스로부터의 인바운드 트래픽을 허용하도록 DNS 서버를 구성하십시오. DNS 서버가 Amazon VPC에 있는 경우, VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 인바운드 규칙이 포함된 보안 그룹이 있어야 합니다. DNS 서버가 Amazon VPC에 없는 경우, 포트 53에서 UDP 및 TCP 트래픽을 허용하는 적절한 방화벽 화이트리스트가 있어야 합니다.

    자세한 내용은 VPC의 보안 그룹규칙 추가 및 제거를 참조하십시오.

  • 포트 53을 통한 아웃바운드 트래픽을 허용하도록 Amazon RDS DB 인스턴스의 VPC를 구성하십시오. VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 아웃바운드 규칙이 포함된 보안 그룹이 있어야 합니다.

    자세한 내용은 VPC의 보안 그룹규칙 추가 및 제거를 참조하십시오.

  • Amazon RDS DB 인스턴스와 DNS 서버 간 라우팅 경로가 DNS 트래픽을 허용하도록 올바로 구성되어야 합니다.

    • Amazon RDS DB 인스턴스와 DNS 서버가 같은 VPC에 있지 않은 경우, 그 사이에 피어링 연결을 구축해야 합니다. 자세한 내용은 VPC 피어링이란?을 참조하십시오.

관련 주제