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 プロシージャは、次のデータベースエンジンバージョンで使用できます。

  • 21.0.0.0.ru-2023-10.rur-2023-10.r1 以降の Oracle Database 21c バージョン

  • 19.0.0.0.ru-2023-10.rur-2023-10.r1 以降の Oracle Database 19c バージョン

重要

内部的には、rdsadmin.rdsadmin_util パッケージは X$ テーブルにビューを作成します。X$ テーブルは内部システムオブジェクトであり、Oracle Database のドキュメントでは説明されていません。本番用以外のデータベースで特定のビューをテストし、Oracle サポートのガイダンスに従って、本番用のデータベースにのみビューを作成することをお勧めしています。

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$ テーブルの 1 つである必要があります。

p_force_creation

ブール値

FALSE

不可

X$ テーブルに既に存在する RDS_X$ ビューを強制的に作成するかどうかを示す値。デフォルトでは、ビューが既に存在する場合、RDS はビューを作成しません。強制的に作成するには、このパラメータを TRUE に設定します。

次の例では、テーブル X$KGLOBSYS.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$ 固定テーブルの 1 つである必要があります。

次の例では、テーブル 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