

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

# 在 Amazon RDS for Oracle 中執行次要版本升級預先檢查
<a name="USER_UpgradeDBInstance.Oracle.Precheck"></a>

在 Amazon RDS for Oracle 執行資料庫次要版本升級之前，它會檢查您的資料庫執行個體是否處於允許升級完成的狀態。如果檢查發現問題，升級將無法繼續，直到您修正為止。

您可以隨時自行執行這些檢查，而無需啟動升級。如此一來，您可以在維護時段之前找到並修正問題。若要執行檢查，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_precheck_tasks.precheck_minor_upgrade`。預先檢查為唯讀。它不會變更您的資料或組態。

程序會傳回任務 ID。預先檢查會將結果寫入 BDUMP 目錄中名為 `dbtask-{{task_id}}.log`的日誌檔案。若要下載日誌檔案，請參閱 [下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

**注意**  
在主要資料庫執行個體上執行預先檢查。不支援在僅供讀取複本上執行預先檢查。

**Topics**
+ [執行次要版本升級預先檢查](#USER_UpgradeDBInstance.Oracle.Precheck.Running)
+ [檢視預先檢查結果](#USER_UpgradeDBInstance.Oracle.Precheck.Viewing)
+ [解譯預先檢查結果](#USER_UpgradeDBInstance.Oracle.Precheck.Interpreting)
+ [預先檢查檢查檢查的內容](#USER_UpgradeDBInstance.Oracle.Precheck.Checks)
+ [何時執行預先檢查](#USER_UpgradeDBInstance.Oracle.Precheck.When)

## 執行次要版本升級預先檢查
<a name="USER_UpgradeDBInstance.Oracle.Precheck.Running"></a>

若要檢查您的資料庫執行個體是否已準備好進行資料庫次要版本升級，請執行 程序 `rdsadmin.rdsadmin_precheck_tasks.precheck_minor_upgrade`。 程序不需採用任何參數。下列查詢會啟動預先檢查並傳回任務 ID。

```
SQL> SELECT rdsadmin.rdsadmin_precheck_tasks.precheck_minor_upgrade() AS task_id FROM DUAL;

TASK_ID
------------------
1784924903020-9
```

您也可以將任務 ID 存放在 SQL 用戶端變數中，並在其他陳述式中使用變數。

```
SQL> VAR task_id VARCHAR2(80);
SQL> EXEC :task_id := rdsadmin.rdsadmin_precheck_tasks.precheck_minor_upgrade();

PL/SQL procedure successfully completed.
```

預先檢查會在背景執行。當日誌的最後一行為 `The task finished successfully.`或 時，即完成 `The task failed.`

## 檢視預先檢查結果
<a name="USER_UpgradeDBInstance.Oracle.Precheck.Viewing"></a>

若要讀取日誌檔案，請執行 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file`。在檔案名稱中包含任務 ID。下列範例顯示預先檢查，其中沒有檢查發現問題。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2026-08-28 18:30:20.461 UTC [INFO ] Starting minor version upgrade precheck...
2026-08-28 18:30:20.461 UTC [INFO ] NOTE: This precheck validates against the current engine version's known checks. Target-version-specific checks (e.g., autoupgrade) are not included.
2026-08-28 18:30:20.470 UTC [INFO ] CHECK: FreeStorageSpace - PASSED
2026-08-28 18:30:20.515 UTC [INFO ] CHECK: SystemTablespace - PASSED
2026-08-28 18:30:20.523 UTC [INFO ] CHECK: AuditTablespace - PASSED
2026-08-28 18:30:20.541 UTC [INFO ] CHECK: RedoApplyLag - SKIPPED: the DB instance has no read replicas
2026-08-28 18:30:20.612 UTC [INFO ] CHECK: MdsysUser - PASSED
2026-08-28 18:30:20.688 UTC [INFO ] CHECK: ConflictingSynonyms - PASSED
2026-08-28 18:30:20.731 UTC [INFO ] CHECK: WorkspaceManager - PASSED
2026-08-28 18:30:20.790 UTC [INFO ] CHECK: SchemaVersionRegistry - PASSED
2026-08-28 18:30:20.846 UTC [INFO ] CHECK: XmlDbSchema - PASSED
2026-08-28 18:30:20.903 UTC [INFO ] CHECK: ApexStatus - PASSED
2026-08-28 18:30:20.955 UTC [INFO ] CHECK: CtxsysSequences - PASSED
2026-08-28 18:30:21.304 UTC [INFO ] CHECK: InvalidSystemObjects - PASSED
2026-08-28 18:30:21.549 UTC [INFO ] CHECK: InvalidTriggers - PASSED
2026-08-28 18:30:21.601 UTC [INFO ] CHECK: PendingDistributedTransactions - PASSED
2026-08-28 18:30:21.602 UTC [INFO ] Summary: 13 passed, 1 skipped, 0 warnings, 0 errors, 0 blockers
2026-08-28 18:30:21.602 UTC [INFO ] Result: PASSED
2026-08-28 18:30:21.602 UTC [INFO ] The task finished successfully.
```

若要列出 BDUMP 目錄中的檔案，請執行下列查詢。

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

如需程序 的詳細資訊`rdsadmin.rds_file_util.read_text_file`，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

## 解譯預先檢查結果
<a name="USER_UpgradeDBInstance.Oracle.Precheck.Interpreting"></a>

日誌每次檢查都有一`CHECK:`行，後面接著一`Summary:`行和一`Result:`行。執行哪些檢查取決於您的引擎版本、資料庫架構和資料庫執行個體組態。每個檢查都會報告下列其中一個結果。

`PASSED`  
檢查沒有發現問題。

`FAILED [BLOCKER]`  
檢查發現您在資料庫次要版本升級之前必須修正的問題。該行說明問題和處理方式。

`WARN`  
檢查找到您應該檢閱的內容。警告不會封鎖升級。

`SKIPPED`  
檢查不適用於您的資料庫執行個體。該行提供原因。

`ERROR`  
檢查無法完成。再次執行預先檢查。

即使較早的檢查失敗，每次檢查都會執行，因此一次執行會報告預先檢查發現的每個問題。如果有任何檢查報告 `FAILED [BLOCKER]`或 `ERROR`，日誌會顯示 `Result: FAILED`。否則會顯示 `Result: PASSED`。

下列範例顯示找到一個問題的預先檢查。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2026-08-28 18:57:39.105 UTC [INFO ] Starting minor version upgrade precheck...
2026-08-28 18:57:39.105 UTC [INFO ] NOTE: This precheck validates against the current engine version's known checks. Target-version-specific checks (e.g., autoupgrade) are not included.
2026-08-28 18:57:39.112 UTC [INFO ] CHECK: FreeStorageSpace - PASSED
2026-08-28 18:57:39.125 UTC [INFO ] CHECK: SystemTablespace - PASSED
2026-08-28 18:57:39.133 UTC [INFO ] CHECK: AuditTablespace - PASSED
2026-08-28 18:57:39.150 UTC [INFO ] CHECK: RedoApplyLag - SKIPPED: the DB instance has no read replicas
2026-08-28 18:57:39.221 UTC [INFO ] CHECK: MdsysUser - PASSED
2026-08-28 18:57:39.297 UTC [INFO ] CHECK: ConflictingSynonyms - PASSED
2026-08-28 18:57:39.340 UTC [INFO ] CHECK: WorkspaceManager - PASSED
2026-08-28 18:57:39.399 UTC [INFO ] CHECK: SchemaVersionRegistry - PASSED
2026-08-28 18:57:39.455 UTC [INFO ] CHECK: XmlDbSchema - PASSED
2026-08-28 18:57:39.512 UTC [INFO ] CHECK: ApexStatus - PASSED
2026-08-28 18:57:39.564 UTC [INFO ] CHECK: CtxsysSequences - PASSED
2026-08-28 18:57:39.913 UTC [INFO ] CHECK: InvalidSystemObjects - PASSED
2026-08-28 18:57:40.097 UTC [ERROR] CHECK: InvalidTriggers - FAILED [BLOCKER]: The DB instance has triggers that aren't valid. Fix or disable them.
2026-08-28 18:57:40.151 UTC [INFO ] CHECK: PendingDistributedTransactions - PASSED
2026-08-28 18:57:40.152 UTC [INFO ] Summary: 12 passed, 1 skipped, 0 warnings, 0 errors, 1 blocker
2026-08-28 18:57:40.152 UTC [INFO ] RDS can't upgrade the DB instance. Resolve the blockers listed above, and then try again.
2026-08-28 18:57:40.152 UTC [INFO ] Result: FAILED
2026-08-28 18:57:40.152 UTC [INFO ] The task failed.
```

