Oracle DB 인스턴스에 대한 공통 시스템 작업 수행
그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 특정 공통 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.
주제
세션 분리
전용 서버 프로세스를 종료하여 현재 세션을 분리하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.disconnect
를 사용합니다. disconnect
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
숫자 |
— |
예 |
세션 식별자입니다. |
|
숫자 |
— |
예 |
세션 일련번호입니다. |
|
varchar |
'IMMEDIATE' |
아니요 |
유효한 값은 |
다음 예제에서는 세션을 분리합니다.
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
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
숫자 |
— |
예 |
세션 식별자입니다. |
|
숫자 |
— |
예 |
세션 일련번호입니다. |
|
varchar |
null |
아니요 |
유효한 값은
|
세션 식별자와 세션 일련번호를 얻으려면, 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
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
숫자 |
— |
예 |
세션 식별자입니다. |
|
숫자 |
— |
예 |
세션 일련번호입니다. |
|
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
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 예 | 설명 |
---|---|---|---|---|
|
부울 |
true |
아니요 |
|
다음은 제한 세션을 활성화 및 비활성화하는 방법을 나타낸 예제입니다.
/* 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
에 저장합니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
— |
예 |
권한을 부여할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 |
|
varchar2 |
— |
예 |
권한을 부여할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다. |
|
varchar2 |
null |
예 |
— |
|
boolean |
false |
아니요 |
|
다음 예에서는 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_ROLE
과 EXECUTE_CATALOG_ROLE
을 USER1
에게 부여하는 예제입니다. with
admin option
을 사용했기 때문에, USER1
은 이제 SELECT_CATALOG_ROLE
에 부여된 SYS 객체 액세스 권한을 부여할 수 있습니다.
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
PUBLIC
에 이미 부여된 객체는 다시 부여할 필요가 없습니다. grant_sys_object
프로시저를 사용하여 액세스 권한을 다시 부여한다면, 프로시저는 성공을 호출합니다.
SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소
단일 객체에 대한 권한을 취소하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.revoke_sys_object
를 사용합니다. 이 프로시저는 마스터 계정이 역할 또는 직접 부여를 통해 이미 부여받은 권한만 취소합니다.
revoke_sys_object
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
— |
예 |
권한을 취소할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 |
|
varchar2 |
— |
예 |
권한을 취소할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다. |
|
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
프로시저는 다음 파라미터를 수용합니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
Null |
예 |
유효한 |
|
불린(Boolean) |
FALSE |
아니요 |
|
다음 예제에서는 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
프로시저는 다음 파라미터를 받습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
Null |
예 |
유효한 |
다음 예제에서는 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_ROLE
및 EXECUTE_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 TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
사용자 지정 암호 확인 함수 생성
사용자 지정 암호 확인 함수는 다음과 같은 방법으로 생성할 수 있습니다.
-
표준 확인 로직을 사용하고
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
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
— |
예 |
사용자 정의 함수 이름입니다. 이 함수는 SYS 스키마에서 자동으로 만들어집니다. 이 함수를 사용자 프로필에 할당합니다. |
|
숫자 |
8 |
아니요 |
필요한 최소 문자 수입니다. |
|
숫자 |
256 |
아니요 |
허용되는 최대 문자 수입니다. |
|
숫자 |
1 |
아니요 |
필요한 최소 글자 수입니다. |
|
숫자 |
0 |
아니요 |
필요한 최소 대문자 수입니다. |
|
숫자 |
0 |
아니요 |
필요한 최소 소문자 수입니다. |
|
숫자 |
1 |
아니요 |
필요한 최소 자릿수 숫자입니다. |
|
숫자 |
0 |
아니요 |
필요한 최소 특수문자 수입니다. |
|
숫자 |
3 |
아니요 |
이전 암호와 새 암호 간에 필요한 서로 다른 문자의 최소 개수입니다. |
|
부울 |
true |
아니요 |
|
|
부울 |
true |
아니요 |
|
|
부울 |
true |
아니요 |
|
|
부울 |
true |
아니요 |
|
|
boolean |
false |
아니요 |
|
|
boolean |
false |
아니요 |
|
암호 확인 기능을 여러 개 만들 수 있습니다.
사용자 지정 기능의 이름에 대한 제한 사항이 있습니다. 사용자 지정 함수는 기존 시스템 객체와 이름이 같을 수 없고, 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_FUNCTIONCUSTOM_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
프로시저에는 다음과 같은 파라미터가 있습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
varchar2 |
— |
예 |
사용자 정의 확인 함수의 이름입니다. SYS 스키마에서 자동으로 생성되는 래퍼 함수로서 확인 로직을 포함하지 않습니다. 이 함수를 사용자 프로필에 할당합니다. |
|
varchar2 |
— |
예 |
사용자 지정 확인 함수의 스키마 소유자입니다. |
|
varchar2 |
— |
예 |
확인 로직을 포함하는 기존 사용자 지정 함수의 이름입니다. 사용자 정의 함수는 부울 값을 반환합니다. 사용자의 함수는 암호가 유효할 경우 |
다음은 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_FUNCTIONCUSTOM_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
프로시저는 다음 파라미터를 수용합니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
숫자 |
— |
예 |
시스템 이벤트 번호입니다. 이 값은 |
|
숫자 |
— |
예 |
이벤트 수준입니다. 다양한 수준 값에 대한 설명은 Oracle 데이터베이스 설명서를 참조하거나 Oracle Support에 문의하세요. |
set_system_event
프로시저는 다음 원칙에 따라 필요한 ALTER SYSTEM SET EVENTS
문을 구성하고 실행합니다.
-
이벤트 유형(
context
또는errorstack
)은 자동으로 결정됩니다. -
ALTER SYSTEM SET EVENTS '
형식의 문이 컨텍스트 이벤트를 설정합니다. 이 표기법은event
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
과 동일합니다.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
ALTER SYSTEM SET EVENTS '
형식의 문이 오류 스택 이벤트를 설정합니다. 이 표기법은event
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
과 동일합니다.event
TRACE NAME ERRORSTACK LEVELevent_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
프로시저는 다음 파라미터를 받습니다.
파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
|
숫자 |
— |
예 |
시스템 이벤트 번호입니다. 이 값은 |
다음 예에서는 이벤트 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.