Oracle DB 인스턴스의 RDS_X$ 뷰 관리 - Amazon Relational Database Service

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