

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

# 管理 Oracle 資料庫執行個體的 RDS\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

您可能需要存取只能由 `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\$1X\$1 檢視中使用的 X\$1 固定資料表
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

若要列出可在 `RDS_X$` 檢視中使用的 X\$1 資料表，請使用 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\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

若要在符合資格 `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\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

若要列出現有 `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\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

若要捨棄 `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
```