修正日誌報告的每個問題，然後再次執行預先檢查以確認您的資料庫執行個體通過。

## 預先檢查檢查檢查的內容
<a name="USER_UpgradeDBInstance.Oracle.Precheck.Checks"></a>

下表列出每個檢查以及讓檢查失敗的條件。當檢查失敗時，日誌中的行會說明問題以及如何修正問題。



| Check | 當 時失敗 | 
| --- | --- | 
| FreeStorageSpace | 資料庫執行個體的可用儲存空間少於 768 MB。 | 
| SystemTablespace | SYSTEM 或 SYSAUX資料表空間的可用空間小於 300 MB，或無法自動擴展。對於 CDB，預先檢查會檢查每個容器。 | 
| AuditTablespace | 稽核資料表空間的可用空間小於 300 MB，或無法自動擴展。 | 
| RedoApplyLag | 僅供讀取複本的重做套用延遲超過 5 分鐘。如果資料庫執行個體沒有僅供讀取複本，則略過。 | 
| MdsysUser | MDSYS 使用者不是 Oracle 維護的使用者。 | 
| ConflictingSynonyms | 同義詞使用新 Oracle 版本保留的名稱。 | 
| WorkspaceManager | Workspace Manager (WMSYS) 物件存在。 | 
| SchemaVersionRegistry | 一或多個SCHEMA\_VERSION\_REGISTRY檢視無效。 | 
| XmlDbSchema | 一或多個 XML 資料庫結構描述物件無效。 | 
| ApexStatus | APEX 元件未處於 VALID 狀態。 | 
| CtxsysSequences | CTXSYS 結構描述沒有 3 個 Oracle Text 序列 (DR\_ID\_SEQ、MESG\_ID\_SEQ、THS\_SEQ)。已略過 CDB。 | 
| InvalidSystemObjects | Oracle 維護的物件無效。 | 
| InvalidTriggers | 觸發程序無效。 | 
| PendingDistributedTransactions | 分散式交易未解決。 | 

## 何時執行預先檢查
<a name="USER_UpgradeDBInstance.Oracle.Precheck.When"></a>

有些條件會隨著時間而變更，例如免費儲存和僅供讀取複本延遲。升級前不久執行預先檢查。如果您的資料庫執行個體使用自動次要版本升級，請在收到待定維護通知之後以及維護時段之前執行預先檢查。

如果您所做的變更會影響已檢查的條件，請再次執行預先檢查。例如，在新增儲存體、變更資料表空間、捨棄或重新編譯物件，或解析分散式交易之後，請再次執行。不會影響這些條件的變更不會變更結果。例如，備份或變更資料庫執行個體類別並不會變更結果。

**注意**  
預先檢查會針對您目前的引擎版本執行檢查。它不包括取決於您升級到之版本的檢查。