管理 Oracle 数据库实例的 RDS_X$ 视图 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

管理 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 过程接受以下参数。

参数名称 数据类型 默认值 必需 描述

p_x$_tbl

varchar2

Null

有效的 X$ 表名称。此值必须是 list_allowed_sys_x$_views 报告的 X$ 表之一。

p_force_creation

布尔值

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