Oracle DB 인스턴스에 대한 공통 시스템 작업 수행 - Amazon Relational Database Service

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

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

세션 분리

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

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

sid

숫자

세션 식별자입니다.

serial

숫자

세션 일련번호입니다.

method

varchar

'IMMEDIATE'

아니요

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

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

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

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

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'입니다. IMMEDIATE를 지정하면 다음 문을 실행하는 것과 같은 효과가 있습니다.

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

PROCESS를 지정하면 세션과 연결된 프로세스를 종료합니다. IMMEDIATE를 사용하여 세션이 종료되지 못한 경우에만 PROCESS를 지정하세요.

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

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';

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

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'IMMEDIATE'); END; /

다음 예제에서는 세션과 연결된 프로세스를 종료합니다.

BEGIN rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number, method => 'PROCESS'); END; /

세션에서 SQL 문 취소

세션에서 SQL 문을 취소하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.cancel을 사용합니다.

참고

이 절차는 Oracle Database 19c(19.0.0)와 RDS for Oracle의 모든 상위 메이저 및 마이너 버전에서 지원됩니다.

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

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

sid

숫자

세션 식별자입니다.

serial

숫자

세션 일련번호입니다.

sql_id

varchar2

null

아니요

SQL 문의 SQL 식별자입니다.

다음 예제는 세션에서 SQL 문을 취소합니다.

begin rdsadmin.rdsadmin_util.cancel( sid => sid, serial => serial_number, sql_id => sql_id); end; /

세션 식별자, 세션 일련 번호 및 SQL의 SQL 식별자를 가져오려면 V$SESSION 보기를 쿼리합니다. 다음 예제에서는 사용자 AWSUSER의 모든 세션 및 SQL 식별자를 가져옵니다.

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

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

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

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

p_enable

부울

true

아니요

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

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

