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
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
Null |
可能 |
有効な |
|
ブール値 |
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