管理 Oracle 数据库实例的 RDS_X$ 视图
您可能需要访问 SYS.X$
固定表,这些表只能由 SYS
访问。要在符合条件的 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 数据库文档中未对此进行描述。我们建议您在非生产数据库中测试特定的视图,并且在 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