/* 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 프로시저에는 파라미터가 없습니다.

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

EXEC rdsadmin.rdsadmin_util.flush_shared_pool;

버퍼 캐시 플러시

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

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

EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;

데이터베이스 스마트 플래시 캐시 플러시

데이터베이스 스마트 캐시를 플러시하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.flush_flash_cache를 사용합니다. flush_flash_cache 프로시저에는 파라미터가 없습니다. 다음 예는 데이터베이스 스마트 플래시 캐시를 플러시합니다.

EXEC rdsadmin.rdsadmin_util.flush_flash_cache;

RDS for Oracle로 데이터베이스 스마트 플래시 캐시를 사용하는 방법에 대한 자세한 내용은 RDS for Oracle 인스턴스 스토어에 임시 데이터 저장 섹션을 참조하세요.

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

일반적으로 여러 객체가 포함되어 있을 수 있는 역할을 사용하여 권한을 이전합니다. 단일 객체에 권한을 부여하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.grant_sys_object를 사용합니다. 이 프로시저는 마스터 사용자가 역할이나 직접 부여를 통해 이미 부여받은 권한만 부여합니다.

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

중요

대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 모든 파라미터 값에 대문자를 사용합니다. 예를 들어 CREATE USER myuser 또는 CREATE USER MYUSER를 실행하는 경우 데이터 딕셔너리에 MYUSER가 저장됩니다. 그러나 CREATE USER "MyUser"에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 MyUser에 저장합니다.

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

p_obj_name

varchar2

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

p_grantee

varchar2

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

p_privilege

varchar2

null

p_grant_option

boolean

false

아니요

true는 부여 옵션과 함께 사용하도록 설정됩니다. p_grant_option 파라미터는 12.2.0.1.v4 이상, 모든 12.2.0.1 버전, 모든 19.0.0 버전에 대해 지원됩니다.

다음 예에서는 V_$SESSION이라는 객체에 대한 선택 권한을 USER1이라는 사용자에게 부여합니다.

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

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

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 역할에 부여된 DBA 뷰에 SELECT_CATALOG_ROLE 권한을 부여하는 경우가 많습니다. 해당 역할이 아직 with admin option을 통해 사용자에게 직접 부여되지 않았다면 권한을 양도할 수 없습니다. DBA 권한이 있다면 역할을 직접 다른 사용자에게 부여할 수 있습니다.

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

GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;

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

SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소

단일 객체에 대한 권한을 취소하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.revoke_sys_object를 사용합니다. 이 프로시저는 마스터 계정이 역할 또는 직접 부여를 통해 이미 부여받은 권한만 취소합니다.

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

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

p_obj_name

varchar2

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

p_revokee

varchar2

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

p_privilege

varchar2

null

다음 예에서는 V_$SESSION이라는 객체에 대한 선택 권한을 USER1이라는 사용자에게서 취소합니다.

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

Oracle DB 인스턴스의 RDS_X$ 뷰 관리

SYS를 통해서만 액세스할 수 있는 SYS.X$ 고정 테이블에 액세스해야 할 수도 있습니다. 대상이 되는 X$ 표에 SYS.RDS_X$ 뷰를 만들려면 rdsadmin.rdsadmin_util 패키지의 프로시저를 사용합니다. 마스터 사용자에게 RDS_X$ 뷰에 대한 SELECT … WITH GRANT OPTION 권한이 자동으로 부여됩니다.

rdsadmin.rdsadmin_util 프로시저는 다음 데이터베이스 엔진 버전에서 사용할 수 있습니다.

  • Oracle Database 21c 버전 21.0.0.0.ru-2023-10.rur-2023-10.r1 이상

  • Oracle Database 19c 버전 19.0.0.0.ru-2023-10.rur-2023-10.r1 이상

중요

rdsadmin.rdsadmin_util 패키지는 내부적으로 X$ 표에 뷰를 생성합니다. X$ 표는 Oracle Database 설명서에 설명되어 있지 않은 내부 시스템 객체입니다. 비 프로덕션 데이터베이스에서 특정 뷰를 테스트하고 Oracle Support의 안내에 따라 프로덕션 데이터베이스에서만 뷰를 생성하는 것이 좋습니다.

RDS_X$ 뷰에서 사용할 수 있는 X$ 고정 표 나열

RDS_X$ 뷰에 사용할 수 있는 X$ 표를 나열하려면 RDS 프로시저 rdsadmin.rdsadmin_util.list_allowed_sys_x$_views를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다. 다음 문에는 해당하는 모든 X$ 표가 나열되어 있습니다(샘플 출력 포함).

SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'

대상 X$ 표 목록은 시간이 지남에 따라 변경될 수 있습니다. 대상 X$ 고정 표 목록을 최신으로 유지하려면 주기적으로 list_allowed_sys_x$_views를 다시 실행하세요.

SYS.RDS_X$ 뷰 생성

대상이 되는 X$ 표에 RDS_X$ 뷰를 만들려면 RDS 프로시저 rdsadmin.rdsadmin_util.create_sys_x$_view를 사용합니다. rdsadmin.rdsadmin_util.list_allowed_sys_x$_views의 출력에 나열된 표에 대한 뷰만 생성할 수 있습니다. create_sys_x$_view 프로시저는 다음 파라미터를 수용합니다.

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

p_x$_tbl

varchar2

Null

유효한 X$ 표 이름입니다. 이 값은 list_allowed_sys_x$_views에서 보고한 X$ 표 중 하나여야 합니다.

p_force_creation

불린(Boolean)

FALSE

아니요

X$ 표에 이미 존재하는 RDS_X$ 뷰를 강제로 생성할지 여부를 나타내는 값입니다. 기본적으로 RDS는 뷰가 이미 있는 경우 뷰를 만들지 않습니다. 강제로 생성하려면 이 파라미터를 TRUE로 설정합니다.

다음 예제에서는 X$KGLOB 표에 SYS.RDS_X$KGLOB 뷰를 생성합니다. 뷰 이름 형식은 RDS_X$tablename입니다.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

다음 데이터 사전 쿼리는 SYS.RDS_X$KGLOB 뷰를 나열하고 상태를 보여줍니다. 마스터 사용자에게 이 뷰에 대한 SELECT ... WITH GRANT OPTION 권한이 자동으로 부여됩니다.

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
중요

업그레이드 전과 후에 X$ 표가 동일하게 유지된다고 보장할 수는 없습니다. RDS for Oracle은 엔진 업그레이드 중에 X$ 표에서 RDS_X$ 뷰를 삭제하고 다시 생성합니다. 그런 다음 마스터 사용자에게 SELECT ... WITH GRANT OPTION 권한을 부여합니다. 업그레이드 후에는 해당 RDS_X$ 뷰에서 필요에 따라 데이터베이스 사용자에게 권한을 부여합니다.

SYS.RDS_X$ 뷰 목록

기존 RDS_X$ 뷰를 나열하려면 RDS 프로시저 rdsadmin.rdsadmin_util.list_created_sys_x$_views를 사용합니다. 프로시저에는 create_sys_x$_view 프로시저로 만든 뷰만 나열됩니다. 다음 예제에서는 해당하는 RDS_X$ 뷰(샘플 출력 포함)가 있는 X$ 표를 나열합니다.

SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.

RDS_X$ 뷰 삭제

SYS.RDS_X$ 뷰를 삭제하려면 RDS 프로시저 rdsadmin.rdsadmin_util.drop_sys_x$_view를 사용합니다. rdsadmin.rdsadmin_util.list_allowed_sys_x$_views의 출력에 나열된 뷰만 삭제할 수 있습니다. drop_sys_x$_view 프로시저는 다음 파라미터를 받습니다.

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

p_x$_tbl

varchar2

Null

유효한 X$ 고정 표 이름입니다. 이 값은 list_created_sys_x$_views에서 보고한 X$ 고정 표 중 하나여야 합니다.

다음 예제에서는 X$KGLOB 표에 만든 RDS_X$KGLOB 뷰를 삭제합니다.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

다음 예제에서는 SYS.RDS_X$KGLOB 뷰가 삭제되었음을 보여줍니다(샘플 출력 포함).

SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected

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

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

GRANT SELECT_CATALOG_ROLE TO user1;

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

GRANT EXECUTE_CATALOG_ROLE TO user1;

다음 예에서는 SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLE이라는 역할에서 허용하는 권한을 얻습니다.

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;

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

CREATE USER user1 IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TO user1; GRANT SELECT ON sh.sales TO user1;

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

사용자 지정 암호 확인 함수는 다음과 같은 방법으로 생성할 수 있습니다.

  • 표준 확인 로직을 사용하고 SYS 스키마에 함수를 저장하려면, create_verify_function 프로시저를 사용합니다.

  • 사용자 지정 확인 로직을 사용하거나 SYS 스키마에 함수를 저장하지 않으려면, create_passthrough_verify_fcn 프로시저를 사용합니다.

create_verify_function 프로시저

Amazon RDS 프로시저 rdsadmin.rdsadmin_password_verify.create_verify_function을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. create_verify_function 절차는 RDS for Oracle의 버전 12.1.0.2.v5 이상의 모든 메이저 및 마이너 버전에서 지원됩니다.

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

boolean

false

아니요

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

p_disallow_at_sign

boolean

false

아니요

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

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

사용자 지정 기능의 이름에 대한 제한 사항이 있습니다. 사용자 지정 함수는 기존 시스템 객체와 이름이 같을 수 없고, 30자를 넘어서는 안 됩니다. 또한 PASSWORD, VERIFY, COMPLEXITY, ENFORCE, STRENGTH 중 한 가지 문자열을 포함해야 합니다.

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

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이라는 이름의 사용자 지정 암호 기능의 텍스트를 얻는 예제입니다.

COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = 'CUSTOM_PASSWORD_FUNCTION' ORDER BY LINE;

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

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

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

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION

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

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 절차는 RDS for Oracle의 버전 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이라는 함수 로직을 사용하는 암호 확인 함수를 생성하는 예제입니다.

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 사용자 프로파일과 연결하는 예제입니다.

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;

사용자 지정 DNS 서버 설정

Amazon RDS는 Oracle을 실행하는 DB 인스턴스에서 아웃바운드 네트워크 액세스를 지원합니다. 사전 요구 사항을 포함한 아웃바운드 네트워크 액세스에 대한 자세한 내용은 인증서 및 Oracle Wallet을 사용하여 UTL_HTTP 액세스 구성 섹션을 참조하세요.

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

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

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

  • Virtual Private Cloud(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 피어링이란?을 참조하세요.

시스템 진단 이벤트 설정 및 설정 해제

세션 수준에서 진단 이벤트를 설정하고 설정 해제하려면 ALTER SESSION SET EVENTS라는 Oracle SQL 문을 사용하면 됩니다. 하지만 시스템 수준에서 이벤트를 설정하는 데에는 Oracle SQL을 사용할 수 없습니다. 대신 rdsadmin.rdsadmin_util 패키지의 시스템 이벤트 프로시저를 사용합니다. 시스템 이벤트 프로시저는 다음 엔진 버전에서 사용할 수 있습니다.

  • 모든 Oracle Database 21c 버전

  • 19.0.0.0.ru-2020-10.rur-2020-10.r1 이상의 Oracle Database 19c 버전

    자세한 내용은 Amazon RDS for Oracle 릴리스 정보버전 19.0.0.0.ru-2020-10.rur-2020-10.r1을 참조하세요.

  • 12.2.0.1.ru-2020-10.rur-2020-10.r1 이상의 Oracle Database 12c 릴리스 2(12.2.0.1) 버전

    자세한 내용은 Amazon RDS for Oracle 릴리스 정보버전 12.2.0.1.ru-2020-10.rur-2020-10.r1을 참조하세요.

  • 12.1.0.2.V22 이상의 Oracle Database 12c 릴리스 1(12.1.0.2) 버전

    자세한 내용은 Amazon RDS for Oracle 릴리스 정보버전 12.1.0.2.v22를 참조하세요.

para

중요

내부적으로, rdsadmin.rdsadmin_util 패키지는 ALTER SYSTEM SET EVENTS 문을 사용하여 이벤트를 설정합니다. 이 ALTER SYSTEM 문은 Oracle 데이터베이스 설명서에 설명되어 있지 않습니다. 일부 시스템 진단 이벤트는 많은 양의 추적 정보를 생성하거나 경합을 일으키거나 데이터베이스 가용성에 영향을 줄 수 있습니다. Oracle Support의 지침에 따라 비 프로덕션 데이터베이스에서 특정 진단 이벤트를 테스트하고 프로덕션 데이터베이스에서만 이벤트를 설정하는 것이 좋습니다.

허용되는 시스템 진단 이벤트 나열

설정 가능한 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.list_allowed_system_events를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다.

다음 예에서는 설정 가능한 모든 시스템 이벤트를 나열합니다.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;

다음 샘플 출력에는 이벤트 번호와 해당 설명이 나열됩니다. Amazon RDS 프로시저 set_system_event를 사용하여 이러한 이벤트를 설정하고 unset_system_event를 사용하여 설정 해제합니다.

604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
참고

허용되는 시스템 이벤트 목록은 시간이 지남에 따라 변경될 수 있습니다. 적격 이벤트의 최신 목록이 있는지 확인하려면 rdsadmin.rdsadmin_util.list_allowed_system_events를 사용합니다.

시스템 진단 이벤트 설정

시스템 이벤트를 설정하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.set_system_event를 사용합니다. rdsadmin.rdsadmin_util.list_allowed_system_events의 출력에 나열된 이벤트만 설정할 수 있습니다. set_system_event 프로시저는 다음 파라미터를 수용합니다.

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

p_event

숫자

시스템 이벤트 번호입니다. 이 값은 list_allowed_system_events에 의해 보고된 이벤트 번호 중 하나여야 합니다.

p_level

숫자

이벤트 수준입니다. 다양한 수준 값에 대한 설명은 Oracle 데이터베이스 설명서를 참조하거나 Oracle Support에 문의하세요.

set_system_event 프로시저는 다음 원칙에 따라 필요한 ALTER SYSTEM SET EVENTS 문을 구성하고 실행합니다.

  • 이벤트 유형(context 또는 errorstack)은 자동으로 결정됩니다.

  • ALTER SYSTEM SET EVENTS 'event LEVEL event_level' 형식의 문이 컨텍스트 이벤트를 설정합니다. 이 표기법은 ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'과 동일합니다.

  • ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)' 형식의 문이 오류 스택 이벤트를 설정합니다. 이 표기법은 ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'과 동일합니다.

다음 예에서는 이벤트 942를 수준 3에 설정하고 이벤트 10442를 수준 10에 설정합니다. 샘플 출력이 포함되어 있습니다.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.

설정된 시스템 진단 이벤트 나열

현재 설정된 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.list_set_system_events를 사용합니다. 이 프로시저는 set_system_event에 의해 시스템 수준에 설정된 이벤트만 보고합니다.

다음 예에서는 활성 시스템 이벤트를 나열합니다.

SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;

다음 샘플 출력에서는 이벤트 목록, 이벤트 유형, 이벤트가 현재 설정된 레벨 및 이벤트가 설정된 시간을 보여 줍니다.

942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.

시스템 진단 이벤트 설정 해제

시스템 이벤트를 설정 해제하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.unset_system_event를 사용합니다. rdsadmin.rdsadmin_util.list_allowed_system_events의 출력에 나열된 이벤트만 설정 해제할 수 있습니다. unset_system_event 프로시저는 다음 파라미터를 받습니다.

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

p_event

숫자

시스템 이벤트 번호입니다. 이 값은 list_allowed_system_events에 의해 보고된 이벤트 번호 중 하나여야 합니다.

다음 예에서는 이벤트 942 및 10442를 설정 해제합니다. 샘플 출력이 포함되어 있습니다.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.