管理 Oracle 資料庫執行個體的 RDS_X$ 檢視 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理 Oracle 資料庫執行個體的 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 和更新的 21c 版本

    • 19.0.0.0.ru-2023-10.rur-2023-10.r1 和更新的 19c 版本

  • 您建立的任何新資料庫執行個體

  • 您已升級的任何現有資料庫執行個體

重要

在內部,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