

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

# Amazon RDS for Db2
<a name="CHAP_Db2"></a>

Amazon RDS 會支援執行下列版本 IBM Db2 的資料庫執行個體：
+ Db2 Standard Edition
+ Db2 Advanced Edition

Amazon RDS 會支援執行下列版本 Db2 的資料庫執行個體：
+ Db2 11.5

如需次要版本的支援詳情，請參閱[Db2 on Amazon RDS 版本](Db2.Concepts.VersionMgmt.md)。

建立資料庫執行個體之前，請先完成本使用者指南的 [設定您的 Amazon RDS 環境](CHAP_SettingUp.md) 一節中的步驟。當您使用主要使用者建立資料庫執行個體時，使用者會取得 `DBADM` 授權，但有一些限制。將此使用者用於管理任務，例如建立其他資料庫帳戶。您無法使用 `SYSADM`、`SYSCTRL`、`SYSMAINT` 執行個體層級授權或 `SECADM` 資料庫層級授權。

您可以建立下列作業：
+ 資料庫執行個體
+ 資料庫快照
+ 時間點還原
+ 自動備份儲存 
+ 手動儲存備份

您可以在虛擬私有雲端 (VPC) 內使用執行 Db2 的資料庫執行個體。您也可以透過啟用各種選項，新增功能至 Amazon RDS for Db2 資料庫執行個體。Amazon RDS 支援 RDS for Db2 的多可用區域部署，做為高可用性、容錯移轉解決方案。

**重要**  
為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。而且會將存取權限制在某些需要提升權限的系統程序和資料表。您可以使用標準 SQL 用戶端 (例如 IBM Db2 CLP) 存取資料庫。不過，您無法使用 Telnet 或 Secure Shell (SSH) 直接存取主機。

**Topics**
+ [Db2 on Amazon RDS 概觀](db2-overview.md)
+ [建立 Amazon RDS for Db2 資料庫執行個體的先決條件](db2-db-instance-prereqs.md)
+ [Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)
+ [連線至您的 Db2 資料庫執行個體](USER_ConnectToDb2DBInstance.md)
+ [保護 Amazon RDS for Db2 資料庫執行個體連線](Db2.Concepts.RestrictedDBAPrivileges.md)
+ [管理您的 Amazon RDS for Db2 資料庫執行個體](db2-administering-db-instance.md)
+ [整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)
+ [將資料遷移至 Amazon RDS for Db2](db2-migrating-data-to-rds.md)
+ [Amazon RDS for Db2 聯合](db2-federation.md)
+ [使用適用於 Amazon RDS for Db2 的複本](db2-replication.md)
+ [Amazon RDS for Db2 資料庫執行個體的選項](Db2.Options.md)
+ [Amazon RDS for Db2 的外部預存程序](db2-external-stored-procedures.md)
+ [Amazon RDS for Db2 的已知問題和限制](db2-known-issues-limitations.md)
+ [Amazon RDS for Db2 預存程序參考](db2-stored-procedures.md)
+ [Amazon RDS for Db2 使用者定義函數參考](db2-user-defined-functions.md)
+ [Amazon RDS for Db2 故障診斷](db2-troubleshooting.md)

# Db2 on Amazon RDS 概觀
<a name="db2-overview"></a>

您可以閱讀以下各節以取得 Db2 on Amazon RDS 的概觀。

**Topics**
+ [Amazon RDS for Db2 功能](Db2.Concepts.FeatureSupport.md)
+ [Db2 on Amazon RDS 版本](Db2.Concepts.VersionMgmt.md)
+ [Amazon RDS for Db2 授權選項](db2-licensing.md)
+ [Amazon RDS for Db2 執行個體類別](Db2.Concepts.General.InstanceClasses.md)
+ [Amazon RDS for Db2 預設角色](db2-default-roles.md)
+ [Amazon RDS for Db2 參數](db2-supported-parameters.md)
+ [Amazon RDS 上 Db2 資料庫的 EBCDIC 定序](db2-ebcdic.md)
+ [Amazon RDS for Db2 資料庫執行個體的本機時區](db2-time-zone.md)

# Amazon RDS for Db2 功能
<a name="Db2.Concepts.FeatureSupport"></a>

Amazon RDS for Db2 支援 IBM Db2 資料庫的大多數特性和功能。部分功能的支援或權限可能有所限制。如需特定 Db2 版本之 Db2 資料庫功能的詳細資訊，請參閱 [IBM Db2 文件](https://www.ibm.com/docs/en/db2)。

您可以在[資料庫的最新資訊](https://aws.amazon.com/about-aws/whats-new/database/)頁面上篩選新的 Amazon RDS 功能。對於 **Products** (產品)，請選擇 **Amazon RDS**。然後，您可以使用關鍵字 (例如 **Db2 2023**) 進行搜尋。

**注意**  
以下清單並非詳盡清單。

**Topics**
+ [RDS for Db2 中支援的功能](#db2-supported-features)
+ [RDS for Db2 中不支援的功能](#db2-unsupported-features)

## RDS for Db2 中支援的功能
<a name="db2-supported-features"></a>

RDS for Db2 支援的功能包括 IBM Db2 原生功能和 Amazon RDS 核心功能。

### IBM Db2 原生功能
<a name="db2-supported-features-native-db2"></a>

RDS for Db2 支援下列 Db2 資料庫功能：
+ 建立使用客戶定義程式碼集、定序、頁面大小和區域的標準資料庫。使用 Amazon RDS [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序
+ 新增、刪除或修改本機使用者和群組。使用 [授予及撤銷 RDS for Db2 權限的預存程序](db2-sp-granting-revoking-privileges.md) 的 Amazon RDS 預存程序。
+ 使用 Amazon RDS [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 預存程序建立角色。
+ 支援標準資料列組織資料表。
+ 支援資料欄組織資料表的分析工作負載。
+ 能夠定義 Db2 相容性功能，例如 Oracle 和 MySQL。
+ 支援 Java 型外部預存程序。
+ 支援使用 SSL/TLS 傳輸中的資料加密。
+ 監控資料庫的狀態 (`ALIVE`、`DOWN`、`UNKNOWN`、`STORAGE_FULL` 和 `STANDBY_CONNECTABLE`)。
+ 還原客戶提供的離線或線上 Linux (LE) 資料庫。使用 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md) 的 Amazon RDS 預存程序。
+ 套用客戶提供的 Db2 封存日誌，使資料庫與自我管理的 Db2 資料庫保持同步。使用 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md) 的 Amazon RDS 預存程序。
+ 支援 Db2 執行個體層級和資料庫層級稽核。
+ 支援同質聯合。
+ 能夠從 Amazon Simple Storage Service (Amazon S3) 中的資料檔案載入資料表。
+ 授予使用者、群組或角色的授權，例如 `CONNECT`、`SYSMON`、`ACCESSCTRL`、`DATAACCESS`、`SQLADM`、`WLMADM`、`EXPLAIN`、`LOAD` 或 `IMPLICIT_SCHEMA`。
+ 建立多個資料庫。
**注意**  
RDS for Db2 資料庫執行個體最多可包含 50 個資料庫。如需詳細資訊，請參閱[Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。

### Amazon RDS 的功能核心
<a name="db2-supported-features-rds-core"></a>

RDS for Db2 支援下列核心 Amazon RDS 功能：
+ 要指派給資料庫執行個體的自訂參數群組
+ 建立、修改及刪除資料庫執行個體
+ 還原自我管理的 Db2 離線或線上 Linux (LE) 資料庫備份
**注意**  
為了能夠還原備份，請勿在建立資料庫執行個體時提供資料庫的名稱。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 支援 gp3、io2 和 io1 儲存類型
+ 使用 AWS Managed Microsoft AD 進行Kerberos身分驗證，以及使用 RDS for Db2 的 LDAP 群組授權
+ 修改現有 Db2 執行個體的安全群組、連接埠、執行個體類型、儲存體、備份保留期和其他設定
+ 資料庫執行個體的刪除保護
+ 跨區域時間點復原 (PITR)，包括加密備份
+ 使用 AWS Key Management Service (AWS KMS) 進行儲存加密和靜態加密
+ 具有單一待命的多可用區域資料庫執行個體，可提供高可用性
+ 重新啟動資料庫執行個體
+ 主密碼的更新
+ 將資料庫執行個體還原至特定時間
+ 使用儲存體層級備份來備份及還原資料庫執行個體
+ 啟動及停止執行個體
+ 維護資料庫執行個體
+ 相同區域和跨區域待命和僅供讀取複本

## RDS for Db2 中不支援的功能
<a name="db2-unsupported-features"></a>

RDS for Db2 不支援下列 Db2 資料庫功能：
+ 主要使用者的 `SYSADM`、`SECADM` 和 `SYSMAINT` 存取權。
+ 以 C、C\$1\$1 或 Cobol 編寫的外部預存程序。
+ 單一主機上的多個 Db2 資料庫執行個體。
+ 用於身分驗證的外部 GSS-API 外掛程式。
+ 備份或還原 Db2 資料庫的外部第三方外掛程式。
+ 多節點大量平行處理 (MPP)，例如 IBM Db2 Warehouse。
+ IBM Db2 pureScale.
+ 手動設定 RDS for Db2 的高可用性災難復原 (HADR)。
**注意**  
Amazon RDS 透過複本支援及管理 RDS for Db2 的 HADR。如需詳細資訊，請參閱[使用適用於 Amazon RDS for Db2 的複本](db2-replication.md)。  
RDS for Db2 支援多可用區域部署、跨區域自動備份和複寫。如需詳細資訊，請參閱[Amazon RDS 的多可用區域資料庫執行個體部署](Concepts.MultiAZSingleStandby.md)及[將自動備份複寫至另一個備份 AWS 區域](USER_ReplicateBackups.md)。
+ 原生資料庫加密。
+ Informix、Sybase 和 Teradata 的異質聯合。如需詳細資訊，請參閱[Amazon RDS for Db2 聯合](db2-federation.md)。
+ 透過備份及還原資料來建立非連接常式，以及遷移現有的非連接常式。如需詳細資訊，請參閱[非連接常式](db2-known-issues-limitations.md#db2-known-issues-limitations-non-fenced-routines)。
+ 建立新的非自動儲存資料表空間。如需詳細資訊，請參閱[遷移期間的非自動儲存資料表空間](db2-known-issues-limitations.md#db2-known-issues-limitations-non-automatic-storage-tablespaces)。
+ 外部資料表。

# Db2 on Amazon RDS 版本
<a name="Db2.Concepts.VersionMgmt"></a>

對於 Db2，版本編號採用 *major.minor.build.revision* 的形式，例如 11.5.9.0.sb00000000.r1。我們的版本實作符合 Db2 的版本。

**主要**  
主要引擎版本號碼是整數和版本號碼的第一個小數部分，例如 11.5。若主要版本編號有所變更 (例如從 11.5 版更新至 12.1 版)，即屬於主要版本變更。

**次要**  
次要版本編號是版本編號的第三部分和第四部分，例如 11.5.9.0 中的 9.0。第三部分表示 Db2 modpack，例如 9.0 中的 9。第四個部分表示 Db2 fixpack，例如 9.0 中的 0。如果 Db2 modpack 或 Db2 fixpack 有所變更 (例如，從 11.5.9.0 版變更為 11.5.9.1 版，或從 11.5.9.0 版變更為 11.5.10.0 版)，但提供目錄資料表更新的例外狀況除外。(Amazon RDS 會處理這些例外狀況。)

**組建**  
組建編號是版本編號的第五部分，例如 11.5.9.0.sb00000000 中的 sb00000000。數字部分皆為零的組建編號表示標準組建。數字部分並非全部為零的組建編號表示特殊組建。如果有安全修正或現有 Db2 版本的特殊建置，則建置編號會變更。組建編號變更也表示 Amazon RDS 會自動套用新的次要版本。

**修訂**  
修訂編號是版本編號的第六個部分，例如 11.5.9.0.sb00000000.r1 中的 r1。修訂版是現有 Db2 版本的 Amazon RDS 修訂版。修訂編號變更表示 Amazon RDS 會自動套用新的次要版本。

**Topics**
+ [Amazon RDS Db2 執行個體的升級管理](Db2.Concepts.VersionMgmt.Supported.md)
+ [Amazon RDS 上支援的 Db2 主要版本](#Db2.Concepts.VersionMgmt.ReleaseCalendar)

# Amazon RDS Db2 執行個體的升級管理
<a name="Db2.Concepts.VersionMgmt.Supported"></a>

若要在 RDS 上查看目前支援的 Db2 次要版本清單，請使用下列其中一個命令：

```
aws rds describe-db-engine-versions --engine db2-se
aws rds describe-db-engine-versions --engine db2-ae
```

Amazon RDS 也支援升級推展政策，以管理跨多個資料庫資源和 的自動次要版本升級 AWS 帳戶。如需詳細資訊，請參閱[使用 AWS Organizations 升級推展政策進行自動次要版本升級](RDS.Maintenance.AMVU.UpgradeRollout.md)。

建立新的資料庫執行個體時，您可以指定使用目前支援的任一 Db2 版本。您可以指定主要版本 (如 Db2 11.5)，並指定使用主要版本所支援的任一次要版本。若未指定版本，Amazon RDS 會預設使用支援的版本，通常是最新版本。若已指定主要版本，但未指定次要版本，Amazon RDS 預設會使用您指定之主要版本的最新發行版本。若要查看支援的版本清單，以及新建立資料庫執行個體的預設值，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS Command Line Interface (AWS CLI) 命令。

例如，若要列出 Amazon RDS for Db2 支援的引擎版本，請執行下列 AWS CLI 命令。將*區域*取代為您的 AWS 區域。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
    --filters Name=engine,Values=db2-ae,db2-se \
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" \
    --region region
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
    --filters Name=engine,Values=db2-ae,db2-se ^
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" ^
    --region region
```

此命令會產生類似下列範例的輸出：

```
[
    {
    "Engine": "db2-ae",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-ae-11.5"
    },
    {
    "Engine": "db2-se",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-se-11.5"
    }
]
```

預設的 Db2 版本可能會隨著 AWS 區域而有所不同。若要建立具有特定次要版本的資料庫執行個體，請在建立資料庫執行個體期間指定次要版本。您可以執行` describe-db-engine-versions` 命令，判斷 AWS 區域 `db2-ae`和 `db2-se` 資料庫引擎的預設版本。下列範例會傳回美國東部 (維吉尼亞北部) 中 `db2-ae` 的預設版本。

在 Linux、macOS 或 Unix 中：

```
aws rds describe-db-engine-versions \
    --default-only --engine db2-ae \
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" \
    --region us-east-1
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
    --default-only --engine db2-ae ^
    --query "DBEngineVersions[].{Engine:Engine, EngineVersion:EngineVersion, DBParameterGroupFamily:DBParameterGroupFamily}" ^
    --region us-east-1
```

此命令會產生類似下列範例的輸出：

```
[
    {
    "Engine": "db2-ae",
    "EngineVersion": "11.5.9.0.sb00000000.r1",
    "DBParameterGroupFamily": "db2-ae-11.5"
    }
]
```

透過 Amazon RDS，即可控制將 Db2 執行個體升級至新主要版本的時機，而該版本受 Amazon RDS 支援。您可以維持特定 Db2 版本的相容性，在部署至生產環境前，先利用您的應用程式測試新版本，並在合適的時間執行主要版本升級。

啟用自動化次要版本升級時，Amazon RDS 會將您的資料庫執行個體自動升級為新的 Db2 次要版本，因為它們受到 Amazon RDS 支援。此修補會在您排程的維護時段發生。您可以修改資料庫執行個體，以啟用或停用自動次要版本升級。

除了 Db2 11.5.9.1 和 11.5.10.0 版之外，自動升級至新的 Db2 次要版本包括自動升級至新的組建和修訂。在 11.5.9.1 和 11.5.10.0 中，手動升級次要版本。

若您選擇不要自動排程升級，可以按照更新主要版本的相同程序，手動升級至支援的次要版本。如需相關資訊，請參閱[升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

## Amazon RDS 上支援的 Db2 主要版本
<a name="Db2.Concepts.VersionMgmt.ReleaseCalendar"></a>

RDS for Db2 主要版本在標準支援下，至少在對應 IBM 版本的 IBM 生命週期 (基底) 結束前會保持可用。下表顯示您可以用來規劃測試和升級週期的日期。如果 Amazon 延長對 RDS for Db2 版本的支援時間超過原先聲明的時間，我們計劃更新此資料表以反映後來的日期。

您可以使用下列日期來規劃測試和升級週期。

**注意**  
只有月份和年份的日期是近似值，並會在已知確切日期時進行更新。  
您可以執行 [describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 命令或使用 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 操作來檢視 Db2 資料庫的主要版本。


| Db2 主要版本  | IBM 版本日期  | RDS 發佈日期  | IBM 結束支援 (標準版和進階版) | IBM 結束支援 (延長) | 
| --- | --- | --- | --- | --- | 
|  Db2 11.5  |  2019 年 6 月 27 日  |  2023 年 11 月 27 日  | 2027 年 4 月 30 日 |  2031 年 4 月 30 日  | 

# Amazon RDS for Db2 授權選項
<a name="db2-licensing"></a>

Amazon RDS for Db2 有兩種授權選項：使用您自己的授權 (BYOL) 和 Db2 授權 AWS Marketplace。

**Topics**
+ [使用 Db2 的自帶授權 (BYOL)](#db2-licensing-options-byol)
+ [透過 的 Db2 授權 AWS Marketplace](#db2-licensing-options-marketplace)
+ [在 Db2 授權之間切換](#db2-edition-license-switching)

## 使用 Db2 的自帶授權 (BYOL)
<a name="db2-licensing-options-byol"></a>

在 BYOL 模型中，您要使用現有 Db2 資料庫授權在 Amazon RDS 上部署資料庫。確認您擁有所要執行之資料庫執行個體類別和 Db2 資料庫版本的合適 Db2 資料庫授權。您也必須遵循 IBM 對雲端運算環境中授權 IBM 資料庫軟體的政策。

**注意**  
多可用區域資料庫執行個體為冷待命，因為已安裝 Db2 資料庫但並未執行。待命無法讀取、執行或處理請求。如需詳細資訊，請參閱 IBM 網站上的 [IBM Db2 授權資訊]( https://www.ibm.com/support/customer/csol/terms/licenses#license-search)。

在此模型中，您會繼續使用作用中 IBM 支援帳戶，並且針對 Db2 資料庫的服務請求，請直接聯絡 IBM。如果您有 支援 帳戶提供案例支援，您可以聯絡 支援 詢問 Amazon RDS 問題。Amazon Web Services 和 IBM 皆提供多廠商支援程序，而您可視需要向這兩個組織尋求協助。

Amazon RDS 支援 Db2 Standard Edition 和 Db2 Advanced Edition 的 BYOL 模型。

**Topics**
+ [Db2 的自帶授權 (BYOL) IBM ID](#db2-prereqs-ibm-info)
+ [將 IBM ID 新增至 RDS for Db2 資料庫執行個體的參數群組](#db2-licensing-options-byol-adding-ids)
+ [與 整合 AWS License Manager](#db2-lms-integration)

### Db2 的自帶授權 (BYOL) IBM ID
<a name="db2-prereqs-ibm-info"></a>

在 BYOL 模型中，您需要 IBM Customer ID 和 IBM Site ID 來建立、修改或還原 RDS for Db2 資料庫執行個體。您必須先使用 IBM Customer ID 和 IBM Site ID 建立自訂參數群組，*才能*建立 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[將 IBM ID 新增至 RDS for Db2 資料庫執行個體的參數群組](#db2-licensing-options-byol-adding-ids)。您可以使用相同 AWS 帳戶 或 AWS 區域中的不同 IBM Customer IDs 和 IBM Site IDs 來執行多個 RDS for Db2 資料庫執行個體。

**重要**  
如果我們無法透過 IBM Customer ID 和 IBM Site ID 驗證您的授權，可能會終止任何使用這些未驗證授權執行的資料庫執行個體。

如果您是新的 IBM Db2 客戶，您必須先從 [https://www.ibm.com/products/db2/pricing](https://www.ibm.com/products/db2/pricing) 購買 Db2 軟體授權。購買 Db2 軟體授權後，您會收到來自 IBM 的權利證明，其中列出您的 IBM Customer ID 和您的 IBM Site ID。

如果您是現有 IBM Db2 客戶，可以在 IBM 的權利證明憑證上找到您的 IBM Customer ID 和 IBM Site ID。

您也可以在 [IBM Passport Advantage Online](https://www.ibm.com/software/passportadvantage/pao_customer.html) 帳戶中找到 IBM Customer ID 和 IBM Site ID。登入後，您可以在主頁面或軟體下載頁面上檢視這兩個 ID。

### 將 IBM ID 新增至 RDS for Db2 資料庫執行個體的參數群組
<a name="db2-licensing-options-byol-adding-ids"></a>

由於您無法修改預設參數群組，因此必須建立自訂參數群組，然後將其修改為包含您 IBM Customer ID 和 IBM Site ID 的值。如需參數群組的詳細資訊，請參閱 [Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)。

**重要**  
您必須先使用 IBM Customer ID 和 IBM Site ID 建立自訂參數群組，*才能*建立 RDS for Db2 資料庫執行個體。

使用下表中的參數設定。


| 參數 | Value | 
| --- | --- | 
|  `rds.ibm_customer_id`  |  `<your IBM Customer ID>`  | 
|  `rds.ibm_site_id`  |  `<your IBM Site ID>`  | 
|  `ApplyMethod`  |  `immediate`, `pending-reboot`  | 

這些參數是動態的，這表示其任何變更都會立即生效，而且您不需要重新啟動資料庫執行個體。如果您不希望變更立即生效，可以將 `ApplyMethod` 設定為 `pending-reboot`，並排定在維護時段進行這些變更。

您可以使用 AWS 管理主控台、 AWS CLI或 Amazon RDS API 來建立及修改自訂參數群組。

#### 主控台
<a name="db2-licensing-options-adding-ids-console"></a>

**將 IBM Customer ID 和 IBM Site ID 新增至參數群組**

1. 建立新的資料庫參數群組。如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您建立的參數群組。如需修改參數群組的相關詳細資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

#### AWS CLI
<a name="db2-licensing-options-adding-ids-cli"></a>

**將 IBM Customer ID 和 IBM Site ID 新增至參數群組**

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 命令來建立自訂參數群組。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您要建立之參數群組的名稱。
   + `--db-parameter-group-family` – Db2 引擎版本和主要版本。有效值：`db2-se-11.5`、`db2-ae-11.5`。
   + `--description` – 此參數群組的描述。

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 命令所建立的自訂參數群組中的參數。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您所建立的參數群組之名稱。
   + `--parameters` – 參數名稱、值，以及參數更新套用方法的陣列。

   如需修改參數群組的相關詳細資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

#### RDS API
<a name="db2-licensing-options-adding-ids-api"></a>

**將 IBM Customer ID 和 IBM Site ID 新增至參數群組**

1. 使用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 作業來建立自訂資料庫參數群組。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 作業所建立的自訂參數群組中的參數。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `Parameters`

   如需修改參數群組的相關詳細資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

現在您已準備好建立資料庫執行個體，並將自訂參數群組連接至資料庫執行個體。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)及[將資料庫參數群組與 Amazon RDS 中的資料庫執行個體建立關聯](USER_WorkingWithParamGroups.Associating.md)。

### 與 整合 AWS License Manager
<a name="db2-lms-integration"></a>

為了協助監控 BYOL 模型中的 RDS for Db2 授權用量，[AWS License Manager](https://aws.amazon.com/license-manager/) 會整合 RDS for Db2。License Manager 會支援追蹤以虛擬 CPU (vCPU) 為基礎的 RDS for Db2 引擎版本。您也可以搭配 使用 License Manager AWS Organizations ，集中管理所有組織帳戶。

若要追蹤 RDS for Db2 資料庫執行個體的授權使用情況，您必須建立自我管理的授權。您可以使用 AWS 管理主控台、 AWS License Manager CLI 和 AWS License Manager API 建立自我管理的授權。或者，您可以使用 CloudFormation 和 Terraform 範本自動建立自我管理的授權。

符合產品資訊篩選條件的 RDS for Db2 資源會自動與自我管理的授權相關聯。探索 RDS for Db2 資料庫執行個體最多可能需要 24 小時。

下表顯示適用於 RDS for Db2 的引擎版本產品資訊篩選條件的可用值。


| Value | Description | 
| --- | --- | 
|  `db2-se`  |  Db2 標準版本  | 
|  `db2-ae`  |  Db2 進階版本  | 

**Topics**
+ [術語](#db2-lms-integration-terms)
+ [在 中建立自我管理授權 AWS License Manager](#db2-lms-integration-tracking)
+ [AWS License Manager 使用 範本自動化在 中建立自我管理的授權](#db2-lms-integration-templates)
+ [建立自我管理授權的設定](#db2-settings-lms)

#### 術語
<a name="db2-lms-integration-terms"></a>

此頁面會在與 討論 Amazon RDS 整合時使用下列術語 AWS License Manager。

自我管理授權  
自我管理授權是在 中使用的術語 AWS License Manager。Amazon RDS 主控台會將授權稱為 AWS License Manager 組態。自我管理授權包含了以企業協議條款為根據的授權規則。您建立的規則可判斷 AWS 如何處理使用授權的命令。在建立自我管理授權之際，請與貴組織的合規團隊密切配合，以檢閱您的企業協議。如需詳細資訊，請參閱 [License Manager 中的自我管理授權](https://docs.aws.amazon.com/license-manager/latest/userguide/license-configurations.html)。

#### 在 中建立自我管理授權 AWS License Manager
<a name="db2-lms-integration-tracking"></a>

您可以使用 AWS 管理主控台、 AWS License Manager CLI 和 AWS License Manager API 來建立自我管理的授權。

**注意**  
如果您使用 建立 RDS for Db2 資料庫執行個體 AWS 管理主控台，您將輸入授權的名稱來建立自我管理授權。然後，Amazon RDS 會將資料庫執行個體與此授權建立關聯。（在 Amazon RDS 主控台中，此授權稱為 AWS License Manager 組態。) 如果您想要使用 CLI AWS License Manager 或 AWS License Manager API 建立 RDS for Db2 資料庫執行個體，您必須先使用下列步驟建立自我管理授權。相同的情況適用於將 RDS for Db2 資料庫執行個體還原至某個時間點，或從快照還原。

##### 主控台
<a name="db2-lms-integration.console"></a>

**若要建立自我管理的授權來追蹤 RDS for Db2 資料庫執行個體的授權用量。**

1. 移至 [https://console.aws.amazon.com/license-manager/](https://console.aws.amazon.com/license-manager/)。

1. 建立自我管理的授權。

   若要取得指示，請參閱《AWS License Manager 使用者指南》**中的[建立自我管理的授權](https://docs.aws.amazon.com/license-manager/latest/userguide/create-license-configuration.html)。

   在 **Product Information (產品資訊)** 面板中，新增 **RDS Product Information Filter (RDS 產品資訊篩選條件)** 的規則。

   如需詳細資訊，請參閱 *AWS License Manager API 參考*中的 [ProductInformation](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_ProductInformation.html)。

##### AWS License Manager CLI
<a name="db2-lms-integration.cli"></a>

**注意**  
此程序使用 CLI AWS License Manager 命令。

若要使用 建立自我管理的授權 AWS CLI，請 AWS License Manager 執行 [create-license-configuration](https://docs.aws.amazon.com/cli/latest/reference/license-manager/create-license-configuration.html) 命令。使用 `--cli-input-json` 或 `--cli-input-yaml` 選項將選項傳遞至命令。

如需詳細資訊，請參閱[建立自我管理授權的設定](#db2-settings-lms)。

下列命令會建立 Db2 標準版本的自我管理授權。

```
aws license-manager create-license-configuration --cli-input-json file://rds-db2-se.json
```

下列 JSON 是上一個命令中所使用 `rds-db2-se.json` 檔案的內容。

```
{
    "Name": "rds-db2-se",
    "Description": "RDS Db2 Standard Edition",
    "LicenseCountingType": "vCPU",
    "LicenseCountHardLimit": false,
    "ProductInformationList": [
        {
            "ResourceType": "RDS",
            "ProductInformationFilterList": [
                {
                    "ProductInformationFilterName": "Engine Edition",
                    "ProductInformationFilterValue": ["db2-se"],
                    "ProductInformationFilterComparator": "EQUALS"
                }
            ]
        }
    ]
}
```

如需關於產品資訊的詳細資訊，請參閱《AWS License Manager 使用者指南》**中的[自動化探索資源庫存](https://docs.aws.amazon.com/license-manager/latest/userguide/automated-discovery.html)。

如需關於 `--cli-input` 參數的詳細資訊，請參閱《* AWS CLI 使用者指南*》中的[從 JSON 或 YAML 輸入檔案產生AWS CLI Skeleton 及輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)。

##### AWS License Manager API
<a name="db2-lms-integration.api"></a>

**注意**  
此程序使用 AWS License Manager API 命令。

若要建立自我管理授權，請使用 [https://docs.aws.amazon.com/license-manager/latest/APIReference/API_CreateLicenseConfiguration.html](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_CreateLicenseConfiguration.html) AWS License Manager API 操作搭配下列必要參數：
+ `Name`
+ `LicenseCountingType` 
+ `ProductInformationList`
+ `ResourceType`
+ `ProductInformationFilterList`
+ `ProductInformationFilterName`
+ `ProductInformationFilterValue`
+ `ProductInformationFilterComparator`

如需這些參數的詳細資訊，請參閱 [建立自我管理授權的設定](#db2-settings-lms)。

#### AWS License Manager 使用 範本自動化在 中建立自我管理的授權
<a name="db2-lms-integration-templates"></a>

您可以使用 CloudFormation 和 Terraform 範本，自動建立自我管理的授權。

下列範例 CloudFormation 範本會在 RDS for Db2 上建立 Db2 Standard Edition 的自我管理授權。對於 Db2 進階版本的範本，請更新 `Name`、`Description` 和 `ProductInformationFilter` 的值。

```
AWSTemplateFormatVersion: "2010-09-09"
Description: CloudFormation template to create a License Configuration for Db2 Standard Edition on RDS for Db2.

Resources:
  Db2LicenseConfiguration:
    Type: "AWS::LicenseManager::LicenseConfiguration"
    Properties:
      Name: "rds-db2-se"
      Description: "Db2 Standard Edition on RDS for Db2"
      LicenseCountingType: "vCPU"
      LicenseCountHardLimit: false
      ProductInformationList:
        - ResourceType: "RDS"
          ProductInformationFilterList:
            - ProductInformationFilterName: "Engine Edition"
              ProductInformationFilterValue:
                - "db2-se"
              ProductInformationFilterComparator: "EQUALS"
```

如需 CloudFormation 搭配 Amazon RDS 使用 的詳細資訊，請參閱 [使用 建立 Amazon RDS 資源 AWS CloudFormation](creating-resources-with-cloudformation.md)。

下列範例 Terraform 範本會在 RDS for Db2 上建立 Db2 標準版本的自我管理授權。將 *us-east-1* 取代為您的 AWS 區域。對於 Db2 進階版本的範本，請更新 `name`、`description` 和 `product_information_filter` 的值。

```
provider "aws" {
  region = "us-east-1"
}

resource "aws_licensemanager_license_configuration" "rds_db2_license_config" {
  name                     = "rds-db2-se"
  description              = "Db2 Standard Edition on RDS for Db2
  license_counting_type    = "vCPU"
  license_count_hard_limit = false

  product_information_list {
    resource_type = "RDS"

    product_information_filter {
      name       = "Engine Edition"
      comparator = "EQUALS"
      value      = ["db2-se"]
    }
  }
}
```

如需使用 Terraform和 Amazon RDS 的詳細資訊，請參閱* AWS 《 方案指南*》中的[使用 Terraform 作為 的 IaC 工具 AWS 雲端](https://docs.aws.amazon.com/prescriptive-guidance/latest/choose-iac-tool/terraform.html)以及[使用 Terraform AWS 提供者的最佳實務](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/introduction.html)。

#### 建立自我管理授權的設定
<a name="db2-settings-lms"></a>

在下表中，您可以使用 AWS License Manager CLI、 AWS License Manager API CloudFormation 、 範本和 Terraform 範本，找到建立自我管理授權之設定的詳細資訊。下表中的參數名稱會以 AWS License Manager API 和 CloudFormation 範本中使用的名稱格式顯示。


| 參數名稱 | 資料類型 | 必要 | Description | 
| --- | --- | --- | --- | 
|  Name  |  string  |  是  |  授權組態的名稱。  | 
|  Description  |  string  |  否  |  授權組態的描述。  | 
|  LicenseCountingType  |  string  |  是  |  用於追蹤授權庫存的維度。有效值：`vCPU`。  | 
| LicenseCountHardLimit | 布林值 | 否 | 指出是使用硬性還是軟性授權強制執行。超過硬性限制會封鎖新執行個體的啟動。 | 
|  ProductInformationList  |  物件的陣列  |  是  | 授權組態的產品資訊清單。 | 
|  ResourceType  |  string  |  是  |  資源類型。有效值：`RDS`。  | 
|  ProductInformationFilterList  |  物件的陣列  |  是  |  授權組態的產品資訊篩選條件清單。  | 
|  ProductInformationFilterName  |  string  |  是  |  要宣告之篩選條件類型的名稱。有效值：`Engine Edition`。  | 
|  ProductInformationFilterValue  |  字串陣列  | 是 |  要篩選的值。您必須僅指定一個值。有效值：`db2-se` 或 `db2-ae`。  | 
| ProductInformationFilterComparator |  string  |  是  | ProductInformationFilterName 的邏輯運算子。有效值：EQUALS。 | 

## 透過 的 Db2 授權 AWS Marketplace
<a name="db2-licensing-options-marketplace"></a>

在透過 AWS Marketplace 模型取得的 Db2 授權中，您需支付每小時費率來訂閱 Db2 授權。此模型協助您不需要購買授權即可快速開始使用 RDS for Db2。

若要透過 使用 Db2 授權 AWS Marketplace，您需要針對要使用的特定IBM Db2版本啟用 AWS Marketplace 訂閱。如果您尚未擁有，[請訂閱該 IBM Db2 版本的 AWS Marketplace](#db2-marketplace-subscribing-registering)。

Amazon RDS 透過 AWS Marketplace IBM Db2 Standard Edition 和 IBM Db2 Advanced Edition 支援 Db2 授權。

**Topics**
+ [術語](#db2-marketplace-terminology)
+ [付款和帳單](#db2-marketplace-billing)
+ [訂閱 Db2 Marketplace 清單並使用 IBM 註冊](#db2-marketplace-subscribing-registering)
+ [取得私有優惠](#db2-marketplace-private-offer)

### 術語
<a name="db2-marketplace-terminology"></a>

此頁面會在與 討論 Amazon RDS 整合時使用下列術語 AWS Marketplace。

SaaS 訂閱  
在 中 AWS Marketplace，software-as-a-service(SaaS) 產品，例如pay-as-you-go授權模型，採用以用量為基礎的訂閱模型。Db2 軟體銷售商 IBM 會追蹤您的用量，您只需針對使用量付費。

公開優惠  
公開優惠可讓您直接從 購買 AWS Marketplace 產品 AWS 管理主控台。

私有優惠  
私有優惠是一種購買計劃，可讓賣方和買方協商自訂價格和最終使用者授權合約 (EULA) 條款以進行購買 AWS Marketplace。

Db2 Marketplace 費用  
IBM 收取的 Db2 軟體授權使用費。這些服務費用會透過 計量 AWS Marketplace ，並顯示在 AWS AWS Marketplace 區段下的帳單上。

Amazon RDS 費用  
RDS for Db2 服務所 AWS 收取的費用，在 AWS Marketplace 針對 Db2 授權使用 時排除授權。費用會透過正在使用的 Amazon RDS 服務計量，並顯示在您的 AWS 帳單上。

### 付款和帳單
<a name="db2-marketplace-billing"></a>

RDS for Db2 與 整合， AWS Marketplace 以提供 Db2 的每小時pay-as-you-go授權。Db2 Marketplace 費用涵蓋 Db2 軟體的授權成本，而 Amazon RDS 費用涵蓋 RDS for Db2 資料庫執行個體用量的成本。如需定價的相關資訊，請參閱 [Amazon RDS for Db2 定價](https://aws.amazon.com/rds/db2/pricing/)。

若要停止這些費用，您必須刪除任何 RDS for Db2 資料庫執行個體。此外，您可以移除對 AWS Marketplace 的 Db2 授權訂閱。如果您移除訂閱而未刪除資料庫執行個體，Amazon RDS 將會繼續向您收取使用資料庫執行個體的費用。如需詳細資訊，請參閱[刪除資料庫執行個體](USER_DeleteInstance.md)。

您可以在 [AWS Billing 主控台](https://console.aws.amazon.com/billing) AWS Marketplace 中檢視透過 使用 Db2 授權的 RDS for Db2 資料庫執行個體的帳單和管理付款。您的帳單包含兩個費用：一個用於透過 使用 Db2 授權 AWS Marketplace ，另一個用於 Amazon RDS。如需帳單的相關詳細資訊，請參閱 *AWS 帳單與成本管理 使用者指南*中的[檢視您的帳單](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/getting-viewing-bill.html)。

### 訂閱 Db2 Marketplace 清單並使用 IBM 註冊
<a name="db2-marketplace-subscribing-registering"></a>

若要透過 使用 Db2 授權 AWS Marketplace，您必須使用 AWS 管理主控台 來完成下列兩個任務。您無法透過 AWS CLI 或 RDS API 完成這些任務。

**注意**  
如果您想要使用 AWS CLI 或 RDS API 建立資料庫執行個體，您必須先完成這兩個任務。

**Topics**
+ [任務 1：在 中訂閱 Db2 AWS Marketplace](#db2-marketplace-subscribing)
+ [任務 2：使用 IBM 註冊您的訂閱](#db2-marketplace-registering)

#### 任務 1：在 中訂閱 Db2 AWS Marketplace
<a name="db2-marketplace-subscribing"></a>

若要搭配 使用 Db2 授權 AWS Marketplace，您需要有 Db2 的有效 AWS Marketplace 訂閱。由於訂閱與特定IBM Db2版本相關聯，因此您需要 AWS Marketplace 針對要使用的每個 Db2 版本在 中訂閱 Db2：[IBM Db2Advanced Edition](https://aws.amazon.com/marketplace/pp/prodview-w6m4yctzzy5fk)、[IBM Db2Standard Edition](https://aws.amazon.com/marketplace/pp/prodview-gbsgwalbkphv6)。如需 AWS Marketplace 訂閱的相關資訊，請參閱《 *AWS Marketplace 買方指南*》中的 [Saas 用量型訂閱](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-saas-products.html#saas-pricing-models)。

我們建議您在開始[建立資料庫執行個體](USER_CreateDBInstance.md) AWS Marketplace *之前*，先訂閱 Db2。

#### 任務 2：使用 IBM 註冊您的訂閱
<a name="db2-marketplace-registering"></a>

在 中訂閱 Db2 之後 AWS Marketplace，請從 AWS Marketplace 頁面完成您選擇的 Db2 訂閱類型的 IBM 訂單註冊。在頁面上 AWS Marketplace ，選擇**檢視購買選項**，然後選擇**設定您的帳戶**。您可以使用現有的 IBM 帳戶註冊，也可以建立免費的 IBM 帳戶。

### 取得私有優惠
<a name="db2-marketplace-private-offer"></a>

您可以從 請求 Db2 的 AWS Marketplace 私有優惠IBM。如需詳細資訊，請參閱《AWS Marketplace 買方指南》**中的[私有優惠](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-private-offers.html)。

**注意**  
如果您是 AWS Organizations 使用者，並收到向付款人和成員帳戶發出的私有優惠，請依照下列程序直接在組織中的每個帳戶訂閱 Db2。

**取得 Db2 私有優惠**

1. 發出私有優惠之後，請登入 AWS Marketplace 主控台。

1. 使用 Db2 私有優惠連結開啟電子郵件。

1. 遵循連結直接存取私有優惠。
**注意**  
在登入正確的帳戶之前，遵循此連結將會造成**找到分頁備註** (404) 錯誤。

1. 檢閱條款與條件。

1. 選擇**接受條款**。
**注意**  
如果不接受 AWS Marketplace 私有優惠，則 的 Db2 服務費用 AWS Marketplace 將繼續以公有小時費率計費。

1. 若要驗證優惠詳細資訊，請在產品清單中選取**顯示詳細資訊**。

完成程序後，您可以依照 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md) 中的步驟建立資料庫執行個體。在 **的授權** AWS 管理主控台下，請確定您**透過 選擇 AWS Marketplace**。

## 在 Db2 授權之間切換
<a name="db2-edition-license-switching"></a>

您在 RDS for Db2 中可以切換 Db2 授權。例如，您可以從自帶授權 (BYOL) 開始，然後透過 AWS Marketplace切換到 Db2 授權。

**重要**  
如果您想要透過 切換到 Db2 授權 AWS Marketplace，請確定您擁有要使用的 IBM Db2 版本的作用中 AWS Marketplace 訂閱。如果沒有，請先[在該 Db2 版本的 中訂閱 AWS Marketplace](#db2-marketplace-subscribing-registering) Db2，然後完成還原程序。

### 主控台
<a name="db2-restore-pitr-console"></a>

**在 Db2 授權之間切換**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Automated backups** (自動備份)。

   自動備份顯示在 **Current Region** (目前區域) 索引標籤上。

1. 選擇您想要還原的資料庫執行個體。

1. 針對 **Actions** (動作)，選擇 **Restore to point in time** (還原至時間點)。

   **Restore to point in time (還原到時間點)** 視窗隨即出現。

1. 選擇 **Latest restorable time (最近的可還原時間)** 以還原最近一次的可能時間，或選擇 **Custom (自訂)** 以選擇一個時間。

   如果您選擇**自訂**，請輸入您希望執行個體還原到什麼日期和時間。
**注意**  
會以您的當地時區顯示時間，根據國際標準時間 (UTC) 的時差來表示。例如，UTC-5 是東部標準時間/中部日光節約時間。

1. 針對**資料庫引擎**，選擇您要使用的 Db2 授權。

1. 對於 **DB Instance Identifier** (資料庫執行個體識別碼)，輸入目標還原資料庫執行個體的名稱。名稱必須是唯一的。

1. 視需要選擇其他選項，例如資料庫執行個體類別、儲存體以及是否要使用儲存體自動擴充功能。

   如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

1. 選擇 **Restore to point in time (還原至時間點)**。

如需詳細資訊，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

### AWS CLI
<a name="db2-restore-pitr-cli"></a>

若要在 Db2 授權之間切換，請執行 [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 命令。下列範例會還原最新的point-in-time版本、將資料庫引擎設定為IBM Db2進階版本，以及透過 將授權模型設定為 Db2 授權 AWS Marketplace。

您可以指定其他設定。如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

**Example**  
在 Linux、macOS 或 Unix 中：  

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier my_source_db_instance \
3.     --target-db-instance-identifier my_target_db_instance \
4.     --use-latest-restorable-time \
5.     --engine db2-ae \
6.     --license-model marketplace-license
```
在 Windows 中：  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier my_source_db_instance ^
3.     --target-db-instance-identifier my_target_db_instance ^
4.     --use-latest-restorable-time ^
5.     --engine db2-ae ^
6.     --license-model marketplace-license
```

如需詳細資訊，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

### RDS API
<a name="db2-restore-pitr-api"></a>

若要在 Db2 授權之間切換，請使用下列參數呼叫 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) 作業：
+ `SourceDBInstanceIdentifier`
+ `TargetDBInstanceIdentifier`
+ `RestoreTime`
+ `Engine`
+ `LicenseModel`

如需詳細資訊，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

# Amazon RDS for Db2 執行個體類別
<a name="Db2.Concepts.General.InstanceClasses"></a>

資料庫執行個體的運算和記憶體容量由其執行個體類別決定。您需要的資料庫執行個體類別取決於您的處理能力和記憶體需求。



## 支援的 RDS for Db2 執行個體類別
<a name="Db2.Concepts.InstanceClasses.Supported"></a>

支援的 Amazon RDS for Db2 資料庫執行個體類別是 Amazon RDS 資料庫執行個體類別的子集。如需 Amazon RDS 執行個體類別的完整清單，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

**Topics**
+ [Db2 Standard Edition 的支援 RDS for Db2 執行個體類別](#Db2.Concepts.InstanceClasses.Supported.SE)
+ [Db2 Advanced Edition 的支援 RDS for Db2 執行個體類別](#Db2.Concepts.InstanceClasses.Supported.AE)

### Db2 Standard Edition 的支援 RDS for Db2 執行個體類別
<a name="Db2.Concepts.InstanceClasses.Supported.SE"></a>

下表列出 Db2 資料庫 11.5.9.0 版的 Db2 Standard Edition 所支援之所有執行個體類別。這些執行個體類別適用於透過 AWS Marketplace取得自帶授權 (BYOL) 和 Db2 授權。


| 執行個體類別類型 | 執行個體類別 | 
| --- | --- | 
|  採用第三代 Intel Xeon Scalable 處理器、SSD 儲存體和網路最佳化的一般用途執行個體類別  |  db.m6idn.large–db.m6idn.8xlarge  | 
|  採用第三代 Intel Xeon Scalable 處理器的一般用途執行個體  |  db.m6in.large–db.m6in.8xlarge  | 
|  一般用途執行個體類別  |  db.m7i.large–db.m7i.8xlarge db.m6i.large–db.m6i.8xlarge  | 
|  具有本機 NVMe 型 SSD 的記憶體最佳化執行個體類別，採用第三代 Intel Xeon Scalable 處理器  |  db.x2iedn.xlarge  | 
|  記憶體最佳化的執行個體類別，採用第三代 Intel Xeon Scalable 處理器  |  db.r6idn.large–db.r6idn.4xlarge db.r6in.large–db.r6in.4xlarge  | 
|  記憶體最佳化資料庫執行個體類別  |  db.r7i.large–db.r7i.8xlarge db.r6i.large–db.r6i.4xlarge  | 
|  爆量效能執行個體類別  |  db.t3.small–db.t3.2xlarge  | 

### Db2 Advanced Edition 的支援 RDS for Db2 執行個體類別
<a name="Db2.Concepts.InstanceClasses.Supported.AE"></a>

下表列出 Db2 資料庫 11.5.9.0 版的 Db2 Advanced Edition 所支援之所有執行個體類別。這些執行個體類別適用於透過 AWS Marketplace取得自帶授權 (BYOL) 和 Db2 授權。


| 執行個體類別類型 | 執行個體類別 | 
| --- | --- | 
|  採用第三代 Intel Xeon Scalable 處理器、SSD 儲存體和網路最佳化的一般用途執行個體類別  |  db.m6idn.large–db.m6idn.32xlarge  | 
|  採用第三代 Intel Xeon Scalable 處理器的一般用途執行個體  |  db.m6in.large–db.m6in.32xlarge  | 
|  一般用途執行個體類別  |  db.m6i.large–db.m7i.48xlarge db.m7i.large–db.m7i.48xlarge  | 
|  具有本機 NVMe 型 SSD 的記憶體最佳化執行個體類別，採用第三代 Intel Xeon Scalable 處理器  |  db.x2iedn.xlarge–db.x2iedn.32xlarge  | 
|  記憶體最佳化的執行個體類別，採用第三代 Intel Xeon Scalable 處理器  |  db.r6idn.large–db.r6idn.32xlarge db.r6in.8xlarge–db.r6in.32xlarge  | 
|  記憶體最佳化資料庫執行個體類別  |  db.r6i.large–db.r7i.48xlarge db.r7i.large–db.r7i.48xlarge  | 
|  爆量效能執行個體類別  |  db.t3.small–db.t3.2xlarge  | 

# Amazon RDS for Db2 預設角色
<a name="db2-default-roles"></a>

RDS for Db2 新增下列六個角色，並使用 `ADMIN` 選項將其授予 `master_user_role`。佈建資料庫時，RDS for Db2 會將 `master_user_role` 授予主要使用者。主要使用者可以透過連線至資料庫，將這些角色授予其他具有原生 `GRANT` 陳述式的使用者、群組或角色。
+ **DBA** – RDS for Db2 會建立此具有 `DATAACCESS` 授權的空角色。主要使用者可以為此角色新增更多授權或權限，然後將角色授予其他使用者、群組或角色。
+ **DBA\$1RESTRICTED** – RDS for Db2 會建立此空角色。主要使用者可以為此角色新增權限，然後將角色授予其他使用者、群組或角色。
+ **DEVELOPER** – RDS for Db2 會建立此具有 `DATAACCESS` 授權的空角色。主要使用者可以為此角色新增更多授權或權限，然後將角色授予其他使用者、群組或角色。
+ **ROLE\$1NULLID\$1PACKAGES** – RDS for Db2 在 `CREATE DATABASE` 執行時受 Db2 限制的 `ALL NULLID` 套件上授予此角色 `EXECUTE` 權限。
+ **ROLE\$1PROCEDURES** – RDS for Db2 在所有 `SYSIBM` 程序中對此角色授予 `EXECUTE` 權限。
+ **ROLE\$1TABLESPACES** – RDS for Db2 授予 `CREATE DATABASE` 命令所建立資料表空間的 `USAGE` 權限。

# Amazon RDS for Db2 參數
<a name="db2-supported-parameters"></a>

Amazon RDS for Db2 使用三種類型的參數：資料庫管理員組態參數、登錄變數和資料庫組態參數。您可以透過參數群組管理前兩種類型，並透過 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 預存程序更新最後一個類型。

依預設，RDS for Db2 資料庫執行個體會使用 Db2 資料庫和資料庫執行個體專用的資料庫參數群組。此參數群組包含 IBM Db2 資料庫引擎的參數，特別是資料庫管理員組態參數和登錄變數。如需使用參數群組的相關資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

RDS for Db2 資料庫組態參數會設為您已選取之儲存引擎的預設值。如需 Db2 參數的詳細資訊，請參閱 IBM Db2 文件中的 [Db2 資料庫組態參數](https://www.ibm.com/docs/en/db2/11.5?topic=parameters-database-configuration)。

**Topics**
+ [檢視參數群組中的參數](#db2-viewing-parameter-group-parameters)
+ [使用 Db2 命令檢視所有參數](#db2-viewing-parameters-db2-commands)
+ [修改參數群組中的參數](#db2-modifying-parameter-group-parameters)
+ [使用 Db2 命令修改資料庫組態參數](#db2-modifying-parameters-db2-commands)

## 檢視參數群組中的參數
<a name="db2-viewing-parameter-group-parameters"></a>

資料庫管理員組態參數和登錄變數是在參數群組中設定。您可以使用 AWS CLI、 或 RDS API AWS 管理主控台來檢視特定 Db2 版本的資料庫管理員組態參數和登錄變數。

### 主控台
<a name="db2-viewing-parameter-group-parameters-console"></a>

**檢視資料庫參數群組的參數值**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups (參數群組)**。

   資料庫參數群組隨即會出現在清單中。

1. 選擇參數群組的名稱，以查看其參數清單。

### AWS CLI
<a name="db2-viewing-parameter-group-parameters-cli"></a>

您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html) 命令來檢視 Db2 版本的資料庫管理員組態參數和登錄變數。為 `--db-parameter-group-family` 選項指定下列其中一個值：
+ `db2-ae-11.5`
+ `db2-se-11.5`

例如，若要檢視 Db2 Standard Edition 11.5 的參數，請執行下列命令：

```
aws rds describe-engine-default-parameters --db-parameter-group-family db2-se-11.5
```

此命令會產生類似下列範例的輸出：



```
{
    "EngineDefaults": {
        "Parameters": [
            {
                "ParameterName": "agent_stack_sz",
                "ParameterValue": "1024",
                "Description": "You can use this parameter to determine the amount of memory that is allocated by Db2 for each agent thread stack.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "256-32768",
                "IsModifiable": false
            },
            {
                "ParameterName": "agentpri",
                "ParameterValue": "-1",
                "Description": "This parameter controls the priority given to all agents and to other database manager instance processes and threads by the operating system scheduler. This priority determines how CPU time is allocated to the database manager processes, agents, and threads relative to other processes and threads running on the machine.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "1-99",
                "IsModifiable": false
            },
            ...
        ]
    }
}
```

若要檢視 Db2 Standard Edition 11.5 的可修改參數，請執行下列命令：

在 Linux、macOS 或 Unix 中：

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family db2-se-11.5 \
    --query 'EngineDefaults.Parameters[?IsModifiable==`true`].{ParameterName:ParameterName, DefaultValue:ParameterValue}'
```

在 Windows 中：

```
aws rds describe-engine-default-parameters ^
    --db-parameter-group-family db2-se-11.5 ^
    --query 'EngineDefaults.Parameters[?IsModifiable==`true`].{ParameterName:ParameterName, DefaultValue:ParameterValue}'
```

### RDS API
<a name="db2-viewing-parameter-group-parameters-api"></a>

若要檢視資料庫參數群組的參數值，請搭配下列必要參數使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html) 作業。
+ `DBParameterGroupName`

## 使用 Db2 命令檢視所有參數
<a name="db2-viewing-parameters-db2-commands"></a>

您可以使用 Db2 命令來檢視資料庫管理員組態參數、資料庫組態參數和登錄變數的設定。

**檢視設定**

1. 連線至 Db2 資料庫。在下列範例中，將 *database\$1name*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to database_name user master_username using master_password"
   ```

1. 尋找支援的 Db2 版本。

   ```
   db2 "select service_level, fixpack_num from table(sysproc.env_get_inst_info()) as instanceinfo"
   ```

1. 檢視特定 Db2 版本的參數。
   + 執行下列命令來檢視資料庫管理員組態參數：

     ```
     db2 "select cast(substr(name,1,24) as varchar(24)) as name, case 
         when value_flags = 'NONE' then '' else value_flags end flags, 
         cast(substr(value,1,64) as varchar(64)) as current_value
         from sysibmadm.dbmcfg
         order by name asc with UR"
     ```
   + 執行下列命令來檢視所有資料庫組態參數：

     ```
     db2 "select cast(substr(name,1,24) as varchar(24)) as name, case 
         when value_flags = 'NONE' then '' else value_flags end flags, 
         cast(substr(value,1,64) as varchar(64)) as current_value 
         from table(db_get_cfg(null)) order by name asc, member asc with UR"
     ```
   + 執行下列命令來檢視目前設定的登錄變數：

     ```
     db2 "select cast(substr(reg_var_name,1,50) as varchar(50)) as reg_var_name, 
         cast(substr(reg_var_value,1,50) as varchar(50)) as reg_var_value, 
         level from table(env_get_reg_variables(null)) 
         order by reg_var_name,member with UR"
     ```

## 修改參數群組中的參數
<a name="db2-modifying-parameter-group-parameters"></a>

您可以使用 AWS 管理主控台 AWS CLI、 或 RDS API，修改自訂參數群組中的資料庫管理員組態參數和登錄變數。如需詳細資訊，請參閱[Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)。

### 主控台
<a name="db2-modifying-parameter-group-parameters-console"></a>

**修改資料庫管理員組態參數和登錄變數**

1. 建立自訂參數群組。如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改該自訂參數群組中的參數。如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### AWS CLI
<a name="db2-modifying-parameter-group-parameters-cli"></a>

**修改資料庫管理員組態參數和登錄變數**

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 命令來建立自訂參數群組。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您要建立之參數群組的名稱。
   + `--db-parameter-group-family` – Db2 引擎版本和主要版本。有效值：`db2-se-11.5`、`db2-ae-11.5`。
   + `--description` – 此參數群組的描述。

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 命令所建立的自訂參數群組中的參數。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您所建立的參數群組之名稱。
   + `--parameters` – 參數名稱、值，以及參數更新套用方法的陣列。

   如需修改參數群組的相關詳細資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### RDS API
<a name="db2-modifying-parameter-group-parameters-api"></a>

**修改資料庫管理員組態參數和登錄變數**

1. 使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 作業來建立自訂資料庫參數群組。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 作業所建立的自訂參數群組中的參數。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `Parameters`

   如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

## 使用 Db2 命令修改資料庫組態參數
<a name="db2-modifying-parameters-db2-commands"></a>

您可以使用 Db2 命令修改資料庫組態參數。

**修改資料庫組態參數**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.update_db_param` 預存程序來變更資料庫組態參數。如需詳細資訊，請參閱[rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)。

   ```
   db2 "call rdsadmin.update_db_param(
       'database_name', 
       'parameter_to_modify', 
       'changed_value',
       'restart_database')"
   ```

# Amazon RDS 上 Db2 資料庫的 EBCDIC 定序
<a name="db2-ebcdic"></a>

Amazon RDS for Db2 支援 Db2 資料庫的 EBCDIC 定序。當您使用 Amazon RDS [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序建立資料庫時，只能指定資料庫的 EBCDIC 定序序列。

當您使用 AWS 管理主控台、AWS CLI 或 RDS API 建立 RDS for Db2 資料庫執行個體時，可以指定資料庫名稱。如果您指定資料庫名稱，則 Amazon RDS 會建立預設定序為 `SYSTEM` 的資料庫。如果您需要使用 EBCDIC 定序建立資料庫，則在建立資料庫執行個體時，請勿指定資料庫名稱。

RDS for Db2 中資料庫的定序會在建立時設定，且不可變。

**使用 EBCDIC 定序建立 Db2 資料庫**

1. 如果您沒有 RDS for Db2 資料庫執行個體，請建立資料庫執行個體，但請勿指定資料庫名稱。您可以使用 AWS 管理主控台、AWS CLI 或 RDS API 來建立資料庫執行個體。如需更多詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

1. 透過呼叫 `rdsadmin.create_database` 預存程序來建立 Db2 資料庫，並將定序選項設定為 EBCDIC 值。如需更多詳細資訊，請參閱 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)。
**重要**  
使用預存程序建立資料庫後，您無法變更定序序列。如果您希望資料庫使用不同的定序序列，請呼叫 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 預存程序來捨棄資料庫。然後，建立具有所需定序序列的資料庫。

# Amazon RDS for Db2 資料庫執行個體的本機時區
<a name="db2-time-zone"></a>

執行 Db2 的 Amazon RDS 資料庫執行個體的時區是根據預設來設定的。預設值是國際標準時間 (UTC)。若要符合應用程式的時區，您可以改為將資料庫執行個體的時區改設為本機時區。

您可以在第一次建立資料庫執行個體時設定時區。您可以使用 AWS 管理主控台、RDS API 或 AWS CLI 建立資料庫執行個體。如需更多詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

如果您的資料庫執行個體是多可用區域部署的一部分，則在容錯移轉時，其時區仍會維持在您設定的本機時區。

您可以將資料庫執行個體還原至您指定的時間點。時間會以您當地的時區顯示。如需更多詳細資訊，請參閱 [將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

在資料庫執行個體上設定本機時區有下列限制：
+ 您無法修改現有 Amazon RDS for Db2 資料庫執行個體的時區。
+ 您無法將快照從某個時區的資料庫執行個體還原至另一個時區的資料庫執行個體。
+ 強烈建議您不要將備份檔案從某個時區還原至不同時區。如果您將備份檔案從某個時區還原至另一個時區，則必須稽核您的查詢及應用程式，是否受到時區變更的影響。

## 可用時區
<a name="db2-time-zone-values"></a>

您可對時區設定使用下列值。


| 區域 | 時區 | 
| --- | --- | 
|  非洲  |  非洲/開羅，非洲/卡薩布蘭卡，非洲/哈拉雷，非洲/拉哥斯，非洲/魯安達，非洲/蒙羅維亞，非洲/奈洛比，非洲/的黎波里，非洲/溫吐克  | 
|  美洲  |  美洲/阿拉瓜伊納，美洲/阿根廷/布宜諾斯艾利斯，美洲/亞松森，美洲/波哥大，美洲/卡拉卡斯，美洲/芝加哥，美洲/赤瓦瓦州，美洲/古雅巴，美洲/丹佛，美洲/底特律，美洲/福塔力沙，美洲/哥特哈布，美洲/瓜地馬拉，美洲/哈利法克斯，美洲/利馬，美洲/洛杉磯，美洲/瑪瑙斯，美洲/馬塔莫羅斯，美洲/墨西哥市，美洲/蒙特利，美洲/蒙特維多，美洲/紐約州，美洲/鳳凰城，美洲/聖地牙哥，美洲/聖保羅，美洲/提華納，美洲/多倫多  | 
|  亞洲  |  亞洲/安曼，亞洲/阿什哈巴德，亞洲/巴格達，亞洲/巴庫，亞洲/曼谷，亞洲/貝魯特，亞洲/加爾各答，亞洲/大馬士革，亞洲/達卡，亞洲/香港，亞洲/伊爾庫次克，亞洲/雅加達，亞洲/耶路撒冷，亞洲/喀布爾，亞洲/喀拉蚩，亞洲/加德滿都，亞洲/加爾各答，亞洲/克拉斯諾雅斯克，亞洲/馬加丹，亞洲/馬尼拉，亞洲/馬斯喀特，亞洲/新西伯利亞，亞洲/仰光，亞洲/利雅德，亞洲/首爾，亞洲/上海，亞洲/新加坡，亞洲/台北，亞洲/德黑蘭，亞洲/東京，亞洲/庫倫，亞洲/海參崴，亞洲/雅庫次克，亞洲/葉里溫  | 
|  大西洋  |  大西洋/亞速爾群島，大西洋/維德角群島  | 
|  澳大利亞  |  澳洲/阿德萊德，澳洲/布利斯班，澳洲/達爾文，澳洲/尤克拉，澳洲/荷巴特，澳洲/羅豪，澳洲/伯斯，澳洲/雪梨  | 
|  巴西  |  巴西/迪諾羅尼亞，巴西/東部  | 
|  加拿大  |  加拿大/紐芬蘭，加拿大/薩克其萬省  | 
|  等等  |  等等/GMT-3  | 
|  歐洲  |  歐洲/阿姆斯特丹，歐洲/雅典，歐洲/柏林，歐洲/都柏林，歐洲/赫爾辛基，歐洲/加里寧格勒，歐洲/倫敦，歐洲/馬德里，歐洲/莫斯科，歐洲/巴黎，歐洲/布拉格，歐洲/羅馬，歐洲/塞拉耶佛，歐洲/斯德哥爾摩  | 
|  太平洋  |  太平洋/亞庇，太平洋/奧克蘭，太平洋/查塔姆，太平洋/斐濟，太平洋/關島，太平洋/檀香山，太平洋/刻里提瑪斯，太平洋/馬克沙斯，太平洋/薩摩亞，太平洋/東加塔普，太平洋/威克  | 
|  美國  |  美國/阿拉斯加，美國/中部，美國/東印第安納州，美國/東部，美國/太平洋  | 
|  UTC  |  UTC  | 

# 建立 Amazon RDS for Db2 資料庫執行個體的先決條件
<a name="db2-db-instance-prereqs"></a>

下列項目是建立資料庫執行個體之前的先決條件。

**Topics**
+ [管理員帳戶](#db2-prereqs-admin-account)
+ [其他考量](#db2-prereqs-additional-considerations)

## 管理員帳戶
<a name="db2-prereqs-admin-account"></a>

建立資料庫執行個體時，您必須指定執行個體的管理員帳戶。Amazon RDS 會將 `DBADM` 授權授予此本機資料庫管理員帳戶。

管理員帳戶具有下列特性、功能和限制：
+ 是本機使用者，而不是 AWS 帳戶。
+ 沒有 Db2 執行個體層級授權，例如 `SYSADM`、`SYSMAINT` 或 `SYSCTRL`。
+ 無法停止或啟動 Db2 執行個體。
+ 如果您在建立資料庫執行個體時指定名稱，則無法捨棄 Db2 資料庫。
+ 具有 Db2 資料庫的完整存取權，包括目錄資料表和檢視。
+ 可以使用 Amazon RDS 預存程序建立本機使用者和群組。
+ 可以授予及撤銷授權和權限。

管理員帳戶可以執行下列任務：
+ 建立、修改或刪除資料庫執行個體。
+ 建立資料庫快照。
+ 啟動時間點還原。
+ 建立資料庫快照的自動備份。
+ 建立資料庫快照的手動備份。
+ 使用其他 Amazon RDS 功能。

## 其他考量
<a name="db2-prereqs-additional-considerations"></a>

建立資料庫執行個體之前，請考慮下列項目：
+ 每個 Amazon RDS for Db2 資料庫執行個體最多可託管 50 個 Db2 資料庫。如需詳細資訊，請參閱[Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。
+ 初始資料庫名稱
  + 如果您在建立資料庫執行個體時未提供資料庫名稱，則 Amazon RDS 不會建立資料庫。
  + 在下列情況下請勿提供資料庫名稱：
    + 您想要修改 `db2_compatibility_vector` 參數。如需詳細資訊，請參閱[設定 db2\$1compatibility\$1vector 參數](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector)。
+ 在自帶授權 (BYOL) 模型中，您必須先建立包含 IBM Customer ID 和 IBM Site ID 的自訂參數群組。如需詳細資訊，請參閱[使用 Db2 的自帶授權 (BYOL)](db2-licensing.md#db2-licensing-options-byol)。
+ 在透過 AWS Marketplace 模型取得的 Db2 授權中，您需要針對要使用的特定IBM Db2版本啟用 AWS Marketplace 訂閱。如果您尚未擁有，[請在 AWS Marketplace中訂閱您要使用 IBM Db2 版本的 Db2](db2-licensing.md#db2-marketplace-subscribing-registering)。如需詳細資訊，請參閱[透過 的 Db2 授權 AWS Marketplace](db2-licensing.md#db2-licensing-options-marketplace)。

# Amazon RDS for Db2 資料庫執行個體上的多個資料庫
<a name="db2-multiple-databases"></a>

您可以呼叫 [rdsadmin.create\$1database ](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序，在單一 RDS for Db2 資料庫執行個體上建立多個資料庫。單一 RDS for Db2 資料庫執行個體限制為 50 個資料庫。此數字包含處於啟用和停用狀態的資料庫。

**注意**  
如果您在 2024 年 11 月 15 日之前建立的 RDS for Db2 資料庫執行個體上建立多個資料庫，則必須重新啟動資料庫執行個體，以啟用對多個資料庫的支援。

根據預設，Amazon RDS 會在您建立資料庫時啟用資料庫。若要最佳化記憶體資源，您可以停用不常使用的資料庫，然後在需要時加以啟用。如需詳細資訊，請參閱[停用資料庫](db2-managing-databases.md#db2-deactivating-database)及[啟用資料庫](db2-managing-databases.md#db2-activating-database)。

資料庫執行個體上已啟用的資料庫數量取決於伺服器上可用的記憶體資源。記憶體資源會根據資料庫執行個體類別和為資料庫設定的記憶體量而有所不同。如需資料庫執行個體類別的相關資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。如需如何更新 RDS for Db2 資料庫的記憶體相關資訊，請參閱 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)。

建議您為常見的資料庫任務、作業系統需求和其他 Amazon RDS 自動化任務 (例如備份) 選擇具有 2 GB 記憶體的資料庫執行個體類別。如需變更資料庫執行個體類別的詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

此外，IBM 建議每個作用中資料庫至少 1 GB 的記憶體。如需詳細資訊，請參閱 IBM 文件中的[磁碟和記憶體需求](https://www.ibm.com/docs/en/db2/11.5?topic=servers-disk-memory-requirements)。

您可以使用下列公式計算資料庫執行個體可以擁有的作用中資料庫數目上限：

```
Active database limit = (total server memory - 2 GB) / 1 GB 
```

下列範例顯示具有 db.m6i.xlarge 資料庫執行個體類別之資料庫執行個體的作用中資料庫數目上限：

```
Active database limit = (total server memory - 2 GB) / 1 GB 
                      = (16 GB - 2 GB) / 1 GB 
                      = 14 databases
```

當 Amazon RDS 在當機後復原資料庫時，如果資料庫先前處於作用中狀態，則會啟用資料庫。在某些情況下，例如當您將資料庫執行個體類別修改為較低的記憶體組態時，記憶體可能會不足，無法啟用資料庫執行個體上的所有資料庫。在這些情況下，Amazon RDS 會依照建立資料庫的順序來啟用資料庫。

**注意**  
Amazon RDS 因記憶體不足而無法啟用的任何資料庫都會保持停用狀態。

# 連線至您的 Db2 資料庫執行個體
<a name="USER_ConnectToDb2DBInstance"></a>

在 Amazon RDS 佈建您的 Amazon RDS for Db2 資料庫執行個體之後，您就可以使用任何標準 SQL 用戶端應用程式連線至資料庫執行個體。由於 Amazon RDS 是受管服務，您無法以 `SYSADM`、`SECADM`、`SYSCTRL` 或 `SYSMAINT` 身分登入。

您可以使用 IBM Db2 CLP、IBM CLPPlus、DBeaver 或 IBM Db2 Data Management Console 連線至執行 IBM Db2 資料庫引擎的資料庫執行個體。

**注意**  
如果您的 RDS for Db2 資料庫執行個體沒有足夠的記憶體，對 Db2 資料庫的連線就可能會失敗。如需詳細資訊，請參閱 [資料庫連線錯誤](db2-troubleshooting.md#db2-database-connection-error)。

**Topics**
+ [尋找您的 Amazon RDS for Db2 資料庫執行個體的端點](db2-finding-instance-endpoint.md)
+ [使用 IBM Db2 CLP 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-clp-client.md)
+ [使用 IBM CLPPlus 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-ibm-clpplus-client.md)
+ [使用 DBeaver 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-dbeaver.md)
+ [使用 IBM Db2 Data Management Console 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-ibm-data-management-console.md)
+ [使用 Amazon RDS for Db2 的安全群組考量](db2-security-groups-considerations.md)

# 尋找您的 Amazon RDS for Db2 資料庫執行個體的端點
<a name="db2-finding-instance-endpoint"></a>

每個 Amazon RDS 資料庫執行個體會有端點，並且每個端點有資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 SQL 用戶端應用程式連線至您的 Amazon RDS for Db2 資料庫執行個體，您需要資料庫執行個體的 DNS 名稱和連接埠號碼。

您可以使用 AWS 管理主控台 或 來尋找資料庫執行個體的端點 AWS CLI。

## 主控台
<a name="db2-finding-instance-endpoint-console"></a>

**尋找 RDS for Db2 資料庫執行個體的端點**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1.  在主控台的右上角，選擇資料庫執行個體 AWS 區域 的 。

1. 尋找您的 RDS for Db2 資料庫執行個體的 DNS 名稱和連接埠號碼。

   1. 選擇 **Databases** (資料庫) 來顯示資料庫執行個體的清單。

   1. 選擇 RDS for Db2 資料庫執行個體名稱以顯示執行個體詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[顯示端點和連接埠之資料庫執行個體的連線和安全性索引標籤。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-connectivity-security.png)

## AWS CLI
<a name="db2-finding-instance-endpoint-cli"></a>

若要尋找 RDS for Db2 資料庫執行個體的端點，請執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令。在下列範例中，將 *database-1* 取代為資料庫執行個體的名稱。

在 Linux、macOS 或 Unix 中：

```
aws rds describe-db-instances \
    --db-instance-identifier database-1 \
    --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier,DBName:DBName,Endpoint:Endpoint}' \
    --output json
```

在 Windows 中：

```
aws rds describe-db-instances ^
    --db-instance-identifier database-1 ^
    --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier,DBName:DBName,Endpoint:Endpoint}' ^
    --output json
```

此命令會產生類似下列範例的輸出。輸出中的 `Address` 行包含 DNS 名稱。

```
[
    {
        "DBInstanceIdentifier": "database-1",
        "DBName": "DB2DB",
        "Endpoint": {
            "Address": "database-1.123456789012.us-east-2.amazonaws.com",
            "Port": 50000,
            "HostedZoneId": "Z2OC4A7DETW6VH"
        }
    }
]
```

# 使用 IBM Db2 CLP 連線至 Amazon RDS for Db2 資料庫執行個體
<a name="db2-connecting-with-clp-client"></a><a name="db2-downloading-package"></a>

您可以使用命令列公用程式 (例如 IBM Db2 CLP) 來連線至 Amazon RDS for Db2 資料庫執行個體。此公用程式是 IBM Data Server Runtime Client 的一部分。若要從 IBM Fix Central 下載用戶端****，請參閱 IBM 支援中的[IBM資料伺服器用戶端套件 11.5 版 Mod 8 Fix Pack 0。](https://www.ibm.com/support/pages/node/6830885)

**Topics**
+ [術語](#db2-connecting-ibm-clp-terms)
+ [安裝用戶端](#db2-connecting-ibm-clp-install-client)
+ [連接至資料庫執行個體](#db2-connecting-ibm-clp-connect-db-instance)
+ [對您的 RDS for Db2 資料庫執行個體的連線進行故障診斷](#db2-troubleshooting-connections-clp)

## 術語
<a name="db2-connecting-ibm-clp-terms"></a>

下列術語有助於說明[連線至 RDS for Db2 資料庫執行個體](#db2-connecting-ibm-clp-connect-db-instance)時所使用的命令。

**目錄 tcpip 節點**  
此命令會向本機 Db2 用戶端註冊遠端資料庫節點，讓用戶端應用程式可存取節點。若要為節點編製目錄，請提供伺服器主機名稱、連接埠號碼和通訊協定等資訊。接著，目錄化節點代表一或多個遠端資料庫所在的目標伺服器。如需詳細資訊，請參閱 IBM Db2 文件中的 [CATALOG TCPIP/TCPIP4/TCPIP6 NODE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-tcpip-node)。

**目錄資料庫**  
此命令會向本機 Db2 用戶端註冊遠端資料庫，讓用戶端應用程式可存取資料庫。若要為資料庫編製目錄，您要提供如資料庫的別名、其所在的節點，以及連線到資料庫所需的身分驗證類型等資訊。如需詳細資訊，請參閱 IBM Db2 文件中的 [CATALOG DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-database)。

## 安裝用戶端
<a name="db2-connecting-ibm-clp-install-client"></a>

在 [downloading the package for Linux](#db2-downloading-package) 之後，使用根或管理員權限來安裝用戶端。

**注意**  
若要在 AIX 或 Windows 上安裝用戶端，請遵循相同的程序，但修改作業系統的命令。

**在 Linux 上安裝用戶端**

1. 執行 **`./db2_install -f sysreq`** 並選擇 **`yes`** 以接受授權。

1. 選擇要安裝用戶端的位置。

1. 執行 **`clientInstallDir/instance/db2icrt -s client` *instance\$1name***。將 *instance\$1name* 取代為 Linux 上的有效作業系統使用者。在 Linux 中，Db2 資料庫執行個體名稱會繫結至作業系統使用者名稱。

   此命令會在 Linux 上指定使用者的主目錄中建立 **`sqllib`** 目錄。

## 連接至資料庫執行個體
<a name="db2-connecting-ibm-clp-connect-db-instance"></a>

若要連線至 RDS for Db2 資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找這些項目的相關資訊，請參閱 [尋找端點](db2-finding-instance-endpoint.md)。您也需要知道您在建立 RDS for Db2 資料庫執行個體時所定義的資料庫名稱、主要使用者名稱和主要密碼。如需尋找這些項目的詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

**使用 IBM Db2 CLP 連線至 RDS for Db2 資料庫執行個體**

1. 使用您在 IBM Db2 CLP 用戶端安裝期間指定的使用者名稱進行登入。

1. 為您的 RDS for Db2 資料庫執行個體編製目錄。在下列範例中，將 *node\$1name*、*dns\$1name* 和 *port* 取代為本機目錄中節點的名稱、資料庫執行個體的 DNS 名稱，以及連接埠號碼。

   ```
   1. db2 catalog TCPIP node node_name remote dns_name server port
   ```

   **範例**

   ```
   db2 catalog TCPIP node remnode remote database-1.123456789012.us-east-1.amazonaws.com server 50000
   ```

1. 為 `rdsadmin` 資料庫和您的資料庫編製目錄。這可讓您連線至 `rdsadmin` 資料庫，以使用 Amazon RDS 預存程序執行一些管理任務。如需詳細資訊，請參閱[管理您的 RDS for Db2 資料庫執行個體](db2-administering-db-instance.md)。

   在下列範例中，將 *database\$1alias*、*node\$1name* 和 *database\$1name* 取代為此資料庫的別名、上一個步驟中所定義節點的名稱，以及資料庫名稱。`server_encrypt` 會透過網路加密您的使用者名稱和密碼。

   ```
   db2 catalog database rdsadmin [ as database_alias ] at node node_name authentication server_encrypt
       
   db2 catalog database database_name [ as database_alias ] at node node_name authentication server_encrypt
   ```

   **範例**

   ```
   db2 catalog database rdsadmin at node remnode authentication server_encrypt
       
   db2 catalog database testdb as rdsdb2 at node remnode authentication server_encrypt
   ```

1. 連線至 RDS for Db2 資料庫。在下列範例中，將 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 取代為您的資料庫名稱、主要使用者名稱，以及 RDS for Db2 資料庫執行個體的主要密碼。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

   此命令會產生類似下列範例的輸出：

   ```
   Database Connection Information
       
       Database server        = DB2/LINUXX8664 11.5.9.0
       SQL authorization ID   = ADMIN
       Local database alias   = TESTDB
   ```

1. 執行查詢並檢視結果。下列範例顯示選取您建立之資料庫的 SQL 陳述式。

   ```
   db2 "select current server from sysibm.dual"
   ```

   此命令會產生類似下列範例的輸出：

   ```
   1
       ------------------
       TESTDB
       
       1 record(s) selected.
   ```

## 對您的 RDS for Db2 資料庫執行個體的連線進行故障診斷
<a name="db2-troubleshooting-connections-clp"></a>

如果您收到下列 `NULLID` 錯誤，通常表示您的用戶端和 RDS for Db2 伺服器版本不相符。如需支援的 Db2 用戶端版本，請參閱 IBM Db2 文件中[支援的用戶端、驅動程式和伺服器層級組合](https://www.ibm.com/docs/en/db2/11.5?topic=communications-supported-combinations-clients-drivers-server-levels)。

```
db2 "select * from syscat.tables"
SQL0805N Package "NULLID.SQLC2O29 0X4141414141454A69" was not found.
SQLSTATE=51002
```

收到此錯誤後，您必須將舊版 Db2 用戶端的套件繫結至 RDS for Db2 所支援的 Db2 伺服器版本。

**將套件從較舊的 Db2 用戶端繫結至較新的 Db2 伺服器**

1. 在用戶端電腦上找到繫結檔案。一般而言，這些檔案位於 Db2 用戶端安裝路徑的 **bnd** 目錄中，並且具有副檔名 **.bnd**。

1. 連線至 Db2 伺服器。在下列範例中，將 *database\$1name* 取代為 Db2 資料庫的名稱。將 *master\$1username* 和 *master\$1password* 取代為您的資訊。此使用者具有 `DBADM` 授權。

   ```
   db2 connect to database_name user master_username using master_password
   ```

1. 執行 `bind` 命令以繫結套件。

   1. 導覽至用戶端電腦上存在繫結檔案的目錄。

   1. 為每個檔案執行 `bind` 命令。

      下列選項是必要的：
      + `blocking all` – 在單一資料庫請求中將繫結檔案中的所有套件繫結。
      + `grant public` – 向 `public` 授予許可以執行套件。
      + `sqlerror continue` – 指定即使發生錯誤，`bind` 程序仍會繼續。

      如需 `bind` 命令的詳細資訊，請參閱 IBM Db2 文件中的 [BIND 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-bind)。

1. 透過查詢 `syscat.package` 目錄檢視或檢查在 `bind` 命令之後傳回的訊息，確認繫結是否成功。

如需詳細資訊，請參閱 IBM 支援中的 [DB2 v11.5 繫結檔案和套件名稱清單。](https://www.ibm.com/support/pages/node/6190455)

# 使用 IBM CLPPlus 連線至 Amazon RDS for Db2 資料庫執行個體
<a name="db2-connecting-with-ibm-clpplus-client"></a>

您可以使用 IBM CLPPlus 等公用程式來連線至 Amazon RDS for Db2 資料庫執行個體。此公用程式是 IBM Data Server Runtime Client 的一部分。若要從 IBM Fix Central 下載用戶端****，請參閱 IBM 支援中的[IBM資料伺服器用戶端套件 11.5 版 Mod 8 Fix Pack 0。](https://www.ibm.com/support/pages/node/6830885)

**重要**  
建議您在支援圖形化使用者介面的作業系統上執行 IBM CLPPlus，例如 macOS、Windows 或 Linux 搭配 Desktop。如果執行無周邊 Linux，請使用 switch **-nw** 搭配 CLPPlus 命令。

**Topics**
+ [安裝用戶端](#db2-connecting-ibm-clpplus-install-client)
+ [連接至資料庫執行個體](#db2-connecting-ibm-clpplus-connect-db-instance)
+ [從 DB2 存放程序擷取 CLOB 資料](#db2-connecting-ibm-clpplus-retrieve-clob-data)

## 安裝用戶端
<a name="db2-connecting-ibm-clpplus-install-client"></a>

下載適用於 Linux 的套件後，請安裝用戶端。

**注意**  
若要在 AIX 或 Windows 上安裝用戶端，請遵循相同的程序，但修改作業系統的命令。

**在 Linux 上安裝用戶端**

1. 執行 **`./db2_install`**。

1. 執行 **`clientInstallDir/instance/db2icrt -s client` *instance\$1name***。將 *instance\$1name* 取代為 Linux 上的有效作業系統使用者。在 Linux 中，Db2 資料庫執行個體名稱會繫結至作業系統使用者名稱。

   此命令會在 Linux 上指定使用者的主目錄中建立 **`sqllib`** 目錄。

## 連接至資料庫執行個體
<a name="db2-connecting-ibm-clpplus-connect-db-instance"></a>

若要連線至 RDS for Db2 資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找這些項目的相關資訊，請參閱 [尋找端點](db2-finding-instance-endpoint.md)。您也需要知道您在建立 RDS for Db2 資料庫執行個體時所定義的資料庫名稱、主要使用者名稱和主要密碼。如需尋找這些項目的詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

**使用 IBM CLPPlus 連線至 RDS for Db2 資料庫執行個體**

1. 檢閱命令語法。在下列範例中，將 *clientDir* 取代為安裝用戶端的位置。

   ```
   cd clientDir/bin
       ./clpplus -h
   ```

1. 設定您的 Db2 伺服器。在下列範例中，將 *dsn\$1name*、*database\$1name*、*endpoint* 和 *port* 取代為 RDS for Db2 資料庫執行個體的 DSN 名稱、資料庫名稱、端點和連接埠。如需詳細資訊，請參閱[尋找您的 Amazon RDS for Db2 資料庫執行個體的端點](db2-finding-instance-endpoint.md)。

   ```
   db2cli writecfg add -dsn dsn_name -database database_name -host endpoint -port port -parameter "Authentication=SERVER_ENCRYPT"
   ```

1. 連線至 RDS for Db2 資料庫執行個體。在下列範例中，將 *master\$1username* 和 *dsn\$1name* 取代為主要使用者名稱和 DSN 名稱。

   ```
   ./clpplus -nw master_username@dsn_name
   ```

1. Java Shell 視窗隨即開啟。輸入 RDS for Db2 資料庫執行個體的主要密碼。
**注意**  
如果 Java Shell 視窗未開啟，請執行 `./clpplus -nw` 以使用相同的命令列視窗。

   ```
   Enter password: *********
   ```

   建立連線並產生類似下列範例的輸出：

   ```
   Database Connection Information :
   ---------------------------------
   Hostname = database-1.abcdefghij.us-east-1.rds.amazonaws.com
   Database server = DB2/LINUXX8664  SQL110590
   SQL authorization ID = admin
   Local database alias = DB2DB
   Port = 50000
   ```

1. 執行查詢並檢視結果。下列範例顯示選取您建立之資料庫的 SQL 陳述式。

   ```
   SQL > select current server from sysibm.dual;
   ```

   此命令會產生類似下列範例的輸出：

   ```
   1
       --------------------
       DB2DB
       SQL>
   ```

## 從 DB2 存放程序擷取 CLOB 資料
<a name="db2-connecting-ibm-clpplus-retrieve-clob-data"></a>

rdsadmin.db2pd\$1command 等預存程序會在 CLOB 資料欄中傳回結果，該資料最多可支援 2 GB 的資料。不過，DB2 CLP 會將 CLOB 輸出限制為 8 KB (8192 位元組），進而截斷超過此閾值的任何資料。若要擷取完整的輸出，請改用 CLPPLUS。

1. 取得任務 ID (task\$1id) 

   ```
   db2 "select task_id, task_type, database_name, lifecycle, varchar(bson_to_json(task_input_params), 500) as task_params,
   cast(task_output as varchar(500)) as task_output, CREATED_AT, LAST_UPDATED_AT from table(rdsadmin.get_task_status(null,null,null))"
   ```

1. 執行 CLPPLUS 命令

   取得 task\$1id 後，請從 Unix 提示字元執行下列命令 （以實際的數值任務 ID 取代 TASK\$1ID)：

   ```
   $ (echo "select task_output from table(rdsadmin.get_task_status(task_id,null,null));" ; echo "disconnect;" ; echo "exit;") | clpplus -nw -silent masteruser/MasterUserPassword@hostname:port_num/rdsadmin
   ```

# 使用 DBeaver 連線至 Amazon RDS for Db2 資料庫執行個體
<a name="db2-connecting-with-dbeaver"></a>

您可以使用第三方工具 (例如 DBeaver) 連線至 Amazon RDS for Db2 資料庫執行個體。若要下載此公用程式，請參閱 [DBeaver 社群](https://dbeaver.io/)。

若要連線至 RDS for Db2 資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找這些項目的相關資訊，請參閱 [尋找端點](db2-finding-instance-endpoint.md)。您也需要知道您在建立 RDS for Db2 資料庫執行個體時所定義的資料庫名稱、主要使用者名稱和主要密碼。如需尋找這些項目的詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

**使用 DBeaver 連線至 RDS for Db2 資料庫執行個體**

1. 啟動 **DBeaver**。

1. 選擇工具列中的**新連線**圖示，然後選擇 **Db2 for LUW**。  
![\[在 DBeaver 中列出引擎類型的選單。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dbeaver-add-connection.png)

1. 在**連線至資料庫**視窗中，提供 RDS for Db2 資料庫執行個體的資訊。

   1.  輸入下列資訊：
      + 針對**主機**，輸入資料庫執行個體的 DNS 名稱。
      + 在**連接埠**中，輸入資料庫執行個體的連接埠號碼。
      + 針對**資料庫**，輸入資料庫的名稱。
      + 針對 **Username (使用者名稱)**，輸入資料庫執行個體之資料庫管理員的名稱。
      + 針對**密碼**，輸入資料庫執行個體之資料庫管理員的密碼。

   1. 選取**儲存密碼**。

   1. 選擇**驅動程式設定**。  
![\[連接至資料庫視窗，其中包含填入 DBeaver 的各種連線設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dbeaver-connect-database.png)

1. 在**編輯驅動程式**視窗中，指定其他安全屬性。

   1. 選擇**驅動程式屬性**索引標籤。

   1. 新增兩個**使用者屬性**。

      1. 開啟內容 (按一下右鍵) 功能表，然後選擇**新增屬性**。

      1. 針對**屬性名稱**，新增 **encryptionAlgorithm**，然後選擇**確定**。

      1. 選取 **encryptionAlgorithm** 資料列後，選擇**值**欄並新增 **2**。

      1. 開啟內容 (按一下右鍵) 功能表，然後選擇**新增屬性**。

      1. 針對**屬性名稱**，新增 **securityMechanism**，然後選擇**確定**。

      1. 選取 **securityMechanism** 資料列後，選擇**值**欄並新增 **7**。

   1. 選擇**確定**。  
![\[在 DBeaver 的編輯驅動程式視窗中的驅動程式屬性索引標籤。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dbeaver-driver-properties-tab.png)

1. 在**連線至資料庫**視窗中，選擇**測試連線**。如果您並未在電腦上安裝 DB2 JBDC 驅動程式，則驅動程式會自動下載。

1. 選擇**確定**。

1. 選擇**完成**。

1. 在**資料庫導覽**索引標籤中，選擇資料庫的名稱。您現在可以探索物件。

您現在已準備好執行 SQL 命令。

**執行 SQL 命令並檢視結果**

1. 在頂端選單中，選擇 **SQL**。這會開啟 SQL 指令碼面板。

1. 在**指令碼**面板中，輸入 SQL 命令。

1. 若要執行命令，請選擇**執行 SQL 查詢**按鈕。

1. 在 SQL 結果面板中，檢視 SQL 查詢的結果。  
![\[視窗顯示如何執行 SQL 命令並在 DBeaver 中檢視結果。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dbeaver-sql-run-example.png)

# 使用 IBM Db2 Data Management Console 連線至 Amazon RDS for Db2 資料庫執行個體
<a name="db2-connecting-with-ibm-data-management-console"></a>

您可以使用 IBM Db2 Data Management Console 連線到 Amazon RDS for Db2 資料庫執行個體。IBM Db2 Data Management Console 可以管理及監控數個 RDS for Db2 資料庫執行個體。

**注意**  
您必須擁有與 RDS for Db2 資料庫執行個體位於相同 VPC 和安全群組的 Amazon EC2 Linux 或 Windows 電腦。VPC 和安全群組會透過內部網路來控制與資料庫執行個體的連線。

IBM Db2 Data Management Console 需要儲存庫 Db2 資料庫來存放中繼資料和效能指標，但無法自動為 RDS for Db2 建立儲存庫資料庫。相反地，您必須先建立儲存庫資料庫，才能監控一或多個 RDS for Db2 資料庫執行個體。然後，您可以使用 IBM Db2 Data Management Console 來安裝 IBM Db2 Data Management Console 並連線至 RDS for Db2 資料庫執行個體。

**Topics**
+ [步驟 1：建立儲存庫資料庫以監控資料庫執行個體](#db2-creating-repo-db-monitoring-dmc)
+ [步驟 2：安裝和設定 IBM Db2 Data Management Console](#db2-install-setup-dmc)
+ [步驟 3：設定儲存庫資料庫並連線至 RDS for Db2 資料庫執行個體](#db2-connecting-db-instances-with-dmc)
+ [使用 IBM Db2 Data Management Console](#db2-using-dmc)

## 步驟 1：建立儲存庫資料庫以監控資料庫執行個體
<a name="db2-creating-repo-db-monitoring-dmc"></a>

您可以使用現有適當大小的 RDS for Db2 資料庫執行個體做為 IBM Db2 Data Management Console 的儲存庫，以監控其他 RDS for Db2 資料庫執行個體。不過，由於管理員使用者沒有 `SYSCTRL` 授權，無法建立緩衝集區和資料表空間，因此使用 IBM Db2 Data Management Console 儲存庫建立來建立儲存庫資料庫會失敗。您必須改為建立儲存庫資料庫。此儲存庫資料庫會監控您的 RDS for Db2 資料庫執行個體。

您可以使用兩種不同的方式來建立儲存庫資料庫。您可以建立 RDS for Db2 資料庫，然後手動建立緩衝集區、使用者資料表空間和系統暫存資料表空間。或者，您可以建立單獨的 Amazon EC2 執行個體來託管 IBM Db2 Data Management Console 儲存庫資料庫。

**Topics**
+ [手動建立緩衝集區、使用者資料表空間和系統暫存資料表空間](#db2-manually-creating-dmc)
+ [建立 Amazon EC2 執行個體以託管 IBM Db2 Data Management Console 儲存庫](#db2-creating-ec2-dmc)

### 手動建立緩衝集區、使用者資料表空間和系統暫存資料表空間
<a name="db2-manually-creating-dmc"></a>

**建立緩衝集區、使用者資料表空間和系統暫存資料表空間**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password  
   ```

1. 建立 IBM Db2 Data Management Console 的緩衝集區。在下列範例中，將 *database\$1name* 取代為您為 IBM Db2 Data Management Console 建立的儲存庫名稱，以監控 RDS for Db2 資料庫執行個體。

   ```
   db2 "call rdsadmin.create_bufferpool('database_name', 
        'BP4CONSOLE', 1000, 'Y', 'Y', 32768)"
   ```

1. 建立 IBM Db2 Data Management Console 的使用者資料表空間。在下列範例中，將 *database\$1name* 取代為您為 IBM Db2 Data Management Console 建立的儲存庫名稱，以監控 RDS for Db2 資料庫執行個體。

   ```
   db2 "call rdsadmin.create_tablespace('database_name', 
        'TS4CONSOLE', 'BP4CONSOLE', 32768)"
   ```

1. 建立 IBM Db2 Data Management Console 的系統暫存資料表空間。在下列範例中，將 *database\$1name* 取代為您為 IBM Db2 Data Management Console 建立的儲存庫名稱，以監控 RDS for Db2 資料庫執行個體。

   ```
   db2 "call rdsadmin.create_tablespace('database_name',
       'TS4CONSOLE_TEMP', 'BP4CONSOLE', 32768, 0, 0, 'S')"
   ```

您現在可以安裝 IBM Db2 Data Management Console 了。如需關於設定和安裝的詳細資訊，請參閱 [步驟 2：安裝和設定 IBM Db2 Data Management Console](#db2-install-setup-dmc)。

### 建立 Amazon EC2 執行個體以託管 IBM Db2 Data Management Console 儲存庫
<a name="db2-creating-ec2-dmc"></a>

您可以建立個別的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體來託管 IBM Db2 Data Management Console 儲存庫。如需建立 Amazon EC2 執行個體的相關資訊，請參閱《Amazon EC2 使用者指南》**中的[教學課程：Amazon EC2 Linux 執行個體入門](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。

## 步驟 2：安裝和設定 IBM Db2 Data Management Console
<a name="db2-install-setup-dmc"></a>

建立緩衝集區、使用者資料表空間和系統暫存資料表空間之後，您就可以安裝和設定 IBM Db2 Data Management Console 了。

**重要**  
您必須擁有與 RDS for Db2 資料庫執行個體位於相同 VPC 和安全群組的 Amazon EC2 Linux 或 Windows 電腦。VPC 和安全群組會透過內部網路來控制與資料庫執行個體的連線。此外，您必須已建立 IBM Db2 Data Management Console 的[儲存庫資料庫](#db2-creating-repo-db-monitoring-dmc)。

**安裝與設定 IBM Db2 Data Management Console**

1. 從 IBM Support 網站上的 [IBM Db2 Data Management Console 3.1x 版](https://www.ibm.com/support/pages/ibm-db2-data-management-console-version-31x-releases-new-features-and-enhancements)下載 IBM Db2 Data Management Console。

1. 安裝 IBM Db2 Data Management Console。

1. 開啟 IBM Db2 Data Management Console 並使用 Amazon EC2 電腦的 IP 位址，以及您用於 HTTP 或 HTTPS 連線至 Amazon EC2 執行個體的連接埠號碼。例如，使用 `http://xx.xx.xx.xx:11080` 或 `https://xx.xx.xx.xx.11081`。將 `xx.xx.xx.xx` 取代為 Amazon EC2 電腦的 IP 位址。`11080` 和 `11081` 是 HTTP 和 HTTPS 連線的預設連接埠。

1. (選用) 如果您想要在 Amazon EC2 執行個體上使用連接埠 80 或 443，可以使用 Apache httpd 或 Nginx HTTP 伺服器將 IBM Db2 Data Management Console 連接埠代理至連接埠 80 或 443。如需詳細資訊，請參閱 [Apache HTTP 伺服器專案](https://httpd.apache.org)和 [nginx 網站](https://nginx.org/en/)。

   若要允許連線至 IBM Db2 Data Management Console，您必須編輯安全群組中的傳入規則。如果您使用代理，請變更 TCP/IP 連接埠 80 或 443，以重新導向至 IBM Db2 Data Management Console 連接埠。如果您未使用代理，請將 TCP/IP 連接埠 80 或 443 變更為預設連接埠 11080 (HTTP) 或 11081 (HTTPS)。

您現在可以登入 IBM Db2 Data Management Console 來設定儲存庫資料庫，並連線至 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[設定儲存庫資料庫並連線至資料庫執行個體](#db2-connecting-db-instances-with-dmc)。

## 步驟 3：設定儲存庫資料庫並連線至 RDS for Db2 資料庫執行個體
<a name="db2-connecting-db-instances-with-dmc"></a>

當您第一次連線到儲存庫資料庫時，IBM Db2 Data Management Console 會自動設定儲存庫。設定儲存庫資料庫之後，您即可將資料庫連線新增至 IBM Db2 Data Management Console。

若要連線至 RDS for Db2 資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找這些項目的相關資訊，請參閱 [尋找端點](db2-finding-instance-endpoint.md)。您也需要知道您在建立 RDS for Db2 資料庫執行個體時所定義的資料庫名稱、主要使用者名稱和主要密碼。如需尋找這些項目的詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。如果您是透過網際網路連線，請允許流量流向資料庫連接埠。如需詳細資訊，請參閱[建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。

**使用 IBM Db2 Data Management Console 連線至 RDS for Db2 資料庫執行個體**

1. 使用您在安裝期間設定的憑證登入 IBM Db2 Data Management Console。

1. 設定儲存庫。

   1. 在**連線和資料庫**區段中，為 RDS for Db2 資料庫執行個體輸入下列資訊：
      + 針對**主機**，輸入資料庫執行個體的 DNS 名稱。
      + 在**連接埠**中，輸入資料庫執行個體的連接埠號碼。
      + 針對**資料庫**，輸入資料庫的名稱。  
![\[IBM Db2 Data Management Console 中包含主機、連接埠和資料庫欄位的連線和資料庫區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-connection-database.png)

   1. 在**安全性和憑證**區段中，為 RDS for Db2 資料庫執行個體輸入下列資訊：
      + 針對**安全類型**，選擇**加密的使用者和密碼**。
      + 針對 **Username (使用者名稱)**，輸入資料庫執行個體之資料庫管理員的名稱。
      + 針對**密碼**，輸入資料庫執行個體之資料庫管理員的密碼。

   1. 選擇 **Test connection** (測試連線)。
**注意**  
如果連線失敗，請確認已透過安全群組中的傳入規則開啟資料庫連接埠。如需詳細資訊，請參閱[使用 Amazon RDS for Db2 的安全群組考量](db2-security-groups-considerations.md)。

      如果您未在 RDS for Db2 中[手動建立緩衝集區、使用者資料表空間和系統暫存資料表空間](#db2-manually-creating-dmc)，則可能會看到下列錯誤訊息：  
![\[沒有執行作業許可的相關錯誤訊息。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-error-message.png)

      請確定您已為 IBM Db2 Data Management Console 儲存庫建立緩衝資料表、資料表空間和物件，以監控 RDS for Db2 資料庫執行個體。或者，您可以使用 Amazon EC2 Db2 資料庫執行個體來託管 IBM Db2 Data Management Console 儲存庫，以監控 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[步驟 1：建立儲存庫資料庫以監控資料庫執行個體](#db2-creating-repo-db-monitoring-dmc)。

   1. 成功測試連線後，請選擇**下一步**。  
![\[IBM Db2 Data Management Console 中的安全和憑證區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-security-credential.png)

   如果 IBM Db2 Data Management Console 在 RDS for Db2 資料庫執行個體中找到緩衝集區、使用者資料表空間和系統暫存資料表空間，則 IBM Db2 Data Management Console 會自動設定儲存庫資料庫。如果您在 Amazon EC2 執行個體上使用 Db2 執行個體做為儲存庫資料庫，則 IBM Db2 Data Management Console 會自動建立緩衝集區和其他物件。

1. 在**設定統計資料事件監控選擇加入**視窗中，選擇**下一步**。

1. (選用) 新增連線。如果您想要使用不同的 RDS for Db2 資料庫執行個體進行管理和監控，請將連線新增至非儲存庫 RDS for Db2 資料庫執行個體。

   1. 在**連線和資料庫**區段中，為要用於管理和監控的 RDS for Db2 資料庫執行個體輸入下列資訊：
      + 針對**連線名稱**，輸入 Db2 資料庫識別符。
      + 針對**主機**，輸入資料庫執行個體的 DNS 名稱。
      + 在**連接埠**中，輸入資料庫執行個體的連接埠號碼。
      + 針對**資料庫**，輸入資料庫的名稱。  
![\[IBM Db2 Data Management Console 中包含主機、連接埠和資料庫欄位的新連線之連線和資料庫區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-new-connection-database.png)

   1. 在**安全與憑證******區段中，選取**啟用監控資料收集**。

   1. 為 RDS for Db2 資料庫執行個體輸入下列資訊：
      + 針對 **Username (使用者名稱)**，輸入資料庫執行個體之資料庫管理員的名稱。
      + 針對**密碼**，輸入資料庫執行個體之資料庫管理員的密碼。

   1. 選擇 **Test connection** (測試連線)。

   1. 成功測試連線後，請選擇**儲存**。  
![\[IBM Db2 Data Management Console 中新連線的安全與憑證區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-new-security-credential.png)

   新增連線後，隨即出現類似以下內容的視窗。此視窗表示您的資料庫已成功設定。  
![\[視窗表示資料庫已在 IBM Db2 Data Management Console 中成功設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-configuration-success.png)

1. 選擇**前往資料庫**。隨即出現類似以下內容的資料庫視窗。此視窗是顯示指標、狀態和連線的儀表板。  
![\[IBM Db2 Data Management Console 中的資料庫概觀視窗。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-database-view.png)

您現在可以開始使用 IBM Db2 Data Management Console。

## 使用 IBM Db2 Data Management Console
<a name="db2-using-dmc"></a>

您可以使用 IBM Db2 Data Management Console 來執行下列類型的任務：
+ 管理多個 RDS for Db2 資料庫執行個體。
+ 執行 SQL 命令。
+ 探索、建立或變更資料和資料庫物件。
+ 在 SQL 中建立 `EXPLAIN PLAN` 陳述式。
+ 調校查詢。

**執行 SQL 命令並檢視結果**

1. 在左側導覽列中，選擇 **SQL**。

1. 輸入 SQL 命令。

1. 選擇**全部執行**。

1. 若要檢視結果，請選擇**結果**索引標籤。

![\[資料庫視窗顯示如何執行 SQL 命令並在 IBM Db2 Data Management Console 中檢視結果。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ibm-dmc-sql-run-example.png)


# 使用 Amazon RDS for Db2 的安全群組考量
<a name="db2-security-groups-considerations"></a>

為了讓您連線至 Amazon RDS for Db2 資料庫執行個體，它必須與安全群組關聯，該群組包含必要的 IP 位址和網路組態。您的 RDS for Db2 資料庫執行個體可能會使用預設安全群組。如果在建立 RDS for Db2 資料庫執行個體時指派預設、非設定的安全群組，防火牆會阻止網際網路連線。如需建立新安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

建立新安全群組之後，您可以修改資料庫執行個體，讓它與該安全群組建立關聯。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

您可以使用 SSL 來加密對資料庫執行個體的連線，藉此增強安全性。如需詳細資訊，請參閱[使用 SSL/TLS 搭配 Amazon RDS for Db2 資料庫執行個體](Db2.Concepts.SSL.md)。

# 保護 Amazon RDS for Db2 資料庫執行個體連線
<a name="Db2.Concepts.RestrictedDBAPrivileges"></a>

Amazon RDS for Db2 支援改善 RDS for Db2 資料庫執行個體安全性的方法。

**Topics**
+ [使用 SSL/TLS 搭配 Amazon RDS for Db2 資料庫執行個體](Db2.Concepts.SSL.md)
+ [使用 Amazon RDS for Db2 的 Kerberos 身分驗證](db2-kerberos.md)

# 使用 SSL/TLS 搭配 Amazon RDS for Db2 資料庫執行個體
<a name="Db2.Concepts.SSL"></a>

SSL 是一種產業標準通訊協定，可保護用戶端與伺服器之間的網路連線。SSL 3.0 版之後的名稱已變更為 TLS，但我們通常仍會將通訊協定稱為 SSL。Amazon RDS 可支援在 Amazon RDS for Db2 資料庫執行個體上啟用 SSL 加密。使用 SSL/TLS，您可以加密應用程式用戶端與 RDS for Db2 資料庫執行個體之間的連接。所有 AWS 區域 RDS for Db2 都提供 SSL/TLS 支援。



在與資料庫執行個體相關聯的參數群組中新增 Db2 SSL 選項，就能對 RDS for Db2 資料庫執行個體啟用 SSL/TLS 加密。Amazon RDS 會使用第二個連接埠 (依 Db2 要求) 作為 SSL/TLS 連線用途。如此可讓資料庫執行個體與 Db2 用戶端之間同時進行純文字和 Db2 加密的通訊。例如，您可以使用連接埠搭配純文字通訊與 VPC 內的其他資源通訊，同時使用連接埠搭配 SSL 加密的通訊與 VPC 外部的資源通訊。

**Topics**
+ [建立 SSL/TLS 連線](#db2-creating-ssl-connection)
+ [連線至 Db2 資料庫伺服器](#db2-connecting-to-server-ssl)

## 建立 SSL/TLS 連線
<a name="db2-creating-ssl-connection"></a>

若要建立 SSL/TLS 連線，請選擇憑證授權單位 (CA)、下載所有 的憑證套件 AWS 區域，並將參數新增至自訂參數群組。

### 步驟 1：選擇 CA 並下載憑證
<a name="db2-creating-ssl-connection-prereq"></a>

選擇憑證認證機構 (CA)，並下載所有 AWS 區域的憑證套件。如需詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

### 步驟 2：更新自訂參數群組中的參數
<a name="db2-updating-parameters-ssl"></a>

**重要**  
如果您使用 RDS for Db2 的自帶授權 (BYOL) 模型，請修改您為 IBM Customer ID 和 IBM Site ID 建立的自訂參數群組。如果您使用不同的 RDS for Db2 授權模型，則請依照程序將參數新增至自訂參數群組。如需詳細資訊，請參閱[Amazon RDS for Db2 授權選項](db2-licensing.md)。

您無法修改 RDS for Db2 資料庫執行個體的預設參數群組。因此，您必須建立自訂參數群組、加以修改，然後將其連接至 RDS for Db2 資料庫執行個體。如需參數群組的詳細資訊，請參閱 [Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)。

 使用下表中的參數設定。


| 參數 | Value | 
| --- | --- | 
| DB2COMM | TCPIP,SSL 或 SSL | 
| SSL\$1SVCENAME | <any port number except the number used for the non-SSL port> | 

**更新自訂參數群組中的參數**

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 命令來建立自訂參數群組。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您要建立之參數群組的名稱。
   + `--db-parameter-group-family` – Db2 引擎版本和主要版本。有效值：`db2-se-11-5`、`db2-ae-11.5`。
   + `--description` – 此參數群組的描述。

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 命令所建立的自訂參數群組中的參數。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您所建立的參數群組之名稱。
   + `--parameters` – 參數名稱、值，以及參數更新套用方法的陣列。

   如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

1. 將參數群組與您的 RDS for Db2 資料庫執行個體建立關聯。如需詳細資訊，請參閱[將資料庫參數群組與 Amazon RDS 中的資料庫執行個體建立關聯](USER_WorkingWithParamGroups.Associating.md)。

## 連線至 Db2 資料庫伺服器
<a name="db2-connecting-to-server-ssl"></a>

連線至 Db2 資料庫伺服器的指示為特定語言。

------
#### [ Java ]

**使用 Java 連線至 Db2 資料庫伺服器**

1. 下載 JDBC 驅動程式。如需詳細資訊，請參閱 IBM 支援文件中的 [DB2 JDBC 驅動程式版本和下載](https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads)。

1. 建立包含下列內容的 Shell 指令碼檔案。此指令碼會將套件中的所有憑證新增至 Java KeyStore。
**重要**  
確認 `keytool` 存在於指令碼中的路徑上，以便指令碼可以找到它。如果您使用 Db2 用戶端，則可以在 `~sqlib/java/jdk64/jre/bin` 下找到 `keytool`。

   ```
   #!/bin/bash
   PEM_FILE=$1
   PASSWORD=$2
   KEYSTORE=$3
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cat $PEM_FILE |
       awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
       keytool -noprompt -import -trustcacerts -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD
   done
   ```

1. 若要執行 shell 指令碼，並使用憑證套件將 PEM 檔案匯入 Java KeyStore，請執行下列命令。將 *shell\$1file\$1name.sh* 取代為 shell 指令碼檔案的名稱，並將 *password* 取代為您 Java KeyStore 的密碼。

   ```
    ./shell_file_name.sh global-bundle.pem password truststore.jks
   ```

1. 若要連線至 Db2 伺服器，請執行下列命令。將範例中的下列預留位置取代為您的 RDS for Db2 資料庫執行個體資訊。
   + *ip\$1address* – 資料庫執行個體端點的 IP 位址。
   + *port* – SSL 連線的連接埠號碼。這可以是任何連接埠號碼，但用於非 SSL 連接埠的號碼除外。
   + *database\$1name* – 資料庫執行個體中資料庫的名稱。
   + *master\$1username* – 資料庫執行個體的主要使用者名稱。
   + *master\$1password* – 資料庫執行個體的主要密碼。

   ```
   export trustStorePassword=MyPassword
   java -cp ~/dsdriver/jdbc_sqlj_driver/linuxamd64/db2jcc4.jar \
   com.ibm.db2.jcc.DB2Jcc -url \
   "jdbc:db2://ip_address:port/database_name:\
   sslConnection=true;sslTrustStoreLocation=\
   ~/truststore.jks;\
   sslTrustStorePassword=${trustStorePassword};\
   sslVersion=TLSv1.2;\
   encryptionAlgorithm=2;\
   securityMechanism=7;" \
   -user master_username -password master_password
   ```

------
#### [ Node.js ]

**使用 Node.js 連線至 Db2 資料庫伺服器**

1. 安裝 **node-ibm\$1db** 驅動程式。如需詳細資訊，請參閱 IBM Db2 文件中的[在 Linux 和 UNIX 系統上安裝 node-ibm\$1db 驅動程式](https://www.ibm.com/docs/en/db2/11.5?topic=nodejs-installing-node-db-driver-linux-unix-systems)。

1. 根據下列內容建立 JavaScript 檔案。將範例中的下列預留位置取代為您的 RDS for Db2 資料庫執行個體資訊。
   + *ip\$1address* – 資料庫執行個體端點的 IP 位址。
   + *master\$1username* – 資料庫執行個體的主要使用者名稱。
   + *master\$1password* – 資料庫執行個體的主要密碼。
   + *database\$1name* – 資料庫執行個體中資料庫的名稱。
   + *port* – SSL 連線的連接埠號碼。這可以是任何連接埠號碼，但用於非 SSL 連接埠的號碼除外。

   ```
   var ibmdb = require("ibm_db");
   const hostname = "ip_address";
   const username = "master_username";
   const password = "master_password";
   const database = "database_name";
   const port = "port";
   const certPath = "/root/qa-bundle.pem";
   ibmdb.open("DRIVER={DB2};DATABASE=" + database + ";HOSTNAME=" + hostname + ";UID=" + username + ";PWD=" + password + ";PORT=" + port + ";PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=" + certPath + ";", function (err, conn){
    if (err) return console.log(err);
    conn.close(function () {
    console.log('done');
    });
   });
   ```

1. 若要執行 JavaScript 檔案，請執行下列命令。

   ```
   node ssl-test.js
   ```

------
#### [ Python ]

**使用 Python 連線至 Db2 資料庫伺服器**

1. 使用下列內容建立 Python 檔案。將範例中的下列預留位置取代為您的 RDS for Db2 資料庫執行個體資訊。
   + *port* – SSL 連線的連接埠號碼。這可以是任何連接埠號碼，但用於非 SSL 連接埠的號碼除外。
   + *master\$1username* – 資料庫執行個體的主要使用者名稱。
   + *master\$1password* – 資料庫執行個體的主要密碼。
   + *database\$1name* – 資料庫執行個體中資料庫的名稱。
   + *ip\$1address* – 資料庫執行個體端點的 IP 位址。

   ```
   import click
   import ibm_db
   import sys
   
   port = port;
   master_user_id = "master_username" # Master id used to create your DB instance
   master_password = "master_password" # Master password used to create your DB instance
   db_name = "database_name" # If not given "db-name'
   vpc_customer_private_ip = "ip_address" # Hosts end points - Customer private IP Addressicert_path = "/root/ssl/global-bundle.pem" # cert path
   
   @click.command()        
   @click.option("--path", help="certificate path")
   def db2_connect(path):
   
       try:
           conn = ibm_db.connect(f"DATABASE={db_name};HOSTNAME={vpc_customer_private_ip};PORT={port};
               PROTOCOL=TCPIP;UID={master_user_id};PWD={master_password};SECURITY=ssl;SSLServerCertificate={path};", "", "")
           try:
               ibm_db.exec_immediate(conn, 'create table tablename (a int);')
               print("Query executed successfully")
           except Exception as e:
               print(e)
           finally:
               ibm_db.close(conn)
               sys.exit(1)
       except Exception as ex:
           print("Trying to connect...")
   
   if __name__ == "__main__":
       db2_connect()
   ```

1. 建立下列 shell 指令碼，以執行您建立的 Python 檔案。將 *python\$1file\$1name.py* 取代為您 Python 指令碼檔案的名稱。

   ```
   #!/bin/bash
   PEM_FILE=$1
   # number of certs in the PEM file
   CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
   
   for N in $(seq 0 $(($CERTS - 1))); do
       ALIAS="${PEM_FILE%.*}-$N"
       cert=`cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }"`
       cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" > $ALIAS.pem
       python3 <python_file_name.py> --path $ALIAS.pem
       output=`echo $?`
       if [ $output == 1 ]; then
           break
       fi
   done
   ```

1. 若要使用憑證套件匯入 PEM 檔案並執行 shell 指令碼，請執行下列命令。將 *shell\$1file\$1name.sh* 取代為您 shell 指令碼檔案的名稱。

   ```
   ./shell_file_name.sh global-bundle.pem
   ```

------
#### [ Db2 CLP ]

**使用 Db2 CLP 連線至 Db2 資料庫伺服器**

1. 若要使用 Db2 CLP 連線到 Db2 執行個體，您需要可在 [ IBM Fix Central](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=Security+Systems&product=ibm/Tivoli/IBM+Global+Security+Kit&release=All&platform=All&function=fixId&fixids=8.0.*&source=fc) 下載的 GSKit。若要使用 Db2 CLP，您還需要 IBM Db2 用戶端，您可以從 IBM Support 中的[下載初始版本 11.5 用戶端和驅動程式](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)下載。

1. 建立金鑰存放區。

   ```
   gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
   ```

1. 將憑證套件匯入金鑰存放區。

   ```
   gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
   ```

1. 更新 Db2 執行個體組態。

   ```
   db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
   ```

1. 為節點和資料庫編製目錄。

   ```
   db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl
   
   db2 catalog database testdb as ssltest at node ssluse1
   ```

1. 連線至 資料庫。

   ```
   db2 connect to ssltest user username using password
   ```

------

# 使用 Amazon RDS for Db2 的 Kerberos 身分驗證
<a name="db2-kerberos"></a>

您可以使用 Kerberos 身分驗證，在使用者連線到您的 Amazon RDS for Db2 資料庫執行個體時對其進行身分驗證。在此組態中，您的資料庫執行個體可與 搭配使用 AWS Directory Service for Microsoft Active Directory，也稱為 AWS Managed Microsoft AD。您可以將 AWS Managed Microsoft AD 目錄的網域和其他資訊新增至 RDS for Db2 資料庫執行個體。當使用者使用加入信任網域的 RDS for Db2 資料庫執行個體進行身分驗證時，身分驗證請求會轉送到您建立的 AWS Managed Microsoft AD 目錄 Directory Service。

將您的所有登入資料保留在相同目錄可以節省您的時間和精力。透過這種方式，這樣您就有一個集中的位置來存放及管理多個資料庫執行個體的登入資料。使用目錄也可以改善您的整體安全性描述檔。

除此之外，您也可以從自己的內部部署 Microsoft Active Directory 存取登入資料。若要執行這項操作，請建立信任網域關聯，讓 AWS Managed Microsoft AD 目錄信任您的內部部署 Microsoft Active Directory。如此一來，使用者就可以透過在存取您內部部署網路的工作負載時相同的 Windows 單一登入 (SSO) 體驗，來存取 RDS for Db2 資料庫執行個體。

如需詳細資訊，請參閱《 *AWS Directory Service 管理指南*》中的[什麼是 Directory Service？](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)。

如需 Kerberos 身分驗證的相關資訊，請參閱下列主題：

**主題**
+ [設定 Amazon RDS for Db2 資料庫執行個體的 Kerberos 身分驗證](db2-kerberos-setting-up.md)
+ [使用 Kerberos 身分驗證連線至 Amazon RDS for Db2](db2-kerberos-connecting.md)

## 區域和版本可用性
<a name="db2-kerberos-setting-up.RegionVersionAvailability"></a>

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需有關 RDS for Db2 搭配 Kerberos 身分驗證的版本和區域可用性的詳細資訊，請參閱 [支援 Amazon RDS 中 Kerberos 身分驗證的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md)。

**注意**  
RDS for Db2 資料庫執行個體棄用的資料庫執行個體類別不支援 Kerberos 身分驗證。如需詳細資訊，請參閱[Amazon RDS for Db2 執行個體類別](Db2.Concepts.General.InstanceClasses.md)。

## RDS for Db2 資料庫執行個體的 Kerberos 身分驗證概觀
<a name="db2-kerberos-setting-up-overview"></a>

若要針對 RDS for Db2 資料庫執行個體設定 Kerberos 身分驗證，請完成下列一般步驟，稍後會有這方面的詳細說明：

1. 使用 AWS Managed Microsoft AD 建立 AWS Managed Microsoft AD 目錄。您可以使用 AWS 管理主控台、 AWS Command Line Interface (AWS CLI) 或 Directory Service 來建立目錄。如需詳細資訊，請參閱《 *AWS Directory Service 管理指南*》中的[建立 AWS Managed Microsoft AD 目錄](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)。

1. 建立使用 受管 IAM 政策 的 AWS Identity and Access Management (IAM) 角色`AmazonRDSDirectoryServiceAccess`。IAM 角色允許 Amazon RDS 對您的目錄進行呼叫。

   若要讓 IAM 角色允許存取，必須在適用於 AWS 區域 的正確 中啟用 AWS Security Token Service (AWS STS) 端點 AWS 帳戶。根據預設， AWS STS 端點處於作用中狀態 AWS 區域，而且您可以使用它們，而不需要任何進一步的動作。如需詳細資訊，請參閱《*IAM 使用者指南*》中的在 [AWS STS 中啟用和停用 AWS 區域](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) 。

1. 使用 AWS 管理主控台、 AWS CLI或 RDS API 搭配下列其中一種方法，建立或修改 RDS for Db2 資料庫執行個體：
   + 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令或 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 作業來建立新的 RDS for Db2 資料庫執行個體。如需說明，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令，或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 作業，修改現有的 RDS for Db2 資料庫執行個體。如需說明，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
   + 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API 作業，從資料庫快照還原 RDS for Db2 資料庫執行個體。如需說明，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。
   + 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API 作業，將 RDS for Db2 資料庫執行個體還原至時間點。如需說明，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

   您可以在與目錄相同的 Amazon Virtual Private Cloud (VPC) 或不同的 AWS 帳戶 或 VPC 中找到資料庫執行個體。當您建立或修改 RDS for Db2 資料庫執行個體時，請執行以下作業：
   + 請提供您建立目錄時產生的網域識別符 (`d-*` 識別符)。
   + 請提供所建立的 IAM 角色名稱。
   + 確認資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。

1. 設定您的 Db2 用戶端，並確認流量可以在用戶端主機與 Directory Service 下列連接埠之間流動：
   + TCP/UDP 連接埠 53 – DNS
   + TCP 88 – Kerberos 身分驗證
   + TCP 389 – LDAP
   + TCP 464 – Kerberos 身分驗證

## 管理網域中的資料庫執行個體
<a name="db2-kerberos-managing-domain"></a>

您可以使用 AWS 管理主控台、 AWS CLI或 RDS API 來管理資料庫執行個體及其與 的關係Microsoft Active Directory。例如，您可以使 Active Directory 產生關聯，以啟用 Kerberos 身分驗證。您也可以移除 Active Directory 的關聯，以停用 Kerberos 身分驗證。您也可以將要由某個 Active Directory 於外部進行身分識別的資料庫執行個體移至另一個 Microsoft Active Directory。

例如，您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，以執行下列動作：
+ 透過為 `--domain` 選項指定目前成員資格的目錄 ID，重新嘗試啟用失敗成員資格的 Kerberos 身分驗證。
+ 透過為 `--domain` 選項指定 `none`，在資料庫執行個體上停用 Kerberos 身分驗證。
+ 透過為 `--domain` 選項指定新網域的網域識別符，將資料庫執行個體從某個網域移至另一個網域。

### 了解網域成員資格
<a name="db2-kerberos-managing-domain.understanding"></a>

在您建立或修改資料庫執行個體之後，該執行個體會成為網域的成員。您可以在主控台中或執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令，來檢視網域成員資格狀態。資料庫執行個體的狀態可以是下列其中一個：
+ `kerberos-enabled` – 資料庫執行個體已啟用 Kerberos 身分驗證。
+ `enabling-kerberos` – AWS 正在在此資料庫執行個體上啟用Kerberos身分驗證。
+ `pending-enable-kerberos` – 在此資料庫執行個體上擱置 Kerberos 身分驗證的啟用。
+ `pending-maintenance-enable-kerberos` – AWS 將在下一個排定的維護時段嘗試在資料庫執行個體上啟用Kerberos身分驗證。
+ `pending-disable-kerberos` – 在此資料庫執行個體上擱置 Kerberos 身分驗證的停用。
+ `pending-maintenance-disable-kerberos` – AWS 將在下一個排定的維護時段嘗試停用資料庫執行個體上的Kerberos身分驗證。
+ `enable-kerberos-failed` – 發生組態問題，導致 AWS 無法在資料庫執行個體上啟用 Kerberos 身分驗證。請更正問題，然後重新發出命令來修改資料庫執行個體。
+ `disabling-kerberos` – AWS 正在停用此資料庫執行個體的Kerberos身分驗證。

由於網路連線問題或 IAM 角色不正確，請求啟用 Kerberos 身分驗證可能失敗。在某些情況下，當您建立或修改資料庫執行個體時，嘗試啟用 Kerberos 身分驗證可能會失敗。若發生這個情況，請驗證您使用正確的 IAM 角色，然後修改要加入網域的資料庫執行個體。

# 設定 Amazon RDS for Db2 資料庫執行個體的 Kerberos 身分驗證
<a name="db2-kerberos-setting-up"></a>

您可以使用 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 來設定 RDS for Db2 資料庫執行個體的Kerberos身分驗證。若要設定 Kerberos 身分驗證，請依照下列步驟進行：

**Topics**
+ [步驟 1：使用 建立目錄 AWS Managed Microsoft AD](#db2-kerberos-setting-up.create-directory)
+ [步驟 2：建立信任](#db2-kerberos-setting-up-create-forest-trust)
+ [步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service](#db2-kerberos-setting-up-create-iam-role)
+ [步驟 4：建立和設定使用者](#db2-kerberos-setting-up.create-users)
+ [步驟 5：在 中建立 Db2 管理員群組的 RDS AWS Managed Microsoft AD](#db2-kerberos-setting-up-vpc-peering)
+ [步驟 6：修改資料庫參數](#db2-kerberos-setting-up-modify-db-parameter)
+ [步驟 7：建立或修改 RDS for Db2 資料庫執行個體](#db2-kerberos-setting-up-create-modify)
+ [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](#db2-kerberos-setting-up-retrieve-ad-group-sid)
+ [步驟 9：將 SID 到 GroupName 映射新增至您的 RDS for Db2 資料庫執行個體](#db2-kerberos-setting-up-add-sid-group-mapping)
+ [步驟 10：設定 Db2 用戶端](#db2-kerberos-setting-up-create-logins)

## 步驟 1：使用 建立目錄 AWS Managed Microsoft AD
<a name="db2-kerberos-setting-up.create-directory"></a>

Directory Service 在 Active Directory中建立完全受管的 AWS 雲端。當您建立 AWS Managed Microsoft AD 目錄時， 會為您 Directory Service 建立兩個網域控制站和 DNS 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援可協助確保即使失敗，仍能存取您的目錄。

 當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 執行下列任務：
+ 在 VPC 中設定 Active Directory。
+ 建立含有使用者名稱 `Admin` 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
**重要**  
請務必儲存此密碼。 Directory Service 不會儲存此密碼，而且無法擷取或重設。
+ 建立目錄控制器的安全群組。安全群組必須允許與 RDS for Db2 資料庫執行個體進行通訊。

啟動時 AWS Directory Service for Microsoft Active Directory， AWS 會建立組織單位 (OU)，其中包含目錄的所有物件。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱，位於根網域中。網域根由 擁有和管理 AWS。

使用 AWS Managed Microsoft AD 目錄建立`Admin`的帳戶具有 OU 最常見管理活動的許可：
+ 建立、更新或刪除使用者。
+ 將資源 (例如檔案或列印伺服器) 新增至您的網域，然後對您 OU 中的使用者指派這些資源的許可。
+ 建立額外的 OU 和容器。
+ 委派授權。
+ 從 Active Directory 資源回收筒還原已刪除的物件。
+ 在 Directory Service上執行 Windows PowerShell 的 Active Directory 和網域名稱服務 (DNS) 模組。

`Admin` 帳戶也有權執行下列全網域活動：
+ 管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站)。
+ 檢視 DNS 事件日誌。
+ 檢視安全事件日誌。

**使用 建立目錄 AWS Managed Microsoft AD**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/) 開啟 Directory Service 主控台。

1. 選擇**設定目錄**。

1. 選擇 **AWS Managed Microsoft AD**。 AWS Managed Microsoft AD 是目前支援與 Amazon RDS 搭配使用的唯一選項。

1. 選擇******下一步******。

1. 在 ******Enter directory information (輸入目錄資訊)****** 頁面上，提供下列資訊：
   + **版本** – 選擇滿足您需求的版本。
   + **目錄 DNS 名稱**** **– 目錄的完全合格名稱，例如 `corp.example.com`。
   + **目錄 NetBIOS 名稱**** **– 目錄的選用簡短名稱，例如 `CORP`。
   + **目錄描述** – 目錄的選用描述。
   + **管理員密碼**** **– 目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 `Admin` 與這組密碼的管理者帳戶。

     目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫，長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類：
     + 小寫字母 (a–z) 
     + 大寫字母 (A–Z) 
     + 數字 (0–9) 
     + 非英數字元 (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/) 
     + 確認密碼 – 重新輸入管理員密碼。
**重要**  
請確定您儲存此密碼。 Directory Service 不會儲存此密碼，而且無法擷取或重設。

1. 選擇**下一步**。

1. 在 **Choose VPC and subnets (選擇 VPC 和子網路)** 頁面上，提供下列資訊：
   + **VPC** – 選擇目錄的 VPC。您可在此相同 VPC 或不同 VPC 中建立 RDS for Db2 資料庫執行個體。
   + **子網路** – 選擇目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

1. 選擇 **Next (下一步)**。

1. 檢閱目錄資訊。如果需要變更，請選擇 **Previous (上一步)**，然後進行變更。若資訊無誤，請選擇 **Create directory (建立目錄)**。  
![\[在 Directory Service 主控台中建立目錄時的檢閱和建立視窗。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-create-ADS-directory.png)

建立目錄需要幾分鐘的時間。成功建立時，**Status (狀態)** 值會變更為 **Active (作用中)**。

若要查看目錄的相關資訊，請選擇**目錄 ID** 底下的目錄 ID。請記下 **Directory ID (目錄 ID)** 值，建立或修改 RDS for Db2 資料庫執行個體時需要此值。

![\[Directory Service 主控台中具有目錄 ID 的目錄詳細資訊區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-ADS-directory-details.png)


## 步驟 2：建立信任
<a name="db2-kerberos-setting-up-create-forest-trust"></a>

如果您計劃僅使用 AWS Managed Microsoft AD，請跳至 [步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service](#db2-kerberos-setting-up-create-iam-role)。

若要使用自我管理 Active Directory 來啟用 Kerberos 身分驗證，您必須在自我管理 Active Directory 與 之間建立樹系信任關係。樹系信任是 Microsoft AD 與自我管理 Active Directory 與上一個步驟中 AWS Managed Microsoft AD 建立的 之間的信任關係。信任也可以是雙向，其中兩個 Active Directory 互相信任。如需使用 設定樹系信任的詳細資訊 Directory Service，請參閱《 *AWS Directory Service 管理指南*》中的[何時建立信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html)。

## 步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service
<a name="db2-kerberos-setting-up-create-iam-role"></a>

若要讓 Amazon RDS Directory Service 為您呼叫 ，您需要使用 受管 AWS 帳戶 IAM 政策 的 IAM 角色`AmazonRDSDirectoryServiceAccess`。此角色允許 Amazon RDS 呼叫 Directory Service。

當您使用 建立資料庫執行個體， AWS 管理主控台 且主控台使用者帳戶具有 `iam:CreateRole`許可時，主控台會自動建立所需的 IAM 角色。在此情況下，角色名稱為 `rds-directoryservice-kerberos-access-role`。否則，您必須手動建立 IAM 角色。當您建立此 IAM 角色時，請選擇 `Directory Service`，然後將 AWS 受管政策連接至`AmazonRDSDirectoryServiceAccess`該角色。

如需為服務建立 IAM 角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**注意**  
用於 Windows Authentication for RDS for Microsoft SQL Server 的 IAM 角色不可用於 RDS for Db2。

作為使用 `AmazonRDSDirectoryServiceAccess` 受管政策的替代方案，您可以建立具有必要許可的政策。在此情況下，IAM 角色必須有以下 IAM 信任政策：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

此角色也須具有下列 IAM 角色政策：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 步驟 4：建立和設定使用者
<a name="db2-kerberos-setting-up.create-users"></a>

您可以使用 Active Directory Users and Computers 工具來建立使用者。這是 Active Directory Domain Services 和 Active Directory Lightweight Directory Services 工具之一。如需詳細資訊，請參閱 Microsoft 文件中的[將使用者和電腦新增至 Active Directory 網域](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain)。在此情況下，使用者是個人或其他實體，例如其電腦屬於網域，而其身分在目錄中維護。

若要在 Directory Service 目錄中建立使用者，您必須連線到以 Windows為基礎的 Amazon EC2 執行個體，該執行個體是 Directory Service 目錄的成員。同時，您必須以具有建立使用者之許可的使用者身分來登入。如需詳細資訊，請參閱《AWS Directory Service 管理指南》**中的[建立使用者](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html)。

## 步驟 5：在 中建立 Db2 管理員群組的 RDS AWS Managed Microsoft AD
<a name="db2-kerberos-setting-up-vpc-peering"></a>

RDS for Db2 不支援主要使用者或兩個 Amazon RDS 預留使用者 `rdsdb` 和 `rdsadmin` 的 Kerberos 身分驗證。相反地，您需要建立名為 `masterdba` 的新群組 AWS Managed Microsoft AD。如需詳細資訊，請參閱 Microsoft 文件中的[在 Active Directory 中建立群組帳戶](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/create-a-group-account-in-active-directory)。您新增至此群組的任何使用者都將具有主要使用者權限。

啟用 Kerberos 身分驗證後，主要使用者會失去 `masterdba` 角色。因此，除非您停用 Kerberos 身分驗證，否則主要使用者將無法存取執行個體本機使用者群組成員資格。若要繼續使用具有密碼登入的主要使用者，請在 AWS Managed Microsoft AD 上建立與主要使用者同名的使用者。然後，將該使用者新增至群組 `masterdba`。

## 步驟 6：修改資料庫參數
<a name="db2-kerberos-setting-up-modify-db-parameter"></a>

如果您打算 AWS Managed Microsoft AD 僅使用 ，請跳至 [步驟 7：建立或修改 RDS for Db2 資料庫執行個體步驟 7：建立或修改資料庫執行個體](#db2-kerberos-setting-up-create-modify)。

若要使用自我管理 Active Directory 來啟用 Kerberos 身分驗證，您必須在參數群組中將參數 `rds.active_directory_configuration` 設定為 `AWS_MANAGED_AD_WITH_TRUST`。根據預設，此參數設定為 `AWS_MANAGED_AD` ，僅適用於 AWS Managed Microsoft AD。

如需修改資料庫參數的相關資訊，請參閱 [修改參數群組中的參數](db2-supported-parameters.md#db2-modifying-parameter-group-parameters)。

## 步驟 7：建立或修改 RDS for Db2 資料庫執行個體
<a name="db2-kerberos-setting-up-create-modify"></a>

建立或修改要搭配您目錄使用的 RDS for Db2 資料庫執行個體。您可以使用 AWS 管理主控台、 AWS CLI或 RDS API，將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做：
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 作業來建立新的 RDS for Db2 資料庫執行個體。如需說明，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令，或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 作業，修改現有的 RDS for Db2 資料庫執行個體。如需說明，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API 作業，從資料庫快照還原 RDS for Db2 資料庫執行個體。如需說明，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API 作業，將 RDS for Db2 資料庫執行個體還原至時間點。如需說明，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

僅有 VPC 中的 RDS for Db2 資料庫執行個體支援 Kerberos 身分驗證。資料庫執行個體可在與目錄相同的 VPC 中，或在不同 VPC 中。資料庫執行個體必須使用允許目錄 VPC 內傳入和傳出的安全群組，如此資料庫執行個體才能與目錄通訊。

### 主控台
<a name="db2-kerberos-setting-up-create-modify-console"></a>

使用主控台建立、修改或還原資料庫執行個體時，請在**資料庫身分驗證**區段中選擇**密碼和 Kerberos 身分驗證**。然後選擇 **Browse Directory** (瀏覽目錄)。選取目錄或選擇**建立新目錄**以使用 Directory Service。

![\[在 Amazon RDS 主控台中選取含有密碼和 Kerberos 身分驗證的資料庫身分驗證區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-database-authentication-directory.png)


### AWS CLI
<a name="db2-kerberos-setting-up-create-modify-cli"></a>

當您使用 時 AWS CLI，資料庫執行個體需要下列參數才能使用您建立的目錄：
+ 針對 `--domain` 參數，使用您建立目錄時產生的網域識別符 ("`d-*`" 識別符)。
+ 針對 `--domain-iam-role-name` 參數，使用您建立的規則，其會使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess`。

下列範例會修改資料庫執行個體來使用目錄。將範例中的以下預留位置取代為自訂值：
+ *db\$1instance\$1name* – RDS for Db2 資料庫執行個體的名稱。
+ *directory\$1id* – 您所建立 AWS Directory Service for Microsoft Active Directory 目錄的 ID。
+ *role\$1name* – 您所建立 IAM 角色的名稱。

```
aws rds modify-db-instance --db-instance-identifier db_instance_name --domain d-directory_id --domain-iam-role-name role_name 
```

**重要**  
如果您修改資料庫執行個體，以啟用 Kerberos 身分驗證，請在進行變更後重新啟動資料庫執行個體。

## 步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID
<a name="db2-kerberos-setting-up-retrieve-ad-group-sid"></a>

安全 ID (SID) 可唯一識別安全主體或安全群組。在 Active Directory 中建立安全群組或帳戶時，Active Directory 會將 SID 指派給群組。若要從 Active Directory 擷取 AD 安全群組 SID，請在屬於 Active Directory 網域的 Windows 用戶端機器中使用 `Get-ADGroup` cmdlet。`Identity` 參數會指定您要使用 SID 的 Active Directory 群組名稱。

下列範例會傳回 Active Directory 群組 `adgroup1` 的 SID。

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID

             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

您必須為所有與資料庫相關的群組產生此映射。

## 步驟 9：將 SID 到 GroupName 映射新增至您的 RDS for Db2 資料庫執行個體
<a name="db2-kerberos-setting-up-add-sid-group-mapping"></a>

您需要將上一個步驟中建立的 SID 到 GroupName 映射新增至 RDS for Db2 資料庫執行個體。對於每個映射，請呼叫下列預存程序。將 *SID* 和 *group\$1name* 取代為您自己的資訊。

```
db2 connect to rdsadmin
db2 "call rdsadmin.set_sid_group_mapping(?, 'SID','group_name')"
```

如需詳細資訊，請參閱[rdsadmin.set\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping)。

如需檢查任務狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## 步驟 10：設定 Db2 用戶端
<a name="db2-kerberos-setting-up-create-logins"></a>

**設定 Db2 用戶端**

1. 建立可指向網域的 **/etc/krb5.conf** 檔案 (或同等檔案)。
**注意**  
對於 Windows 作業系統，建立 **C:\$1windows\$1krb5.ini** 檔案。

1. 確認流量可以在用戶端主機與 之間流動 Directory Service。請使用 Netcat 等網路公用程式檢查以下各項任務：

   1. 確認透過 DNS 傳送至連接埠 53 的流量。

   1. 確認透過 TCP/UDP 傳送至連接埠 53 和 Kerberos 的流量，其中包括用於 Directory Service的連接埠 88 和 464。

1. 確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。您可以使用 `db2` 命令來連線及存取資料庫。

下列範例是 的 /etc/krb5.conf 檔案內容 AWS Managed Microsoft AD：

```
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = example.com
admin_server = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
```

# 使用 Kerberos 身分驗證連線至 Amazon RDS for Db2
<a name="db2-kerberos-connecting"></a>

使用下列程序，透過 Kerberos 身分驗證連線至 Amazon RDS for Db2 資料庫執行個體。

**使用 Kerberos 身分驗證連線至 RDS for Db2**

1. 畫面出現命令提示時，執行下列 命令。在下列範例中，將 *username* 取代為您的 Microsoft Active Directory 使用者名稱。

   ```
   kinit username
   ```

1. 如果 RDS for Db2 資料庫執行個體是使用可公開存取的 VPC，請將資料庫執行個體端點的 IP 位址放入 Amazon EC2 用戶端上的 `/etc/hosts` 檔案。下列命令會取得 IP 位址，然後將該位址放入 `/etc/hosts` 檔案。

   ```
   % dig +short Db2-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo "34.210.197.118  Db2-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

1. 使用下列命令來登入與 Active Directory 相關聯的 RDS for Db2 資料庫執行個體。將 *database\$1name* 取代為 RDS for Db2 資料庫的名稱。

   ```
   db2 connect to database_name
   ```

# 管理您的 Amazon RDS for Db2 資料庫執行個體
<a name="db2-administering-db-instance"></a>

本主題涵蓋使用 Amazon RDS for Db2 資料庫執行個體執行的一般管理任務。對於所有 Amazon RDS 資料庫執行個體，某些工作是相同的。其他任務是 RDS for Db2 特定的。

以下是所有 RDS 資料庫常見的任務。也有特定於 RDS for Db2 的任務，例如使用標準 SQL 用戶端連線至 RDS for Db2 資料庫。


| 任務區域 | 相關文件 | 
| --- | --- | 
|  **執行個體類別、儲存體和 PIOPS** 如果您要建立生產執行個體，請了解執行個體類別、儲存體類型和佈建 IOPS 在 Amazon RDS 中的運作方式。  |  [ 資料庫執行個體類別](Concepts.DBInstanceClass.md) [Amazon RDS 儲存類型](CHAP_Storage.md#Concepts.Storage)  | 
|  **異地同步備份部署** 生產資料庫執行個體應該使用多個可用區部署。「異地同步備份部署」可提高資料庫執行個體的可用性、資料耐用性和容錯能力。  |  [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)  | 
|  **Amazon VPC** 如果您的 AWS 帳戶 具有預設虛擬私有雲端 (VPC)，則會在預設 VPC 內自動建立資料庫執行個體。如果您的帳戶沒有預設的 VPC，而您想要 VPC 中有該資料庫執行個體，則必須在建立資料庫執行個體之前，先建立 VPC 和子網路群組。  |  [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **安全群組** 根據預設，資料庫執行個體會使用防火牆來防止存取。確定您以正確的 IP 地址和網路組態建立安全群組，來存取資料庫執行個體。  |  [使用安全群組控制存取](Overview.RDSSecurityGroups.md)  | 
|  **參數群組** 由於 RDS for Db2 資料庫執行個體需要您新增 `rds.ibm_customer_id` 和 `rds.ibm_site_id` 參數，因此在建立資料庫執行個體之前，請先建立參數群組。如果您的資料庫執行個體要求其他特定資料庫參數，則建立資料庫執行個體之前，也請先將這些參數新增至參數群組。  |  [將 IBM ID 新增至 RDS for Db2 資料庫執行個體的參數群組](db2-licensing.md#db2-licensing-options-byol-adding-ids) [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)  | 
|  **選項群組** 如果您的資料庫執行個體要求特定資料庫選項，則在建立資料庫執行個體之前，須先建立選項群組。  |  [Amazon RDS for Db2 資料庫執行個體的選項](Db2.Options.md)  | 
|  **連線到您的資料庫執行個體** 建立安全群組並與資料庫執行個體建立關聯後，您可以使用任何標準 SQL 用戶端應用程式 (例如 IBM Db2 CLP) 來連線至資料庫執行個體。  |  [連線至您的 Db2 資料庫執行個體](USER_ConnectToDb2DBInstance.md)  | 
|  **備份與還原** 您可以設定資料庫執行個體以進行自動儲存體備份，或取得手動儲存體快照，然後從備份或快照還原執行個體。  | [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md) | 
|  **監控** 您可以使用 IBM Db2 Data Management Console 來監控 RDS for Db2 資料庫執行個體。 您也可以利用 CloudWatch Amazon RDS 指標、事件和增強型監控，進而監控 RDS for Db2 資料庫執行個體。  |  [使用 IBM Db2 Data Management Console 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-ibm-data-management-console.md) [在 Amazon RDS 主控台中檢視指標](USER_Monitoring.md) [檢視 Amazon RDS 事件](USER_ListEvents.md) [使用增強型監控來監控作業系統指標](USER_Monitoring.OS.md)  | 
|  **日誌檔** 您可以存取 RDS for Db2 資料庫執行個體的日誌檔案。  |  [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)  | 

**Topics**
+ [執行 Amazon RDS for Db2 資料庫執行個體的常見系統任務](db2-performing-common-system-tasks-db-instances.md)
+ [執行 Amazon RDS for Db2 資料庫執行個體的常見資料庫任務](db2-performing-common-database-tasks-db-instances.md)

# 執行 Amazon RDS for Db2 資料庫執行個體的常見系統任務
<a name="db2-performing-common-system-tasks-db-instances"></a>

您可以在執行 Db2 的 Amazon RDS 執行個體上執行與系統相關的常見資料庫管理員任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權，而且會將存取權限制在某些需要進階權限的系統程序和資料表。

如需授予及撤銷權限以及連接至 RDS for Db2 遠端資料庫的相關資訊，請參閱下列主題。

**主題**
+ [授予及撤銷 RDS for Db2 的權限](db2-granting-revoking-privileges.md)
+ [連接至遠端 RDS for Db2 資料庫執行個體](db2-attaching-to-remote.md)

## 建立自訂資料庫端點
<a name="db2-creating-custom-database-endpoint"></a>

當您遷移至 Amazon RDS for Db2 時，可以使用自訂資料庫端點 URL 將應用程式的變更降至最低。例如，如果您使用 `db2.example.com` 做為目前的 DNS 記錄，則可將其新增至 Amazon Route 53。在 Route 53 中，您可以使用私有託管區域，將目前的 DNS 資料庫端點映射至 RDS for Db2 資料庫端點。若要新增 Amazon RDS 資料庫端點的自訂 `A` 或 `CNAME` 記錄，請參閱《Amazon Route 53 開發人員指南》**中的[使用 Amazon Route 53 註冊及管理網域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html)。

**注意**  
如果您無法將網域轉移到 Route 53，可以使用 DNS 供應商為 RDS for Db2 資料庫端點 URL 建立 `CNAME` 記錄。請參閱您的 DNS 供應商文件。

# 授予及撤銷 RDS for Db2 的權限
<a name="db2-granting-revoking-privileges"></a>

使用者可透過連接到資料庫之群組的成員資格來存取資料庫。

使用下列程序來授予及撤銷許可，以控制對資料庫的存取。

這些程序使用本機電腦上執行的 IBM Db2 CLP 來連線至 RDS for Db2 資料庫執行個體。請務必為 TCPIP 節點和資料庫編製目錄，以連線至在本機電腦上執行的 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[使用 IBM Db2 CLP 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-clp-client.md)。

**Topics**
+ [授予使用者存取資料庫的權限](#db2-granting-user-access)
+ [變更使用者的密碼](#db2-changing-user-password)
+ [將群組新增至使用者](#db2-adding-group-to-user)
+ [從使用者移除群組](#db2-removing-groups-from-user)
+ [移除使用者](#db2-removing-user)
+ [列出使用者](#db2-listing-users-database)
+ [建立角色](#db2-creating-role)
+ [授予角色](#db2-granting-role)
+ [撤銷角色](#db2-revoking-role)
+ [捨棄角色](#db2-dropping-role)
+ [授予資料庫授權](#db2-granting-dbadmin-auth)
+ [撤銷資料庫授權](#db2-revoking-dbadmin-auth)

## 授予使用者存取資料庫的權限
<a name="db2-granting-user-access"></a>

**授予使用者存取資料庫的權限**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

   此命令會產生類似下列範例的輸出：

   ```
   Database Connection Information
       
   Database server        = DB2/LINUXX8664 11.5.8.0
   SQL authorization ID   = ADMIN
   Local database alias   = RDSADMIN
   ```

1. 呼叫 `rdsadmin.add_user` 以將使用者新增至您的授權清單。如需詳細資訊，請參閱[rdsadmin.add\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user)。

   ```
   db2 "call rdsadmin.add_user(
       'username',
       'password',
       'group_name,group_name')"
   ```

1. (選用) 呼叫 `rdsadmin.add_groups` 以將其他群組新增至使用者。如需詳細資訊，請參閱[rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups)。

   ```
   db2 "call rdsadmin.add_groups(
       'username',
       'group_name,group_name')"
   ```

1. 確認使用者可用的授權單位。在下列範例中，將 *rds\$1database\$1alias*、*master\$1user* 和 *master\$1password* 取代為您自己的資訊。此外，將 *username* 取代為使用者的使用者名稱。

   ```
   db2 terminate
   db2 connect to rds_database_alias user master_user using master_password
   db2 "SELECT SUBSTR(AUTHORITY,1,20) AUTHORITY, D_USER, D_GROUP, D_PUBLIC
          FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('username', 'U') ) AS T
          ORDER BY AUTHORITY"
   ```

   此命令會產生類似下列範例的輸出：

   ```
   AUTHORITY            D_USER D_GROUP D_PUBLIC
   -------------------- ------ ------- --------
   ACCESSCTRL           N      N       N
   BINDADD              N      N       N
   CONNECT              N      N       N
   CREATETAB            N      N       N
   CREATE_EXTERNAL_ROUT N      N       N
   CREATE_NOT_FENCED_RO N      N       N
   CREATE_SECURE_OBJECT N      N       N
   DATAACCESS           N      N       N
   DBADM                N      N       N
   EXPLAIN              N      N       N
   IMPLICIT_SCHEMA      N      N       N
   LOAD                 N      N       N
   QUIESCE_CONNECT      N      N       N
   SECADM               N      N       N
   SQLADM               N      N       N
   SYSADM               *      N       *
   SYSCTRL              *      N       *
   SYSMAINT             *      N       *
   SYSMON               *      N       *
   WLMADM               N      N       N
   ```

1. 將 RDS for Db2 角色 `ROLE_NULLID_PACKAGES`、`ROLE_TABLESPACES` 和 `ROLE_PROCEDURES` 授予您新增使用者的目標群組。如需詳細資訊，請參閱[Amazon RDS for Db2 預設角色](db2-default-roles.md)。
**注意**  
我們會在 `RESTRICTIVE` 模式中建立 RDS for Db2 資料庫執行個體。因此，RDS for Db2 角色 `ROLE_NULLID_PACKAGES`、`ROLE_TABLESPACES` 和 `ROLE_PROCEDURES` 會為 IBM Db2 CLP 和 Dynamic SQL 授予 `NULLID` 套件的執行權限。這些角色也會授予資料表空間的使用者權限。

   1. 連線至 Db2 資料庫。在下列範例中，將 *database\$1name*、*master\$1user* 和 *master\$1password* 取代為您自己的資訊。

      ```
      db2 connect to database_name user master_user using master_password
      ```

   1. 將角色 `ROLE_NULLED_PACKAGES` 授予群組。在下列範例中，將 *group\$1name* 取代為您要新增角色的目標群組之名稱。

      ```
      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
      ```

   1. 將角色 `ROLE_TABLESPACES` 授予相同的群組。在下列範例中，將 *group\$1name* 取代為您要新增角色的目標群組之名稱。

      ```
      db2 "grant role ROLE_TABLESPACES to group group_name"
      ```

   1. 將角色 `ROLE_PROCEDURES` 授予相同的群組。在下列範例中，將 *group\$1name* 取代為您要新增角色的目標群組之名稱。

      ```
      db2 "grant role ROLE_PROCEDURES to group group_name"
      ```

1. 將 `connect`、`bindadd`、`createtab` 和 `IMPLICIT_SCHEMA` 授權授予您新增使用者的目標群組。在下列範例中，將 *group\$1name* 取代為您新增使用者的第二個目標群組之名稱。

   ```
   db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public"
   db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
   ```

1. 為您新增使用者的每個額外目標群組重複步驟 4 到 6。

1. 透過以使用者身分連線、建立資料表、將值插入資料表，以及從資料表傳回資料，以測試使用者的存取權。在下列範例中，將 *rds\$1database\$1alias*、*username* 和 *password* 取代為資料庫的名稱以及使用者的使用者名稱和密碼。

   ```
   db2 connect to rds_database_alias user username using password
   db2 "create table t1(c1 int not null)"
   db2 "insert into t1 values (1),(2),(3),(4)"
   db2 "select * from t1"
   ```

## 變更使用者的密碼
<a name="db2-changing-user-password"></a>

**變更使用者的密碼**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.change_password` 來變更密碼。如需詳細資訊，請參閱[rdsadmin.change\$1password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password)。

   ```
   db2 "call rdsadmin.change_password(
       'username',
       'new_password')"
   ```

## 將群組新增至使用者
<a name="db2-adding-group-to-user"></a>

**將群組新增至使用者**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.add_groups` 將群組新增至使用者。如需詳細資訊，請參閱[rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups)。

   ```
   db2 "call rdsadmin.add_groups(
       'username',
       'group_name,group_name')"
   ```

## 從使用者移除群組
<a name="db2-removing-groups-from-user"></a>

**從使用者移除群組**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.remove_groups` 以移除群組。如需詳細資訊，請參閱[rdsadmin.remove\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups)。

   ```
   db2 "call rdsadmin.remove_groups(
       'username',
       'group_name,group_name')"
   ```

## 移除使用者
<a name="db2-removing-user"></a>

**從授權清單中移除使用者**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.remove_user` 以從授權清單中移除使用者。如需詳細資訊，請參閱[rdsadmin.remove\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user)。

   ```
   db2 "call rdsadmin.remove_user('username')"
   ```

## 列出使用者
<a name="db2-listing-users-database"></a>

若要列出授權清單上的使用者，請呼叫 `rdsadmin.list_users` 預存程序。如需詳細資訊，請參閱[rdsadmin.list\$1users](db2-sp-granting-revoking-privileges.md#db2-sp-list-users)。

```
db2 "call rdsadmin.list_users()"
```

## 建立角色
<a name="db2-creating-role"></a>

您可以使用 [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) 預存程序來建立角色。

**若要建立角色**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 將 Db2 設定為輸出內容。

   ```
   db2 set serveroutput on 
   ```

1. 建立角色。如需詳細資訊，請參閱[rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role)。

   ```
   db2 "call rdsadmin.create_role(
       'database_name',
       'role_name')"
   ```

1. 將 Db2 設定為不輸出內容。

   ```
   db2 set serveroutput off
   ```

## 授予角色
<a name="db2-granting-role"></a>

您可以使用 [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role) 預存程序將角色指派給角色、使用者或群組。

**指派角色**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 將 Db2 設定為輸出內容。

   ```
   db2 set serveroutput on 
   ```

1. 指派角色。如需詳細資訊，請參閱[rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role)。

   ```
   db2 "call rdsadmin.grant_role(
       'database_name',
       'role_name',
       'grantee',
       'admin_option')"
   ```

1. 將 Db2 設定為不輸出內容。

   ```
   db2 set serveroutput off
   ```

## 撤銷角色
<a name="db2-revoking-role"></a>

您可以使用 [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role) 預存程序從角色、使用者或群組撤銷角色。

**撤銷角色**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 撤銷角色。如需詳細資訊，請參閱[rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role)。

   ```
   db2 "call rdsadmin.revoke_role(
       ?,
       'database_name',
       'role_name',
       'grantee')"
   ```

## 捨棄角色
<a name="db2-dropping-role"></a>

您可以使用 [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role) 預存程序來捨棄角色。

**捨棄角色**

1. 連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 捨棄角色。如需詳細資訊，請參閱[rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role)。

   ```
   db2 "call rdsadmin.drop_role(
       ?,
       'database_name',
       'role_name')"
   ```

## 授予資料庫授權
<a name="db2-granting-dbadmin-auth"></a>

擁有 `DBADM` 授權的主要使用者可以將 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權授予角色、使用者或群組。

**授予資料庫授權**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.dbadm_grant` 以授予使用者存取權。如需詳細資訊，請參閱[rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant)。

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'database_name,
       'authorization',
       'grantee')"
   ```

**範例使用案例**

下列程序會逐步引導您建立角色、將 `DBADM` 授權授予角色、將角色指派給使用者，以及將角色授予群組。

****

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 為名為 `TESTDB` 的資料庫建立名為 `PROD_ROLE` 的角色。如需詳細資訊，請參閱[rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role)。

   ```
   db2 "call rdsadmin.create_role(
       'TESTDB',
       'PROD_ROLE')"
   ```

1. 將角色指派給名為 `PROD_USER` 的使用者。`PROD_USER` 獲得指派角色的管理員授權。如需詳細資訊，請參閱[rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role)。

   ```
   db2 "call rdsadmin.grant_role(
       ?,
       'TESTDB',
       'PROD_ROLE',
       'USER PROD_USER',
       'Y')"
   ```

1. (選用) 提供額外的授權或權限。下列範例會針對名為 `FUNDPROD` 的資料庫，將 `DBADM` 授權授予名為 `PROD_ROLE` 的角色。如需詳細資訊，請參閱[rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant)。

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'FUNDPROD',
       'DBADM',
       'ROLE PROD_ROLE')"
   ```

1. 終止您的工作階段。

   ```
   db2 terminate
   ```

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `TESTDB` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to TESTDB user master_username using master_password
   ```

1. 將更多授權新增至角色。

   ```
   db2 "grant connect, implicit_schema on database to role PROD_ROLE"
   ```

1. 將角色 `PROD_ROLE` 授予群組。

   ```
   db2 "grant role PROD_ROLE to group PRODGRP"
   ```

屬於 `PRODGRP` 群組的使用者現在可以執行各項動作，例如連線至 `TESTDB` 資料庫、建立資料表或建立結構描述。

## 撤銷資料庫授權
<a name="db2-revoking-dbadmin-auth"></a>

擁有 `DBADM` 授權的主要使用者可以從角色、使用者或群組撤銷 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權。

**撤銷資料庫授權**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.dbadm_revoke` 以撤銷使用者存取權。如需詳細資訊，請參閱[rdsadmin.dbadm\$1revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke)。

   ```
   db2 "call rdsadmin.dbadm_revoke(
       ?,
       'database_name,
       'authorization',
       'grantee')"
   ```

# 連接至遠端 RDS for Db2 資料庫執行個體
<a name="db2-attaching-to-remote"></a>

使用下列步驟連接至遠端 RDS for Db2 資料庫執行個體並執行 `get snapshot` 操作。

**連接至遠端 RDS for Db2 資料庫執行個體**

1. 執行用戶端 IBM Db2 CLP 工作階段。如需為 RDS for Db2 資料庫執行個體和資料庫編製目錄的相關資訊，請參閱 [使用 IBM Db2 CLP 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-clp-client.md)。請記下 RDS for Db2 資料庫執行個體的主要使用者名稱和主要密碼。

1. 連接至 RDS for Db2 資料庫執行個體。在下列範例中，將 *node\$1name*、*master\$1username* 和 *master\$1password* 取代為您編目的 TCPIP 節點名稱，以及 RDS for Db2 資料庫執行個體的主要使用者名稱和主要密碼。

   ```
   db2 attach to node_name user master_username using master_password
   ```

連接至遠端 RDS for Db2 資料庫執行個體之後，您可以執行下列命令和其他 `get snapshot` 命令。如需詳細資訊，請參閱 IBM Db2 文件中的 [GET SNAPSHOT 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-get-snapshot)。

```
db2 list applications
db2 get snapshot for all databases
db2 get snapshot for database manager
db2 get snapshot for all applications
```

# 執行 Amazon RDS for Db2 資料庫執行個體的常見資料庫任務
<a name="db2-performing-common-database-tasks-db-instances"></a>

您可以在 Amazon RDS for Db2 資料庫執行個體上執行與資料庫相關的特定一般 DBA 任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。此外，主要使用者無法執行需要 `SYSADM`、`SYSMAINT` 或 `SYSCTRL` 授權單位的命令或公用程式。

如需緩衝集區、資料庫和資料表空間的常見任務相關資訊，請參閱下列主題。

**主題**
+ [緩衝集區的常見任務](db2-managing-buffer-pools.md)
+ [資料庫的一般任務](db2-managing-databases.md)
+ [資料表空間的常見任務](db2-managing-tablespaces.md)

# 緩衝集區的常見任務
<a name="db2-managing-buffer-pools"></a>

您可以為 RDS for Db2 資料庫建立、修改或捨棄緩衝集區。建立、變更或捨棄緩衝集區需要更高層級的 `SYSADM` 或 `SYSCTRL` 授權，這不適用於主要使用者。請改用 Amazon RDS 預存程序。

您也可以排清緩衝集區。

**Topics**
+ [建立緩衝集區](#db2-creating-buffer-pool)
+ [修改緩衝集區](#db2-altering-buffer-pool)
+ [捨棄緩衝集區](#db2-dropping-buffer-pool)
+ [排清緩衝集區](#db2-flushing-buffer-pools)

## 建立緩衝集區
<a name="db2-creating-buffer-pool"></a>

若要為您的 RDS for Db2 資料庫建立緩衝集區，請呼叫 `rdsadmin.create_bufferpool` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [CREATE BUFFERPOOL 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-bufferpool)。

**建立緩衝集區**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.create_bufferpool` 來建立緩衝集區。如需更多詳細資訊，請參閱 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)。

   ```
   db2 "call rdsadmin.create_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       page_size, 
       number_block_pages, 
       block_size)"
   ```

## 修改緩衝集區
<a name="db2-altering-buffer-pool"></a>

若要修改 RDS for Db2 資料庫的緩衝集區，請呼叫 `rdsadmin.alter_bufferpool` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [ALTER BUFFERPOOL 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-bufferpool)。

**若要修改緩衝集區**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.alter_bufferpool` 來修改緩衝集區。如需更多詳細資訊，請參閱 [rdsadmin.alter\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-alter-buffer-pool)。

   ```
   db2 "call rdsadmin.alter_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       change_number_blocks, 
       number_block_pages, 
       block_size)"
   ```

## 捨棄緩衝集區
<a name="db2-dropping-buffer-pool"></a>

若要捨棄 RDS for Db2 資料庫的緩衝集區，請呼叫 `rdsadmin.drop_bufferpool` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的[捨棄緩衝集區](https://www.ibm.com/docs/en/db2/11.5?topic=pools-dropping-buffer)。

**重要**  
請確定沒有資料表空間指派給您要捨棄的緩衝集區。

**捨棄緩衝集區**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.drop_bufferpool` 以捨棄緩衝集區。如需更多詳細資訊，請參閱 [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)。

   ```
   db2 "call rdsadmin.drop_bufferpool(
       'database_name', 
       'buffer_pool_name')"
   ```

## 排清緩衝集區
<a name="db2-flushing-buffer-pools"></a>

您可以排清緩衝集區以強制檢查點，讓 RDS for Db2 將頁面從記憶體寫入儲存。

**注意**  
您不需要排清緩衝集區。Db2 會在遞交交易之前同步寫入日誌。中途分頁可能仍在緩衝集區中，但 Db2 會以非同步方式將其寫入儲存體。即使系統意外關閉，當您重新啟動資料庫時，Db2 仍會自動執行損毀復原。在損毀復原期間，Db2 會將遞交的變更寫入資料庫，或復原未遞交交易的變更。

**排清緩衝集區**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Db2 資料庫。在下列範例中，將 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 排清緩衝集區。

   ```
   db2 flush bufferpools all
   ```

# 資料庫的一般任務
<a name="db2-managing-databases"></a>

您可以在 RDS for Db2 資料庫執行個體上建立、捨棄或還原資料庫。建立、捨棄或還原資料庫需要更高層級的 `SYSADM` 授權，這不適用於主要使用者。請改用 Amazon RDS 預存程序。

您也可以執行常見的管理任務，例如監控、維護，以及收集資料庫的相關資訊。

**Topics**
+ [建立資料庫](#db2-creating-database)
+ [設定資料庫的設定](#db2-configuring-database)
+ [修改資料庫參數](#db2-modifying-db-parameters)
+ [設定日誌保留原則](#db2-configuring-log-retention)
+ [列出日誌資訊](#db2-listing-log-information)
+ [使用精細存取控制 (FGAC)](#db2-using-fine-grained-access-control)
+ [停用資料庫](#db2-deactivating-database)
+ [啟用資料庫](#db2-activating-database)
+ [重新建立資料庫](#db2-reactivating-database)
+ [捨棄資料庫](#db2-dropping-database)
+ [備份資料庫](#db2-backing-up-database)
+ [將封存日誌複製到 Amazon S3](#db2-copying-archive-logs-to-s3)
+ [還原資料庫](#db2-restoring-database)
+ [列出資料庫](#db2-listing-databases)
+ [收集資料庫的相關資訊](#db2-collecting-info-db)
+ [強制應用程式離開資料庫](#db2-forcing-application-off-db)
+ [產生效能報告](#db2-generating-performance-reports)

## 建立資料庫
<a name="db2-creating-database"></a>

若要在 RDS for Db2 資料庫執行個體上建立資料庫，請呼叫 `rdsadmin.create_database` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [CREATE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database)。

**注意**  
如果您打算修改 `db2_compatibility_vector` 參數，在建立資料庫之前，請修改參數。如需詳細資訊，請參閱[設定 db2\$1compatibility\$1vector 參數](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector)。

**若要建立資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.create_database` 來建立資料庫。如需詳細資訊，請參閱[rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)。

   ```
   db2 "call rdsadmin.create_database(
       'database_name',
       'database_page_size',
       'database_code_set',
       'database_territory',
       'database_collation',
       'database_autoconfigure_str',
       'database_non-restrictive')"
   ```

1. (選用) 為您要建立的每個資料庫呼叫 `rdsadmin.create_database` 來建立其他資料庫。每個 Db2 資料庫執行個體最多可包含 50 個資料庫。如需詳細資訊，請參閱[rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)。

   ```
   db2 "call rdsadmin.create_database('database_name')"
   ```

1. (選用) 使用下列其中一種方法確認已建立您的資料庫：
   + 呼叫 `rdsadmin.list_databases`。如需詳細資訊，請參閱[rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。
   + 執行下列 SQL 命令：

     ```
     db2 "select varchar(r.task_type,25) as task_type, r.database_name, 
         varchar(r.lifecycle,15) as lifecycle, r.created_at, r.database_name,
         varchar(bson_to_json(task_input_params),256) as input_params, 
         varchar(r.task_output,1024) as task_output 
         from table(rdsadmin.get_task_status(null,null,'create_database')) 
         as r order by created_at desc"
     ```

## 設定資料庫的設定
<a name="db2-configuring-database"></a>

若要在 RDS for Db2 資料庫執行個體上設定資料庫的設定，請呼叫 `rdsadmin.set_configuration` 預存程序。例如，您可以設定在還原作業期間要建立的緩衝區或緩衝區操縱器數量。

**設定資料庫的設定**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (選用) 呼叫 `rdsadmin.show_configuration` 以檢查您目前的組態設定。如需詳細資訊，請參閱[rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)。

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. 呼叫 `rdsadmin.set_configuration` 來設定資料庫的設定。如需詳細資訊，請參閱[rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

## 修改資料庫參數
<a name="db2-modifying-db-parameters"></a>

Amazon RDS for Db2 使用三種類型的參數：資料庫管理員組態參數、登錄變數和資料庫組態參數。您可以透過參數群組更新前兩種類型，並透過 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 預存程序更新最後一個類型。

**注意**  
您只能修改現有參數的值。您無法新增 RDS for Db2 所不支援的新參數。

如需這些參數以及如何修改其值的詳細資訊，請參閱 [Amazon RDS for Db2 參數](db2-supported-parameters.md)。

## 設定日誌保留原則
<a name="db2-configuring-log-retention"></a>

若要設定 Amazon RDS 保留 RDS for Db2 資料庫日誌檔案的時間，請呼叫 `rdsadmin.set_archive_log_retention` 預存程序。

**設定資料庫的日誌保留**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (選用) 呼叫 `rdsadmin.show_archive_log_retention` 來檢查目前組態的日誌保留。如需詳細資訊，請參閱[rdsadmin.show\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-show-archive-log-retention)。

   ```
   db2 "call rdsadmin.show_archive_log_retention(
       ?,
       'database_name')"
   ```

1. 呼叫 `rdsadmin.set_archive_log_retention` 來設定資料庫的日誌保留。如需詳細資訊，請參閱[rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)。

   ```
   db2 "call rdsadmin.set_archive_log_retention(
       ?,            
       'database_name',  
       'archive_log_retention_hours')"
   ```

## 列出日誌資訊
<a name="db2-listing-log-information"></a>

若要列出封存日誌檔案的詳細資訊，包括使用的總儲存大小等詳細資訊，請呼叫 `rdsadmin.list_archive_log_information` 預存程序。

**列出資料庫的日誌資訊**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.list_archive_log_information` 來傳回日誌檔案資訊清單。如需詳細資訊，請參閱[rdsadmin.list\$1archive\$1log\$1information](db2-sp-managing-databases.md#db2-sp-list-archive-log-information)。

   ```
   db2 "call rdsadmin.list_archive_log_information(
       ?,            
       'database_name')"
   ```

## 使用精細存取控制 (FGAC)
<a name="db2-using-fine-grained-access-control"></a>

若要使用精細存取控制命令來控制對 RDS for Db2 資料庫執行個體上資料庫中資料表資料的存取，請呼叫`rdsadmin.fgac_command`預存程序。您可能想要使用 FGAC 根據使用者角色或資料屬性限制對資料的存取。例如，您可以根據資料類型或特定醫療提供者，限制對病患醫療保健資料的存取。

**使用精細存取控制來控制對資料庫中資料表資料的存取**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 來執行各種精細存取控制命令`rdsadmin.fgac_command`。如需詳細資訊，請參閱[rdsadmin.fgac\$1commandParameters](db2-sp-managing-databases.md#db2-sp-fgac-command)。

   ```
   db2 "call rdsadmin.fgac_command(     
       ?,
       'database_name',
       'fgac_command')"
   ```

## 停用資料庫
<a name="db2-deactivating-database"></a>

若要停用 RDS for Db2 資料庫執行個體上的資料庫，請呼叫 `rdsadmin.deactivate_database` 預存程序。

根據預設，當您在 RDS for Db2 資料庫執行個體上建立資料庫時，Amazon RDS 會啟用資料庫。您可以停用不常使用的資料庫，以節省記憶體資源。

**停用資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.deactivate_database` 來停用資料庫。如需詳細資訊，請參閱[rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database)。

   ```
   db2 "call rdsadmin.deactivate_database(    
       ?, 
       'database_name')"
   ```

## 啟用資料庫
<a name="db2-activating-database"></a>

若要在獨立的 RDS for Db2 資料庫執行個體上啟用資料庫，請呼叫 `rdsadmin.activate_database` 預存程序。

根據預設，當您在 RDS for Db2 資料庫執行個體上建立資料庫時，Amazon RDS 會啟用資料庫。您可以停用不常使用的資料庫來節省記憶體資源，然後在稍後將已停用的資料庫啟用。

**啟用資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.activate_database` 來啟用資料庫。如需詳細資訊，請參閱[rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database)。

   ```
   db2 "call rdsadmin.activate_database(
       ?, 
       'database_name')"
   ```

## 重新建立資料庫
<a name="db2-reactivating-database"></a>

若要在複本來源 RDS for Db2 資料庫執行個體上重新啟用資料庫，請呼叫 `rdsadmin.reactivate_database` 預存程序。變更資料庫組態之後，您可能需要在 RDS for Db2 資料庫執行個體上重新啟用資料庫。若要判斷是否需要重新啟用資料庫，請連線至資料庫並執行 `db2 get db cfg show detail`。

您也可以呼叫此預存程序，在對資料庫組態進行變更後，在獨立的 RDS for Db2 資料庫執行個體上重新啟用資料庫。或者，您可以先呼叫 `rdsadmin.deactivate_database` 預存程序，然後呼叫 `rdsadmin.activate_database` 預存程序，在獨立的 RDS for Db2 資料庫執行個體上重新啟用資料庫。如需詳細資訊，請參閱[停用資料庫](#db2-deactivating-database)及[啟用資料庫](#db2-activating-database)。

**重新啟用資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.reactivate_database` 來重新啟用資料庫。如需詳細資訊，請參閱[rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database)。

   ```
   db2 "call rdsadmin.reactivate_database(
       ?, 
       'database_name')"
   ```

## 捨棄資料庫
<a name="db2-dropping-database"></a>

若要從 RDS for Db2 資料庫執行個體捨棄資料庫，請呼叫 `rdsadmin.drop_database` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的[捨棄資料庫](https://www.ibm.com/docs/en/db2/11.5?topic=databases-dropping)。

**注意**  
僅在符合特定條件時，您才能呼叫預存程序來捨棄資料庫。如需詳細資訊，請參閱 [使用須知](db2-sp-managing-databases.md#db2-sp-drop-database-usage-notes) 及 `rdsadmin.drop_database`。

**捨棄資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.drop_database` 來捨棄資料庫。如需詳細資訊，請參閱[rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database)。

   ```
   db2 "call rdsadmin.drop_database('database_name')"
   ```

## 備份資料庫
<a name="db2-backing-up-database"></a>

若要將 RDS for Db2 資料庫執行個體中的資料庫備份至 Amazon S3，請呼叫 `rdsadmin.backup_database`預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [BACKUP DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5.x?topic=commands-backup-database)。

**注意**  
此預存程序使用與 Amazon S3 的整合。在繼續之前，請確定您已設定整合。如需詳細資訊，請參閱[整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。

**備份資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 建立 S3 的 VPC 閘道端點。如果您已有 S3 的 VPC 閘道端點，請跳至步驟 4。

   若要讓 RDS for Db2 資料庫執行個體能夠與 Amazon S3 互動，您必須擁有 VPC 和 Amazon S3 閘道端點，私有子網路才能使用。如需詳細資訊，請參閱[步驟 1：這會為 Amazon S3 建立 VPC 閘道端點](db2-troubleshooting.md#db2-creating-endpoint)。

1. 確認 S3 的 VPC 閘道端點。如需詳細資訊，請參閱[步驟 2：確認 Amazon S3 的 VPC 閘道端點存在](db2-troubleshooting.md#db2-confirming-endpoint)。

1. 呼叫 來備份資料庫`rdsadmin.backup_database`。如需詳細資訊，請參閱[rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database)。

   ```
   db2 "call rdsadmin.backup_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       'backup_type',
       'compression_option',
       'util_impact_priority', 
       'num_files',
       'parallelism',
       'num_buffers')"
   ```

1. 終止您的連線。

   ```
   terminate
   ```

1. （選用） 確認備份檔案已上傳至 *s3\$1prefix/dbi\$1resource\$1id/db\$1name* 下的 Amazon S3 儲存貯體。如果檔案未出現在 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*，請檢查備份資料庫的狀態，以識別任何問題。如需詳細資訊，請參閱[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。如果您無法解決任何已識別的問題，請聯絡 [AWS Support](https://aws.amazon.com/premiumsupport/)。

1. （選用） 備份至 Amazon S3 完成後，您可以將備份還原至 RDS for Db2 資料庫執行個體或其他位置，例如本機伺服器。如需還原至 RDS for Db2 資料庫執行個體的資訊，請參閱 [還原資料庫](#db2-restoring-database)。

## 將封存日誌複製到 Amazon S3
<a name="db2-copying-archive-logs-to-s3"></a>

Db2 封存日誌現在可以從 RDS for Db2 資料庫執行個體複製到 Amazon S3。與使用 建立的原生備份結合的封存日誌，`rdsadmin.backup_database`可用於還原和向前滾動資料庫，以指向另一個 RDS for Db2 執行個體或 EC2 資料庫上的時間點。

 設定此功能之前，請使用預存程序`rdsadmin.backup_database`來設定 RDS for Db2 資料庫。

此功能會在 RDS for Db2 資料庫執行個體層級運作，但每個資料庫都可以啟用或停用封存日誌複製。

**設定封存日誌複製到 Amazon S3**

1. 使用 RDS for Db2 `rdsadmin` 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 將封存日誌備份到 S3[rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',
       'value')"
   ```

    **範例**：

   ```
   db2 "call rdsadmin.set_configuration('ARCHIVE_LOG_COPY_TARGET_S3_ARN', 'arn:aws:s3:::my_rds_db2_backups/archive-log-copy/')"
   ```

1. 呼叫 來啟用資料庫的封存日誌複製`rdsadmin.enable_archive_log_copy`。將 *database\$1name* 取代為您的資料庫名稱。

   ```
   db2 "call rdsadmin.enable_archive_log_copy(?, 'database_name')"
   ```

1. 同樣地，若要停用資料庫的封存日誌複製，請呼叫 `rdsadmin.disable_archive_log_copy`。

   ```
   db2 "call rdsadmin.disable_archive_log_copy(?, 'database_name')"
   ```

1. 呼叫 以確認封存日誌複製狀態`rdsadmin.list_databases`。

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

    **輸出範例：**

   ```
   DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
   --------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
   RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
   FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         7 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
   CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
   ...
   ```

## 還原資料庫
<a name="db2-restoring-database"></a>

若要將資料庫從 Amazon S3 儲存貯體移至 RDS for Db2 資料庫執行個體，請呼叫 `rdsadmin.restore_database` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。

**若要 資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. (選用) 檢查您目前的組態設定，以呼叫 `rdsadmin.show_configuration` 來最佳化還原作業。如需詳細資訊，請參閱[rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)。

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. 透過呼叫 `rdsadmin.set_configuration` 來設定最佳化還原作業的設定。明確設定這些值可在還原具有大量資料的資料庫時改善效能。如需詳細資訊，請參閱[rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

1. 呼叫 `rdsadmin.restore_database` 來還原資料庫。如需詳細資訊，請參閱[rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)。

   ```
   db2 "call rdsadmin.restore_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       restore_timestamp, 
       'backup_type')"
   ```

1. (選用) 呼叫 `rdsadmin.list_databases` 並檢查還原的資料庫是否已列出，以確認您的資料庫已還原。如需詳細資訊，請參閱[rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。

1. 將資料庫恢復上線，並呼叫 `rdsadmin.rollforward_database` 來套用其他交易日誌。如需詳細資訊，請參閱[rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)。

   ```
   db2 "call rdsadmin.rollforward_database(
       ?,
       'database_name',
       's3_bucket_name', 
       s3_prefix, 
       'rollforward_to_option', 
       'complete_rollforward')"
   ```

1. (選用) 透過呼叫 `rdsadmin.rollforward_database` 預存程序來檢查 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 預存程序的狀態。

1. 如果您在上一個步驟中將 `complete_rollforward` 設定為 `FALSE`，則必須透過呼叫 `rdsadmin.complete_rollforward` 來完成將資料庫恢復上線。如需詳細資訊，請參閱[rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward)。

   ```
   db2 "call rdsadmin.complete_rollforward(
       ?,
       'database_name')"
   ```

1. (選用) 透過呼叫 `rdsadmin.complete_rollforward` 預存程序來檢查 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 預存程序的狀態。

## 列出資料庫
<a name="db2-listing-databases"></a>

您可以透過呼叫 `rdsadmin.list_databases` 使用者定義的函數，列出在 Amazon RDS for Db2 上執行的所有資料庫。

**列出您的資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.list_databases` 來列出您的資料庫。如需詳細資訊，請參閱[rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

## 收集資料庫的相關資訊
<a name="db2-collecting-info-db"></a>

若要收集 RDS for Db2 資料庫執行個體上的資料庫相關資訊，請呼叫 `rdsadmin.db2pd_command` 預存程序。此資訊可協助您監控資料庫或故障診斷問題。

**收集資料庫的相關資訊**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.db2pd_command` 來收集資料庫的相關資訊。如需詳細資訊，請參閱[rdsadmin.db2pd\$1command](db2-sp-managing-databases.md#db2-sp-db2pd-command)。

   ```
   db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
   ```

## 強制應用程式離開資料庫
<a name="db2-forcing-application-off-db"></a>

若要強制應用程式離開 RDS for Db2 資料庫執行個體上的資料庫，請呼叫 `rdsadmin.force_application` 預存程序。在對資料庫執行維護之前，請將應用程式強制離開資料庫。

**強制應用程式離開資料庫**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.force_application` 來強制應用程式離開資料庫。如需詳細資訊，請參閱[rdsadmin.force\$1application](db2-sp-managing-databases.md#db2-sp-force-application)。

   ```
   db2 "call rdsadmin.force_application(     
       ?,
       'applications')"
   ```

## 產生效能報告
<a name="db2-generating-performance-reports"></a>

您可以使用程序或指令碼來產生效能報告。如需使用程序的相關資訊，請參閱 IBM Db2 文件中的 [DBSUMMARY程序 ‐ 產生系統和應用程式效能指標的摘要報告](https://www.ibm.com/docs/en/db2/11.5?topic=mm-dbsummary-procedure-generate-summary-report-system-application-performance-metrics)。

Db2 在其 `~sqllib/sample/perf` 目錄中包含 `db2mon.sh` 檔案。執行指令碼會產生低成本、廣泛的 SQL 指標報告。若要下載 `db2mon.sh` 檔案和相關指令碼檔案，請參閱 IBM db2-samples GitHub 儲存庫中的 [https://github.com/IBM/db2-samples/tree/master/perf](https://github.com/IBM/db2-samples/tree/master/perf) 目錄。

**使用指令碼產生效能報告**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Db2 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 呼叫 `rdsadmin.create_bufferpool` 來建立名為 `db2monbp` 且頁面大小為 4096 的緩衝集區。如需詳細資訊，請參閱[rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)。

   ```
   db2 "call rdsadmin.create_bufferpool('database_name','db2monbp',4096)"
   ```

1. 呼叫 `rdsadmin.create_tablespace` 來建立名為 `db2montmptbsp` 的暫存資料表空間，以使用 `db2monbp` 緩衝集區。如需詳細資訊，請參閱[rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)。

   ```
   db2 "call rdsadmin.create_tablespace('database_name',\
       'db2montmptbsp','db2monbp',4096,1000,100,'T')"
   ```

1. 開啟 `db2mon.sh` 指令碼，並修改有關連線至資料庫的行。

   1. 移除以下這行。

      ```
      db2 -v connect to $dbName
      ```

   1. 將上一個步驟中的行取代為下列行。在下列範例中，使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼取代 *master\$1username* 和 *master\$1password*。

      ```
      db2 -v connect to $dbName user master_username using master_password
      ```

   1. 移除以下這些行。

      ```
      db2 -v create bufferpool db2monbp
      
      db2 -v create user temporary tablespace db2montmptbsp bufferpool db2monbp
      
      db2 -v drop tablespace db2montmptbsp
      
      db2 -v drop bufferpool db2monbp
      ```

1. 執行 `db2mon.sh` 指令碼以指定的間隔輸出報告。在下列範例中，將 *absolute\$1path* 取代為指令碼檔案的完整路徑、將 *rds\$1database\$1alias* 取代為您資料庫的名稱，並將 *seconds* 取代為報告產生之間的秒數 (0 到 3600)。

   ```
   absolute_path/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

   **範例**

   下列範例顯示指令碼檔案位於 `home` 目錄下的 `perf` 目錄中。

   ```
   /home/db2inst1/sqllib/samples/perf/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

1. 捨棄為 `db2mon.sh` 檔案建立的緩衝集區和資料表空間。在下列範例中，使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼取代 *master\$1username* 和 *master\$1password*。將 *database\$1name* 取代為您資料庫的名稱。如需詳細資訊，請參閱[rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)及[rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)。

   ```
   db2 connect to rdsadmin user master_username using master_password
   
   db2 "call rdsadmin.drop_tablespace('database_name','db2montmptbsp')"
   
   db2 "call rdsadmin.drop_bufferpool('database_name','db2monbp')"
   ```

## 管理儲存體
<a name="db2-managing-storage"></a>

Db2 使用自動儲存來管理資料庫物件 (例如資料表、索引和暫存檔案) 的實體儲存體。自動儲存可讓 Db2 系統視需要建立及管理儲存體路徑，而不是手動配置儲存體空間並追蹤正在使用的儲存體路徑。這可以簡化 Db2 資料庫的管理，並減少因人為錯誤而發生錯誤的可能性。如需詳細資訊，請參閱 IBM Db2 文件中的[儲存體類別](https://www.ibm.com/docs/en/db2/11.5?topic=overview-automatic-storage)。

使用 RDS for Db2，您可以透過自動擴展邏輯磁碟區和檔案系統來動態增加儲存體大小。如需詳細資訊，請參閱[使用適合 Amazon RDS 資料庫執行個體的儲存體](USER_PIOPS.StorageTypes.md)。

# 資料表空間的常見任務
<a name="db2-managing-tablespaces"></a>

您可以為 RDS for Db2 資料庫建立、更改、重新命名或捨棄資料表空間。建立、更改、重新命名或捨棄資料表空間需要更高層級的 `SYSADM` 授權，這些授權不適用於主要使用者。請改用 Amazon RDS 預存程序。

**Topics**
+ [建立資料表空間](#db2-creating-tablespace)
+ [更改資料表空間](#db2-altering-tablespace)
+ [將資料表空間重新命名](#db2-renaming-tablespace)
+ [捨棄資料表空間](#db2-dropping-tablespace)
+ [檢查資料表空間的狀態](#db2-checking-tablespaces-procedure)
+ [傳回資料表空間的詳細資訊](#db2-tablespaces-info-db2pd)
+ [列出資料表空間的狀態和儲存群組](#db2-state-storage-group-tablespace-sql)
+ [列出資料表的資料表空間](#db2-return-tablespaces-sql)
+ [列出資料表空間容器](#db2-listing-tablespace-containers)

## 建立資料表空間
<a name="db2-creating-tablespace"></a>

若要為您的 RDS for Db2 資料庫建立資料表空間，請呼叫 `rdsadmin.create_tablespace` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [CREATE TABLESPACE 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-tablespace)。

**重要**  
若要建立資料表空間，您必須具有相同頁面大小的緩衝集區，才能與資料表空間建立關聯。如需詳細資訊，請參閱[緩衝集區的常見任務](db2-managing-buffer-pools.md)。

**建立資料表空間**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.create_tablespace` 來建立資料表空間。如需詳細資訊，請參閱[rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)。

   ```
   db2 "call rdsadmin.create_tablespace(
       'database_name', 
       'tablespace_name',
       'buffer_pool_name', 
       tablespace_initial_size, 
       tablespace_increase_size, 
       'tablespace_type')"
   ```

## 更改資料表空間
<a name="db2-altering-tablespace"></a>

若要更改 RDS for Db2 資料庫的資料表空間，請呼叫 `rdsadmin.alter_tablespace` 預存程序。您可以使用此預存程序來變更資料表空間的緩衝集區、降低高浮水印，或讓資料表空間上線。如需詳細資訊，請參閱 IBM Db2 文件中的 [ALTER TABLESPACE 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-tablespace)。

**更改資料表空間**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.alter_tablespace` 來更改資料表空間。如需詳細資訊，請參閱[rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace)。

   ```
   db2 "call rdsadmin.alter_tablespace(
       'database_name', 
       'tablespace_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       tablespace_increase_size, 
       'max_size', 'reduce_max', 
       'reduce_stop', 
       'reduce_value', 
       'lower_high_water', 
       'lower_high_water_stop', 
       'switch_online')"
   ```

## 將資料表空間重新命名
<a name="db2-renaming-tablespace"></a>

若要變更 RDS for Db2 資料庫的資料表空間之名稱，請呼叫 `rdsadmin.rename_tablespace` 預存程序。如需詳細資訊，請參閱 IBM Db2 文件中的 [RENAME TABLESPACE 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-rename-tablespace)。

**將資料表空間重新命名**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.rename_tablespace` 將資料表空間重新命名。如需詳細資訊，包括您可命名資料表空間的限制，請參閱 [rdsadmin.rename\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-rename-tablespace)。

   ```
   db2 "call rdsadmin.rename_tablespace(
       'database_name', 
       'source_tablespace_name',
       'target_tablespace_name')"
   ```

## 捨棄資料表空間
<a name="db2-dropping-tablespace"></a>

若要捨棄 RDS for Db2 資料庫的資料表空間，請呼叫 `rdsadmin.drop_tablespace` 預存程序。在捨棄資料表空間之前，請先捨棄資料表空間中的任何物件，例如資料表、索引或大型物件 LOB)。如需詳細資訊，請參閱 IBM Db2 文件中的[捨棄資料表空間](https://www.ibm.com/docs/en/db2/11.5?topic=spaces-dropping-table)。

**捨棄資料表空間**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 呼叫 `rdsadmin.drop_tablespace` 以捨棄資料表空間。如需詳細資訊，請參閱[rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)。

   ```
   db2 "call rdsadmin.drop_tablespace(
       'database_name', 
       'tablespace_name')"
   ```

## 檢查資料表空間的狀態
<a name="db2-checking-tablespaces-procedure"></a>

 您可以使用 `cast` 函數來檢查資料表空間的狀態。

**檢查資料表空間的狀態**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Db2 資料庫。在下列範例中，將 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 傳回摘要輸出。

   針對摘要輸出：

   ```
   db2 "select cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents from table(mon_get_tablespace(null,-1)) order by tbsp_id"
   ```

## 傳回資料表空間的詳細資訊
<a name="db2-tablespaces-info-db2pd"></a>

您可以使用 `cast` 函數傳回一個成員或所有成員的資料表空間相關資訊。

**傳回資料表空間的詳細資訊**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Db2 資料庫。在下列範例中，將 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 針對一個成員或所有成員，傳回資料庫中所有資料表空間的詳細資訊。

   針對一個成員：

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents,
   cast(tbsp_total_pages as integer) as total_pages,
   cast(tbsp_used_pages as integer) as used_pages,
   cast(tbsp_free_pages as integer) as free_pages,
   cast(tbsp_page_top as integer) as page_hwm,
   cast(tbsp_page_size as integer) as page_sz,
   cast(tbsp_extent_size as smallint) as extent_sz,
   cast(tbsp_prefetch_size as smallint) as prefetch_sz,
   cast(tbsp_initial_size as integer) as initial_size,
   cast(tbsp_increase_size_percent as smallint) as increase_pct,
   cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-1)) order by member, tbsp_id "
   ```

   針對所有成員：

   ```
   db2 "select cast(member as smallint) as member
   cast(tbsp_id as smallint) as tbsp_id,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(tbsp_type as varchar(3)) as tbsp_type,
   cast(tbsp_state as varchar(10)) as state,
   cast(tbsp_content_type as varchar(8)) as contents,
   cast(tbsp_total_pages as integer) as total_pages,
   cast(tbsp_used_pages as integer) as used_pages,
   cast(tbsp_free_pages as integer) as free_pages,
   cast(tbsp_page_top as integer) as page_hwm,
   cast(tbsp_page_size as integer) as page_sz,
   cast(tbsp_extent_size as smallint) as extent_sz,
   cast(tbsp_prefetch_size as smallint) as prefetch_sz,
   cast(tbsp_initial_size as integer) as initial_size,
   cast(tbsp_increase_size_percent as smallint) as increase_pct,
   cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-2)) order by member, tbsp_id "
   ```

## 列出資料表空間的狀態和儲存群組
<a name="db2-state-storage-group-tablespace-sql"></a>

您可以執行 SQL 陳述式，列出資料表空間的狀態和儲存群組。

若要列出資料表空間的狀態和儲存群組，請執行下列 SQL 陳述式：

```
db2 "SELECT varchar(tbsp_name, 30) as tbsp_name,
                  varchar(TBSP_STATE, 30) state,
                  tbsp_type,
                  varchar(storage_group_name,30) storage_group
FROM TABLE(MON_GET_TABLESPACE('',-2)) AS t"
```

## 列出資料表的資料表空間
<a name="db2-return-tablespaces-sql"></a>

您可以執行 SQL 陳述式來列出資料表的資料表空間。

若要列出資料表的資料表空間，請執行下列 SQL 陳述式。在下列範例中，將 *SCHEMA\$1NAME* 和 *TABLE\$1NAME* 取代為結構描述和資料表的名稱：

```
db2 "SELECT 
   VARCHAR(SD.TBSPACE,30) AS DATA_SPACE,
   VARCHAR(SL.TBSPACE,30) AS LONG_SPACE,
   VARCHAR(SI.TBSPACE,30) AS INDEX_SPACE
 FROM 
   SYSCAT.DATAPARTITIONS P 
   JOIN SYSCAT.TABLESPACES SD ON SD.TBSPACEID = P.TBSPACEID 
   LEFT JOIN SYSCAT.TABLESPACES SL ON SL.TBSPACEID = P.LONG_TBSPACEID
   LEFT JOIN SYSCAT.TABLESPACES SI ON SI.TBSPACEID = P.INDEX_TBSPACEID
 WHERE
    TABSCHEMA = 'SCHEMA_NAME'
 AND TABNAME   = 'TABLE_NAME'"
```

## 列出資料表空間容器
<a name="db2-listing-tablespace-containers"></a>

您可以使用 `cast` 命令來列出所有資料表空間容器或特定資料表空間容器。

**列出資料表空間的資料表空間容器**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Db2 資料庫。在下列範例中，將 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊：

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 傳回資料庫中所有資料表空間容器或特定資料表空間容器的清單。

   針對所有資料表空間容器：

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(container_id as smallint) as id,
   cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container(null,-2)) order by member,tbsp_id,container_id"
   ```

   針對特定資料表空間容器：

   ```
   db2 "select cast(member as smallint) as member,
   cast(tbsp_name as varchar(35)) as tbsp_name,
   cast(container_id as smallint) as id,
   cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container('TBSP_1',-2)) order by member, tbsp_id,container_id"
   ```

# 整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3
<a name="db2-s3-integration"></a>

您可以在 Amazon RDS for Db2 資料庫執行個體與具有 Amazon RDS 預存程序的 Amazon Simple Storage Service (Amazon S3) 儲存貯體之間傳輸檔案。如需詳細資訊，請參閱[Amazon RDS for Db2 預存程序參考](db2-stored-procedures.md)。

**注意**  
資料庫執行個體與 Amazon S3 儲存貯體必須在相同的 AWS 區域中。

若要讓 RDS for Db2 與 Amazon S3 整合，則您的資料庫執行個體必須具有存放 RDS for Db2 所在之 Amazon S3 儲存貯體的存取權。如果您目前沒有 S3 儲存貯體，請[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket-overview.html)。

**Topics**
+ [步驟 1：建立 IAM 政策](#db2-creating-iam-policy)
+ [步驟 2：建立 IAM 角色並附加您的 IAM 政策](#db2-creating-iam-role)
+ [步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體](#db2-adding-iam-role)

## 步驟 1：建立 IAM 政策
<a name="db2-creating-iam-policy"></a>

在此步驟中，您會建立具有將檔案從 Amazon S3 儲存貯體傳輸至 RDS 資料庫執行個體所需許可的 AWS Identity and Access Management (IAM) 政策。此步驟假設您已建立 S3 儲存貯體。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

在您建立政策之前，請記住下列資訊：
+ 儲存貯體的 Amazon Resource Name (ARN)
+ 如果您的儲存貯體使用 SSE-KMS或 SSE-S3加密，則為您的 AWS Key Management Service (AWS KMS) 金鑰的 ARN。

您建立的 IAM 政策應包含下列資訊。以 SS3*3 儲存貯體的名稱取代 \$1amzn-s3-demo-bucket\$1*。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3BucketAccess",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                "arn:aws:s3:::${amzn-s3-demo-bucket}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您可以使用 AWS 管理主控台 或 AWS Command Line Interface () 建立 IAM 政策AWS CLI。

### 主控台
<a name="creating-iam-policy-console"></a>

**建立 IAM 政策以允許 Amazon RDS 存取您的 Amazon S3 儲存貯體**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇**建立政策**，然後選擇 **JSON**。

1. 依服務新增動作。若要將檔案從 Amazon S3 儲存貯體傳輸到 Amazon RDS，您必須選取儲存貯體許可和物件許可。

1. 展開 **Resources** (資源)。您必須指定儲存貯體和物件資源。

1. 選擇**下一步**。

1. 在**政策名稱**中，輸入此政策的名稱。

1. (選用) 在**說明**中，輸入此政策的說明。

1. 選擇**建立政策**。

### AWS CLI
<a name="creating-iam-policy-cli"></a>

**建立 IAM 政策以允許 Amazon RDS 存取您的 Amazon S3 儲存貯體**

1.  建立包含下列 JSON 政策文件的 JSON 檔案。以 SS3*3 儲存貯體的名稱取代 \$1amzn-s3-demo-bucket\$1*。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowS3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:GetObjectVersion",
                   "s3:ListMultipartUploadParts",
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                   "arn:aws:s3:::${amzn-s3-demo-bucket}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 命令。在下列範例中，將 *iam\$1policy\$1name* 和 *iam\$1policy\$1file\$1name* 取代為 IAM 政策的名稱，以及您在步驟 1 中建立的 JSON 檔案的名稱。

   針對 Linux、macOS 或 Unix：

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "kms:GenerateDataKey",
               "kms:Decrypt",
               "s3:PutObject",
               "s3:GetObject",
               "s3:AbortMultipartUpload",
               "s3:ListBucket",
               "s3:DeleteObject",
               "s3:GetObjectVersion",
               "s3:ListMultipartUploadParts"
             ],
             "Resource": [
               "arn:aws:s3:::s3_bucket_name/*",
               "arn:aws:s3:::s3_bucket_name"
             ]
           }
         ]
       }'
   ```

   在 Windows 中：

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
               "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:AbortMultipartUpload",
                 "s3:ListBucket",
                 "s3:DeleteObject",
                 "s3:GetObjectVersion",
                 "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                 "arn:aws:s3:::s3_bucket_name/*",
                 "arn:aws:s3:::s3_bucket_name"
               ]
           }
         ]
       }'
   ```

1. 建立政策後，請記下政策的 ARN。您需要 [步驟 2：建立 IAM 角色並附加您的 IAM 政策](#db2-creating-iam-role) 的 ARN。

如需有關建立 IAM 政策的詳細資訊，請參閱 IAM 使用者指南中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

## 步驟 2：建立 IAM 角色並附加您的 IAM 政策
<a name="db2-creating-iam-role"></a>

此步驟會假設您已於 [步驟 1：建立 IAM 政策](#db2-creating-iam-policy) 中建立了 IAM 政策。在此步驟中，您會建立 RDS for Db2 資料庫執行個體的 IAM 角色，然後將 IAM 政策附加至角色。

您可以使用 AWS 管理主控台 或 為資料庫執行個體建立 IAM 角色 AWS CLI。

### 主控台
<a name="creating-iam-role-console"></a>

**建立 IAM 角色，並將 IAM 政策連接至該角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 針對**信任的實體類型**，請選取 **AWS 服務**。

1. 針對**服務或使用案例**，請選取 **RDS**，然後選取 **RDS ****– ****新增角色至資料庫**。

1. 選擇**下一步**。

1. 針對**許可政策**，搜尋並選取您建立的 IAM 政策之名稱。

1. 選擇**下一步**。

1. 在 **Role name** (角色名稱) 中，輸入角色名稱。

1. (選用) 在 **Description** (說明) 中，輸入新角色的說明。

1. 選擇建**立角色**。

### AWS CLI
<a name="creating-iam-role-cli"></a>

**建立 IAM 角色，並將 IAM 政策連接至該角色**

1. 建立包含下列 JSON 政策文件的 JSON 檔案：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令。在下列範例中，將 *iam\$1role\$1name* 和 *iam\$1assume\$1role\$1policy\$1file\$1name* 取代為 IAM 角色的名稱，以及您在步驟 1 中建立的 JSON 檔案的名稱。

   針對 Linux、macOS 或 Unix：

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   在 Windows 中：

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. 角色建立後，請記下角色的 ARN。您需要 [步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體](#db2-adding-iam-role) 的 ARN。

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 命令。在下列範例中，將 *iam\$1policy\$1arn* 取代為您在 [步驟 1：建立 IAM 政策](#db2-creating-iam-policy) 中所建立 IAM 政策的 ARN。將 *iam\$1role\$1name* 取代為您剛建立的 IAM 角色之名稱。

   在 Linux、macOS 或 Unix 中：

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   在 Windows 中：

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

## 步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體
<a name="db2-adding-iam-role"></a>

在此步驟中，您將 IAM 角色新增至 RDS for Db2 資料庫執行個體。請注意以下要求：
+ 您必須能存取連接了必要 Amazon S3 許可政策的角色。
+ 您一次只能將一個 IAM 角色與 RDS for Db2 資料庫執行個體建立關聯。
+ 您的 RDS for Db2 資料庫執行個體必須處於**可用**狀態。

您可以使用 AWS 管理主控台 或 將 IAM 角色新增至資料庫執行個體 AWS CLI。

### 主控台
<a name="db2-adding-iam-role-console"></a>

**將 IAM 角色新增至 RDS for Db2 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您的 RDS for Db2 資料庫執行個體名稱。

1. 在 **Connectivity & security (連線和安全)** 索引標籤上，向下捲動至頁面底部的 **Manage IAM roles (管理 IAM 角色)** 區段。

1. 對於**新增 IAM 角色到此執行個體**，請選擇您在 [步驟 2：建立 IAM 角色並附加您的 IAM 政策](#db2-creating-iam-role) 中建立的角色。

1. 針對 **Feature** (功能) 選擇 **S3\$1INTEGRATION**。

1. 選擇 **Add role (新增角色)**。  
![\[S3_INTEGRATION 功能已新增至資料庫執行個體的 IAM 角色。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-s3-integration-role.png)

### AWS CLI
<a name="db2-adding-iam-role-cli"></a>

若要將 IAM 角色新增至 RDS for Db2 資料庫執行個體，請執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html) 命令。在下列範例中，將 *region*、*db\$1instance\$1name* 和 *iam\$1role\$1arn* 取代為資料庫執行個體所在的 名稱 AWS 區域 、資料庫執行個體的名稱，以及您在 中建立的 IAM 角色的 ARN[步驟 2：建立 IAM 角色並附加您的 IAM 政策](#db2-creating-iam-role)。

針對 Linux、macOS 或 Unix：

```
aws rds add-role-to-db-instance \
    --region $region \
    --db-instance-identifier $db_instance_name \
    --feature-name S3_INTEGRATION \
    --role-arn $iam_role_arn \
```

在 Windows 中：

```
aws rds add-role-to-db-instance ^
    --region $region \
    --db-instance-identifier db_instance_name ^
    --feature-name S3_INTEGRATION ^
    --role-arn iam_role_arn ^
```

若要確認角色已成功新增至 RDS for Db2 資料庫執行個體，請執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令。在下列範例中，將 *db\$1instance\$1name* 取代為您資料庫執行個體的名稱。

在 Linux、macOS 或 Unix 中：

```
aws rds describe-db-instances \
    --filters "Name=db-instance-id,Values=db_instance_name" \
    --query 'DBInstances[].AssociatedRoles'
```

在 Windows 中：

```
aws rds describe-db-instances ^
    --filters "Name=db-instance-id,Values=db_instance_name" ^
    --query 'DBInstances[].AssociatedRoles'
```

此命令會產生類似下列範例的輸出：

```
[
    [
        {
            "RoleArn": "arn:aws:iam::0123456789012:role/rds-db2-s3-role",
            "FeatureName": "S3_INTEGRATION",
            "Status": "ACTIVE"
        }
    ]
]
```

# 將資料遷移至 Amazon RDS for Db2
<a name="db2-migrating-data-to-rds"></a>

您可以使用 AWS 或原生 Db2 工具，將自我管理的 Db2 資料庫遷移至 Amazon RDS for Db2。

如需使用 AWS 服務從 Db2 資料庫遷移至 Amazon RDS for Db2 的相關資訊，請參閱 [使用 AWS 服務將資料從 Db2 遷移至 Amazon RDS for Db2](db2-migration-approaches.md)。

如需使用原生 Db2 工具從 Db2 資料庫遷移至 Amazon RDS for Db2 的相關資訊，請參閱 [使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2](db2-native-db2-tools.md)。

# 使用 AWS 服務將資料從 Db2 遷移至 Amazon RDS for Db2
<a name="db2-migration-approaches"></a>

在 Amazon RDS 中，有多種方式可以將資料從 Db2 資料庫遷移到 Amazon RDS for Db2。您可以將 Db2 資料庫從 Linux、AIX 或 Windows 環境一次性遷移至 Amazon RDS for Db2。若要將停機時間降至最低，您可以執行接近零的停機時間遷移。您可以將資料儲存到 Amazon S3 並一次載入一個資料表至 Db2 資料庫，以遷移資料。您也可以透過複寫或使用 AWS Database Migration Service 執行同步遷移。

對於 Linux 型 Db2 資料庫的一次性遷移，Amazon RDS 僅支援離線和線上備份。Amazon RDS 不支援增量和 Delta 備份。對於 Linux 型 Db2 資料庫接近零的停機時間遷移，Amazon RDS 需要線上備份。建議您將線上備份用於接近零的停機時間遷移，並將離線備份用於可以處理停機時間的遷移。

**Topics**
+ [從 Amazon RDS for Db2 的 Linux 遷移至 Linux](db2-one-time-migration-linux.md)
+ [Amazon RDS for Db2 接近零的停機時間從 Linux 遷移到 Linux](db2-near-zero-downtime-migration.md)
+ [從 Amazon RDS for Db2 的 Linux 同步遷移至 Linux](db2-synchronous-migration-linux.md)
+ [從 Amazon RDS for Db2 的 AIX 或 Windows 遷移至 Linux](db2-one-time-migration-aix-windows-linux.md)
+ [透過 Amazon S3 將 Db2 資料遷移至 Amazon RDS for Db2](db2-migration-load-from-s3.md)
+ [使用 AWS Database Migration Service (AWS DMS) 遷移至 Amazon RDS for Db2](db2-migration-amazon-dms.md)

# 從 Amazon RDS for Db2 的 Linux 遷移至 Linux
<a name="db2-one-time-migration-linux"></a>

使用此遷移方法，您可以將自我管理的 Db2 資料庫備份到 Amazon S3 儲存貯體。然後，您可以使用 Amazon RDS 預存程序將 Db2 資料庫還原至 Amazon RDS for Db2 資料庫執行個體。如需使用 Amazon S3 的詳細資訊，請參閱 [整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。

RDS for Db2 的備份和還原遵循 IBM Db2 支援的升級路徑和限制。如需詳細資訊，請參閱 IBM Db2 文件中的 [Db2 伺服器的支援升級路徑](https://www.ibm.com/docs/en/db2/11.5?topic=servers-supported-upgrade-paths-db2)和 [Db2 伺服器的升級限制](https://www.ibm.com/docs/en/db2/11.5?topic=servers-upgrade-restrictions)。

**Topics**
+ [使用原生還原的限制和建議](#db2-linux-migration-limitations)
+ [將您的資料庫備份至 Amazon S3](#db2-linux-backing-up-database)
+ [建立預設自動儲存群組](#db2-linux-creating-auto-storage-group)
+ [還原您的 Db2 資料庫](#db2-linux-restoring-db2-database)

## 使用原生還原的限制和建議
<a name="db2-linux-migration-limitations"></a>

下列限制和建議適用於使用原生還原：
+ Amazon RDS 僅支援遷移符合受支援 RDS for Db2 版本的內部部署 Db2 版本。如需有關支援版本的詳細資訊，請參閱 [Amazon RDS Db2 執行個體的升級管理](Db2.Concepts.VersionMgmt.Supported.md)。
+ Amazon RDS 僅支援原生還原的離線和線上備份。Amazon RDS 不支援增量或 Delta 備份。
+ 您無法從與 RDS for Db2 資料庫執行個體所在區域 AWS 區域 不同的 中的 Amazon S3 儲存貯體還原。
+ Amazon S3 將上傳至 Amazon S3 儲存貯體的檔案大小限制為 5 TB。如果資料庫備份檔案超過 5 TB，請將備份檔案分割為較小的檔案。
+ Amazon RDS 不支援非連接 外部常式、增量還原或 Delta 還原。
+ 您無法從加密的來源資料庫還原，但可以還原至加密的 Amazon RDS 資料庫執行個體。

還原程序會根據您的組態而有所不同。

如果您將 `USE_STREAMING_RESTORE`設定為 `TRUE`，Amazon RDS 會在還原期間直接從 S3 儲存貯體串流備份。串流可大幅降低儲存需求。您只需要佈建等於或大於備份大小或原始資料庫大小的儲存空間，以較大者為準。

如果您將 `USE_STREAMING_RESTORE`設定為 `FALSE`，Amazon RDS 會先將備份下載到您的 RDS for Db2 資料庫執行個體，然後擷取備份。擷取需要額外的儲存空間。您必須佈建等於或大於備份大小加原始資料庫大小總和的儲存空間。

還原資料庫的大小上限等於支援的最大資料庫大小減去還原程序期間暫時儲存所需的任何空間。

## 將您的資料庫備份至 Amazon S3
<a name="db2-linux-backing-up-database"></a>

若要在 Amazon S3 上備份資料庫，您需要下列 AWS 元件：
+ *存放備份檔案的 Amazon S3 儲存貯體*：上傳您要遷移至 Amazon RDS 的任何備份檔案。建議您針對可處理停機時間的遷移使用離線備份。如果您已經有 S3 儲存貯體，則可直接使用。如果您沒有 S3 儲存貯體，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。
**注意**  
如果您的資料庫很大，需要很長的時間才能轉移到 S3 儲存貯體，您可以訂購 AWS Snow Family 裝置並要求 AWS 執行備份。將檔案複製到裝置並將其傳回給 Snow Family 團隊後，團隊會將備份映像傳輸至 S3 儲存貯體。如需詳細資訊，請參閱 [AWS Snow Family 文件](https://docs.aws.amazon.com/snowball/)。
+ *存取 S3 儲存貯體的 IAM 角色*：如果您已有 IAM 角色，則可以使用該角色。如果您沒有角色，請參閱 [步驟 2：建立 IAM 角色並附加您的 IAM 政策](db2-s3-integration.md#db2-creating-iam-role)。
+ *將信任關係和許可連接至 IAM 角色的 IAM 政策*：如需詳細資訊，請參閱 [步驟 1：建立 IAM 政策](db2-s3-integration.md#db2-creating-iam-policy)。
+ *新增至 RDS for Db2 資料庫執行個體的 IAM 角色*：如需詳細資訊，請參閱 [步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體](db2-s3-integration.md#db2-adding-iam-role)。

## 建立預設自動儲存群組
<a name="db2-linux-creating-auto-storage-group"></a>

您的來源資料庫必須具有預設的自動儲存群組。如果您的資料庫沒有預設的自動儲存群組，則必須建立一個。

**建立預設自動儲存群組**

1. 連接到您的來源資料庫。在下列範例中，將 *source\$1database* 取代為您資料庫的名稱。

   ```
   db2 connect to source_database 
   ```

1. 建立自動儲存群組，並將其設定為預設值。在下列範例中，將 *storage\$1path* 取代為儲存群組所在的絕對路徑。

   ```
   db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
   ```

1. 終止後端程序。

   ```
   db2 terminate
   ```

1. 停用資料庫並停止所有資料庫服務。在下列範例中，將 *source\$1database* 取代為您建立儲存群組的資料庫之名稱。

   ```
   db2 deactivate db source_database
   ```

1. 備份資料庫。在下列範例中，將 *source\$1database* 取代為您建立儲存群組的資料庫之名稱。將 *file\$1system\$1path* 取代為您要備份資料庫的絕對路徑。

   ```
   db2 backup database source_database to file_system_path 
   ```

## 還原您的 Db2 資料庫
<a name="db2-linux-restoring-db2-database"></a>

在 Amazon S3 上備份資料庫並建立自動儲存群組之後，您即可將 Db2 資料庫還原至 RDS for Db2 資料庫執行個體。

**將 Db2 資料庫從 Amazon S3 儲存貯體還原至 RDS for Db2 資料庫執行個體**

1. 連線至 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[連線至您的 Db2 資料庫執行個體](USER_ConnectToDb2DBInstance.md)。

1. （選用） 若要確保您的資料庫已設定最佳設定，請呼叫 來檢查下列參數的值[rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)：
   + `RESTORE_DATABASE_NUM_BUFFERS`
   + `RESTORE_DATABASE_PARALLELISM`
   + `RESTORE_DATABASE_NUM_MULTI_PATHS`
   + `USE_STREAMING_RESTORE`

   視需要使用 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 修改這些值。在還原具有大量資料的資料庫時，正確設定這些參數可大幅改善效能。對於大多數遷移案例，我們建議`USE_STREAMING_RESTORE`將 設定為 ，`TRUE`因為它可以減少儲存需求並提高還原速度。

1. 呼叫 `rdsadmin.restore_database` 來還原資料庫。如需詳細資訊，請參閱[rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)。

# Amazon RDS for Db2 接近零的停機時間從 Linux 遷移到 Linux
<a name="db2-near-zero-downtime-migration"></a>

您可以使用此遷移方法，將 Linux 型 Db2 資料庫從一個自我管理的 Db2 資料庫 (來源) 遷移至 Amazon RDS for Db2。這種方法會對應用程式或使用者造成最少到零中斷或停機時間。這種方法會備份您的資料庫，並使用日誌重播將其還原，這有助於防止持續作業中斷，並提供資料庫的高可用性。

為了實現接近零的停機時間遷移，RDS for Db2 會使用日誌重播實作還原。這種方法會備份自我管理的 Linux 型 Db2 資料庫，並在 RDS for Db2 伺服器上將其還原。接著，您會使用 Amazon RDS 預存程序套用後續交易日誌，讓資料庫保持最新狀態。

**Topics**
+ [接近零停機時間遷移的限制和建議](#db2-near-zero-downtime-migration-limitations)
+ [將您的資料庫備份至 Amazon S3](#db2-near-zero-downtime-backing-up-database)
+ [建立預設自動儲存群組](#db2-near-zero-migration-creating-auto-storage-group)
+ [遷移 Db2 資料庫](#db2-migrating-db2-database)

## 接近零停機時間遷移的限制和建議
<a name="db2-near-zero-downtime-migration-limitations"></a>

下列限制和建議適用於使用接近零的停機時間遷移：
+ Amazon RDS 需要接近零停機時間遷移的線上備份。這是因為當您上傳封存的交易日誌時，Amazon RDS 會讓您的資料庫保持向前捲動擱置狀態。如需詳細資訊，請參閱[遷移 Db2 資料庫](#db2-migrating-db2-database)。
+ 您無法從與 RDS for Db2 資料庫執行個體所在區域 AWS 區域 不同的 中的 Amazon S3 儲存貯體還原。
+ Amazon S3 對上傳至 S3 儲存貯體的檔案大小限制為 5 TB。如果資料庫備份檔案超過 5 TB，請將備份檔案分割為較小的檔案。
+ Amazon RDS 不支援非連接 外部常式、增量還原或 Delta 還原。
+ 您無法從加密的來源資料庫還原，但可以還原至加密的 Amazon RDS 資料庫執行個體。

還原程序會根據您的組態而有所不同。

如果您將 `USE_STREAMING_RESTORE`設定為 `TRUE`，Amazon RDS 會在還原期間直接從 S3 儲存貯體串流備份。串流可大幅降低儲存需求。您只需要佈建等於或大於備份大小或原始資料庫大小的儲存空間，以較大者為準。

如果您將 `USE_STREAMING_RESTORE`設定為 `FALSE`，Amazon RDS 會先將備份下載到您的 RDS for Db2 資料庫執行個體，然後擷取備份。擷取需要額外的儲存空間。您必須佈建等於或大於備份大小加原始資料庫大小總和的儲存空間。

還原資料庫的大小上限等於支援的最大資料庫大小減去還原程序期間暫時儲存所需的任何空間。

## 將您的資料庫備份至 Amazon S3
<a name="db2-near-zero-downtime-backing-up-database"></a>

若要在 Amazon S3 上備份資料庫，您需要下列 AWS 元件：
+ *存放備份檔案的 Amazon S3 儲存貯體*：上傳您要遷移至 Amazon RDS 的任何備份檔案。Amazon RDS 需要接近零停機時間遷移的線上備份。如果您已經有 S3 儲存貯體，則可直接使用。如果您沒有 S3 儲存貯體，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。
**注意**  
如果您的資料庫很大，需要很長的時間才能轉移到 S3 儲存貯體，您可以訂購 AWS Snow Family 裝置並要求 AWS 執行備份。將檔案複製到裝置並將其傳回給 Snow Family 團隊後，團隊會將備份映像傳輸至 S3 儲存貯體。如需詳細資訊，請參閱 [AWS Snow Family 文件](https://docs.aws.amazon.com/snowball/)。
+ *存取 S3 儲存貯體的 IAM 角色*：如果您已有 AWS Identity and Access Management (IAM) 角色，則可以使用該角色。如果您沒有角色，請參閱 [步驟 2：建立 IAM 角色並附加您的 IAM 政策](db2-s3-integration.md#db2-creating-iam-role)。
+ *將信任關係和許可連接至 IAM 角色的 IAM 政策*：如需詳細資訊，請參閱 [步驟 1：建立 IAM 政策](db2-s3-integration.md#db2-creating-iam-policy)。
+ *新增至 RDS for Db2 資料庫執行個體的 IAM 角色*：如需詳細資訊，請參閱 [步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體](db2-s3-integration.md#db2-adding-iam-role)。

## 建立預設自動儲存群組
<a name="db2-near-zero-migration-creating-auto-storage-group"></a>

您的來源資料庫必須具有預設的自動儲存群組。如果您的資料庫沒有預設的自動儲存群組，則必須建立一個。

**建立預設自動儲存群組**

1. 連接到您的來源資料庫。在下列範例中，將 *source\$1database* 取代為您資料庫的名稱。

   ```
   db2 connect to source_database 
   ```

1. 建立自動儲存群組，並將其設定為預設值。在下列範例中，將 *storage\$1path* 取代為儲存群組所在的絕對路徑。

   ```
   db2 "create stogroup IBMSTOGROUP ON storage_path set as default"
   ```

1. 終止後端程序。

   ```
   db2 terminate
   ```

## 遷移 Db2 資料庫
<a name="db2-migrating-db2-database"></a>

設定幾近零的停機時間遷移後，您就可以將 Db2 資料庫從 Amazon S3 儲存貯體遷移至 RDS for Db2 資料庫執行個體。

**若要將備份檔案從 Amazon S3 儲存貯體遷移至 RDS for Db2 資料庫執行個體，執行近乎零的停機時間遷移**

1. 執行來源資料庫的線上備份。如需詳細資訊，請參閱 IBM Db2 文件中的 [BACKUP DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-backup-database)。

1. 將資料庫的備份複製到 Amazon S3 儲存貯體。如需使用 Amazon S3 的相關資訊，請參閱《Amazon Simple Storage Service 使用者指南》[https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)。

1. 使用 RDS for Db2 資料庫執行個體的 *master\$1username* 和 *master\$1password* 連線到 `rdsadmin` 伺服器。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. （選用） 若要確保您的資料庫已設定最佳設定，請呼叫 來檢查下列參數的值[rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)：
   + `RESTORE_DATABASE_NUM_BUFFERS`
   + `RESTORE_DATABASE_PARALLELISM`
   + `RESTORE_DATABASE_NUM_MULTI_PATHS`
   + `USE_STREAMING_RESTORE`

   視需要使用 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 修改這些值。在還原具有大量資料的資料庫時，正確設定這些參數可大幅改善效能。對於大多數遷移案例，我們建議`USE_STREAMING_RESTORE`將 設定為 ，`TRUE`因為它可以減少儲存需求並提高還原速度。

1. 呼叫 `rdsadmin.restore_database` 以在 RDS for Db2 伺服器上還原備份。將 `backup_type` 設定為 `ONLINE`。如需詳細資訊，請參閱[rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)。

1. 將封存日誌從來源伺服器複製到 S3 儲存貯體。如需詳細資訊，請參閱 IBM Db2 文件中的[封存記錄](https://www.ibm.com/docs/en/db2/11.5?topic=logging-archive)。

1. 呼叫 `rdsadmin.rollforward_database` 以視需要多次套用封存日誌。將 `complete_rollforward` 設定為 `FALSE` 以保持資料庫處於 `ROLL-FORWARD PENDING` 狀態。如需詳細資訊，請參閱[rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)。

1. 套用所有封存日誌後，請呼叫 `rdsadmin.complete_rollforward` 將資料庫上線。如需詳細資訊，請參閱[rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward)。

1. 透過更新資料庫的應用程式端點或更新 DNS 端點，將流量重新導向至 RDS for Db2 伺服器，以切換應用程式連線至 RDS for Db2 伺服器。您也可以使用自我管理 Db2 資料庫上的 Db2 自動用戶端重新路由功能，搭配 RDS for Db2 資料庫端點。如需詳細資訊，請參閱 IBM Db2 文件中的[自動化用戶端重新路由描述和設定](https://www.ibm.com/docs/en/db2/11.5?topic=reroute-configuring-automatic-client)。

1. (選用) 關閉來源資料庫。

# 從 Amazon RDS for Db2 的 Linux 同步遷移至 Linux
<a name="db2-synchronous-migration-linux"></a>

使用此遷移方法，您可以設定自我管理 Db2 資料庫與 Amazon RDS for Db2 資料庫執行個體之間的複寫。對自我管理資料庫所做的變更會以近乎即時的方式複寫至 RDS for Db2 資料庫執行個體。這種方法可以提供持續的可用性，並將遷移過程中的停機時間降至最低。

# 從 Amazon RDS for Db2 的 AIX 或 Windows 遷移至 Linux
<a name="db2-one-time-migration-aix-windows-linux"></a>

透過此遷移方法，您可以使用原生 Db2 工具將自我管理的 Db2 資料庫備份到 Amazon S3 儲存貯體。原生 Db2 工具包括 `export` 公用程式、`db2move` 系統命令或 `db2look` 系統命令。您的 Db2 資料庫可以是自我管理或在 Amazon Elastic Compute Cloud (Amazon EC2) 中。您可以將資料從 AIX 或 Windows 系統移至 Amazon S3 儲存貯體。然後，使用 Db2 用戶端直接從 S3 儲存貯體將資料載入 Amazon RDS for Db2 資料庫中。停機時間取決於資料庫的大小。如需使用 Amazon S3 的詳細資訊，請參閱 [整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。

**將 Db2 資料庫遷移至 RDS for Db2**

1. 準備備份您的資料庫。設定足夠的儲存量，以便在自我管理的 Db2 系統上保留備份。

1. 備份您的資料庫。

   1. 執行 [db2look 系統命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2look-db2-statistics-ddl-extraction-tool)來擷取所有物件的資料定義語言 (DDL) 檔案。

   1. 執行 [Db2 匯出公用程式](https://www.ibm.com/docs/en/db2/11.5?topic=utility-exporting-data)、[db2move 系統命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2move-database-movement-tool)或 [CREATE EXTERNAL TABLE 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-table-external)，將 Db2 資料表資料卸載至 Db2 系統上的儲存體。

1. 將備份移至 Amazon S3 儲存貯體。如需更多詳細資訊，請參閱 [整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。
**注意**  
如果您的資料庫很大，需要很長的時間才能轉移到 S3 儲存貯體，您可以訂購 AWS Snow Family 裝置並要求 AWS 執行備份。將檔案複製到裝置並將其傳回給 Snow Family 團隊後，團隊會將備份映像傳輸至 S3 儲存貯體。如需詳細資訊，請參閱 [AWS Snow Family 文件](https://docs.aws.amazon.com/snowball/)。

1. 使用 Db2 用戶端將資料直接從 S3 儲存貯體載入 RDS for Db2 資料庫中。如需更多詳細資訊，請參閱 [使用 Amazon S3 遷移](db2-migration-load-from-s3.md)。

# 透過 Amazon S3 將 Db2 資料遷移至 Amazon RDS for Db2
<a name="db2-migration-load-from-s3"></a>

若使用此遷移方法，您會先將資料從單一資料表儲存到放置在 Amazon S3 儲存貯體中的資料檔案中。然後，您可以使用 [LOAD 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)，將資料從該資料檔案載入 Amazon RDS for Db2 資料庫中的資料表。如需使用 Amazon S3 的詳細資訊，請參閱 [整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)

**Topics**
+ [在 Amazon S3 中儲存您的資料](#db2-migration-load-from-s3-saving-data-file)
+ [將資料載入 RDS for Db2 資料表](#db2-migration-load-from-s3-into-db-table)

## 在 Amazon S3 中儲存您的資料
<a name="db2-migration-load-from-s3-saving-data-file"></a>

若要將資料從單一資料表儲存至 Amazon S3，請使用資料庫公用程式，將資料從資料庫管理系統 (DBMS) 擷取至 CSV 檔案。然後，將資料檔案上傳至 Amazon S3。

若要在 Amazon S3 上儲存資料檔案，您需要下列 AWS 元件：
+ *存放備份檔案的 Amazon S3 儲存貯體*：如果您已有 S3 儲存貯體，則可以使用該儲存貯體。如果您沒有 S3 儲存貯體，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。
+ *存取 S3 儲存貯體的 IAM 角色*：如果您已有 IAM 角色，則可以使用該角色。如果您沒有角色，請參閱 [步驟 2：建立 IAM 角色並附加您的 IAM 政策](db2-s3-integration.md#db2-creating-iam-role)。
+ *將信任關係和許可連接至 IAM 角色的 IAM 政策*：如需詳細資訊，請參閱 [步驟 1：建立 IAM 政策](db2-s3-integration.md#db2-creating-iam-policy)。
+ *新增至 RDS for Db2 資料庫執行個體的 IAM 角色*：如需詳細資訊，請參閱 [步驟 3：將您的 IAM 角色新增至 RDS for Db2 資料庫執行個體](db2-s3-integration.md#db2-adding-iam-role)。

## 將資料載入 RDS for Db2 資料表
<a name="db2-migration-load-from-s3-into-db-table"></a>

將資料檔案儲存至 Amazon S3 之後，您可以將這些資料從這些檔案載入 RDS for Db2 資料庫執行個體上的個別資料表。

**將 Db2 資料表資料載入 RDS for Db2 資料庫的資料庫資料表**

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 將指向儲存檔案之 Amazon S3 儲存貯體的儲存存取別名編製目錄。請記下此別名的名稱，以便在下一個步驟中使用。如果您計劃從存放在相同 Amazon S3 儲存貯體中的資料檔案載入多個資料表，則只需要執行此步驟一次。

   下列範例會將名為 *my\$1s3\$1alias* 的別名編目，以授予名為 *jorge\$1souza* 的使用者存取名為 *amzn-s3-demo-bucket* 的儲存貯體。

   ```
   db2 "call rdsadmin.catalog_storage_access(?, 'my_s3_alias', 'amzn-s3-demo-bucket', 'USER', 'jorge_souza')"
   ```

   如需此預存程序的詳細資訊，請參閱 [rdsadmin.catalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-catalog-storage-access)。

1. 使用指向 Amazon S3 儲存貯體的儲存存取別名來執行 `LOAD` 命令。
**注意**  
如果 `LOAD` 命令傳回錯誤，則您可能需要為 Amazon S3 建立 VPC 閘道端點，並將傳出規則新增至安全群組。如需詳細資訊，請參閱[檔案 I/O 錯誤](db2-troubleshooting.md#db2-file-input-output-error)。

   下列範例會將資料從名為 *my\$1s3\$1datafile.csv* 的資料檔案載入名為 *my\$1db2\$1table* 的資料表。此範例假設資料檔案位於名為 *my\$1s3\$1alias* 之別名所指向的 Amazon S3 儲存貯體中。

   ```
   db2 "load from db2remote://my_s3_alias//my_s3_datafile.csv of DEL insert into my_db2_table";
   ```

   下列範例會將名為 *my\$1table1\$1export.ixf* 的資料檔案中的 LOB 載入名為 *my\$1db2\$1table* 的資料表。此範例假設資料檔案位於名為 *my\$1s3\$1alias* 之別名所指向的 Amazon S3 儲存貯體中。

   ```
   db2 "call sysproc.admin_cmd('load from "db2remote://my_s3_alias//my_table1_export.ixf" of ixf
           lobs from "db2remote://my_s3_alias//" xml from "db2remote://my_s3_alias//"
           modified by lobsinfile implicitlyhiddeninclude identityoverride generatedoverride periodoverride transactionidoverride
           messages on server
           replace into "my_schema"."my_db2_table"
                                  nonrecoverable
           indexing mode incremental allow no access')"
   ```

   針對要載入 RDS for Db2 資料庫執行個體中資料表之 Amazon S3 儲存貯體中的每個資料檔案，重複此步驟。

   如需 `LOAD` 命令的詳細資訊，請參閱 [LOAD 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)。

# 使用 AWS Database Migration Service (AWS DMS) 遷移至 Amazon RDS for Db2
<a name="db2-migration-amazon-dms"></a>

您可以使用 AWS DMS 進行一次性遷移，然後從 Linux、Unix (例如 AIX) 和 Windows 上的 Db2 同步到 Amazon RDS for Db2。如需詳細資訊，請參閱「[什麼是 AWS Database Migration Service？」](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)。

# 使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2
<a name="db2-native-db2-tools"></a>

您可以使用多種原生 Db2 工具、公用程式和命令，將資料直接從 Db2 資料庫移至 Amazon RDS for Db2 資料庫。若要使用這些原生 Db2 工具，您必須能夠將用戶端機器連線至 RDS for Db2 資料庫執行個體。如需更多詳細資訊，請參閱 [將用戶端電腦連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-client-rds.md)。

**注意**  
另一種移動資料的方式是先將資料儲存到 Amazon S3 儲存貯體，然後使用 `LOAD` 命令將該資料傳輸到 RDS for Db2 資料庫中的資料表。由於 RDS for Db2 和 S3 之間的網路連線良好，此方法可在遷移大量資料時提供最佳效能。如需更多詳細資訊，請參閱 [透過 Amazon S3 將 Db2 資料遷移至 Amazon RDS for Db2](db2-migration-load-from-s3.md)。


| 工具名稱 | 使用案例 | 限制 | 
| --- | --- | --- | 
|  [db2look](db2-native-db2-tools-db2look.md)  |  將中繼資料從自我管理的 Db2 資料庫複製到 RDS for Db2 資料庫。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [IMPORT](db2-native-db2-tools-import.md) 命令  |  將小型資料表和具有大型物件 (LOB) 的資料表從用戶端機器遷移至 RDS for Db2 資料庫執行個體。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [INGEST 公用程式](db2-native-db2-tools-ingest.md)   |  持續將資料從用戶端機器上*沒有*大型物件 (LOB) 的檔案和管道串流到 RDS for Db2 資料庫執行個體。支援 `INSERT` 和 `MERGE` 作業   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [INSERT](db2-native-db2-tools-insert.md) 命令  |  將小型資料表中的資料從自我管理的 Db2 資料庫複製到 RDS for Db2 資料庫。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 
|  [LOAD CLIENT](db2-native-db2-tools-load.md) 命令  |  將*沒有*大型物件 (LOB) 的小型資料表從用戶端機器遷移至 RDS for Db2 資料庫執行個體。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-native-db2-tools.html)  | 

# 將用戶端電腦連線至 Amazon RDS for Db2 資料庫執行個體
<a name="db2-connecting-client-rds"></a>

若要使用任何原生 Db2 工具將資料從 Db2 資料庫移至 Amazon RDS for Db2 資料庫，您必須先將用戶端電腦連線至 RDS for Db2 資料庫執行個體。

用戶端電腦可以是下列任何一種：
+ Linux、Windows 或 macOS 上的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。此執行個體應與 RDS for Db2 資料庫執行個體位於相同的虛擬私有雲端 (VPC) AWS Cloud9，或 AWS CloudShell。
+ Amazon EC2 執行個體中的自我管理 Db2 執行個體。執行個體應該位於相同的 VPC 中。
+ Amazon EC2 執行個體中的自我管理 Db2 執行個體。如果您啟用 VPC 對等互連，則執行個體可以位於不同的 VPC 中。如需詳細資訊，請參閱《Amazon 虛擬私有雲端 VPC 對等互連指南》中的[建立 VPC 對等互連](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)。**
+ 在自我管理環境中執行 Linux、Windows 或 macOS 的本機電腦。您必須擁有 RDS for Db2 的公有連線，或啟用自我管理 Db2 執行個體與 AWS之間的 VPN 連線。

若要將用戶端電腦連線至 RDS for Db2 資料庫執行個體，請使用 IBM Db2 Data Management Console 登入用戶端電腦。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)及[IBM Db2 Data Management Console](db2-connecting-with-ibm-data-management-console.md)。

您可以使用 AWS Database Migration Service (AWS DMS) 對資料庫執行查詢、執行 SQL 執行計劃，以及監控資料庫。如需詳細資訊，請參閱*AWS Database Migration Service 《 使用者指南*》中的[什麼是 AWS Database Migration Service？](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)。

成功將用戶端電腦連線至 RDS for Db2 資料庫執行個體後，您就可以使用任何原生 Db2 工具來複製資料。如需詳細資訊，請參閱[使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2](db2-native-db2-tools.md)。

# 使用 db2look 將資料庫中繼資料從 Db2 複製到 Amazon RDS for Db2
<a name="db2-native-db2-tools-db2look"></a>

`db2look` 是一種原生 Db2 工具，可擷取資料定義語言 (DDL) 檔案、物件、授權、組態、WLM 和資料庫配置。您可以使用 `db2look` 將資料庫中繼資料從自我管理的 Db2 資料庫複製到 Amazon RDS for Db2 資料庫。如需詳細資訊，請參閱 IBM Db2 文件中的[使用 db2look 模擬資料庫](https://www.ibm.com/docs/en/db2/11.5?topic=tools-db2look)。

**複製資料庫中繼資料**

1. 在自我管理的 Db2 系統上執行 `db2look` 工具，以擷取 DDL 檔案。在下列範例中，將 *database\$1name* 取代為 Db2 資料庫的名稱。

   ```
   db2look -d database_name -e -l -a -f -wlm -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 如果您的用戶端電腦可以存取來源 (自我管理的 Db2) 資料庫和 RDS for Db2 資料庫執行個體，則您可以直接連接到遠端執行個體，在用戶端電腦上建立 `db2look.sql` 檔案。然後為遠端自我管理 Db2 執行個體編製目錄。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及自我管理 Db2 資料庫的連接埠號碼。

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *source\$1database\$1name* 和 *source\$1database\$1alias* 取代為自我管理 Db2 資料庫的名稱，以及您要用於此資料庫的別名。

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \ 
          authentication server_encrypt
      ```

   1. 連接至來源資料庫。在下列範例中，將 *source\$1database\$1alias*、*user\$1id* 和 *user\$1password* 取代為您在上一個步驟中建立的別名，以及自我管理 Db2 資料庫的使用者 ID 和密碼。

      ```
      db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
          -cor -createdb -printdbcfg -o db2look.sql
      ```

1. 如果您無法從用戶端電腦存取遠端自我管理 Db2 資料庫，請將 `db2look.sql` 檔案複製到用戶端電腦。然後為 RDS for Db2 資料庫執行個體編製目錄。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及 RDS for Db2 資料庫執行個體的連接埠號碼。

      ```
      db2 catalog tcpip node remnode REMOTE dns_ip_address server port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *rds\$1database\$1name* 和 *rds\$1database\$1alias* 取代為 RDS for Db2 資料庫的名稱，以及您要用於此資料庫的別名。

      ```
      db2 catalog database rds_database_name as rds_database_alias at node remnode \ 
          authentication server_encrypt
      ```

   1. 為管理 Db2 RDS 的管理員資料庫編製目錄。您無法使用此資料庫來存放任何資料。

      ```
      db2 catalog database rdsadmin as rdsadmin at node remnode authentication server_encrypt
      ```

1. 建立緩衝集區和資料表空間。管理員沒有建立緩衝集區或資料表空間的權限。不過，您可以使用 Amazon RDS 預存程序來建立這些項目。

   1. 尋找 `db2look.sql` 檔案中緩衝集區和資料表空間的名稱和定義。

   1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 Amazon RDS。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

      ```
      db2 connect to rdsadmin user master_username using master_password
      ```

   1. 呼叫 `rdsadmin.create_bufferpool` 來建立緩衝集區。如需更多詳細資訊，請參閱 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)。

      ```
      db2 "call rdsadmin.create_bufferpool(
          'database_name', 
          'buffer_pool_name', 
          buffer_pool_size, 
          'immediate', 
          'automatic', 
          page_size, 
          number_block_pages, 
          block_size)"
      ```

   1. 呼叫 `rdsadmin.create_tablespace` 來建立資料表空間。如需更多詳細資訊，請參閱 [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)。

      ```
      db2 "call rdsadmin.create_tablespace(
          'database_name', 
          'tablespace_name',
          'buffer_pool_name', 
          tablespace_initial_size, 
          tablespace_increase_size, 
          'tablespace_type')"
      ```

   1. 針對您要新增的每個額外緩衝集區或資料表空間，重複步驟 c 或 d。

   1. 終止您的連線。

      ```
      db2 terminate
      ```

1. 建立資料表和物件。

   1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 RDS for Db2 資料庫。在下列範例中，將 *rds\$1database\$1name*、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

      ```
      db2 connect to rds_database_name user master_username using master_password
      ```

   1. 執行 `db2look.sql` 檔案。

      ```
      db2 -tvf db2look.sql
      ```

   1. 終止您的連線。

      ```
      db2 terminate
      ```

# 使用 IMPORT 命令將資料從用戶端電腦匯入 Amazon RDS for Db2
<a name="db2-native-db2-tools-import"></a>

您可以從用戶端電腦使用 `IMPORT` 命令，將資料匯入 Amazon RDS for Db2 伺服器。

**重要**  
`IMPORT` 命令方法適用於遷移包含大型物件 (LOB) 的小型資料表和資料表。由於 `INSERT` 和 `DELETE` 記錄作業，因此 `IMPORT` 命令較 `LOAD` 公用程式慢。如果您的用戶端電腦與 RDS for Db2 之間的網路頻寬有限，建議您使用不同的遷移方法。如需更多詳細資訊，請參閱 [使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2](db2-native-db2-tools.md)。

**將資料匯入 RDS for Db2 伺服器**

1. 使用 IBM Db2 Data Management Console 登入您的用戶端電腦。如需更多詳細資訊，請參閱 [使用 IBM Db2 Data Management Console 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-ibm-data-management-console.md)。

1. 在用戶端電腦上為 RDS for Db2 資料庫編製目錄。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及自我管理 Db2 資料庫的連接埠號碼。

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *source\$1database\$1name* 和 *source\$1database\$1alias* 取代為自我管理 Db2 資料庫的名稱，以及您要用於此資料庫的別名。

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 連接至來源資料庫。在下列範例中，將 *source\$1database\$1alias*、*user\$1id* 和 *user\$1password* 取代為您在上一個步驟中建立的別名，以及自我管理 Db2 資料庫的使用者 ID 和密碼。

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 在您的自我管理 Db2 系統上使用 ` EXPORT` 命令產生資料檔案。在下列範例中，將*目錄*取代為您資料檔案所在用戶端電腦上的目錄。將 *file\$1name* 和 *table\$1name* 取代為資料檔案的名稱和資料表的名稱。

   ```
   db2 "export to /directory/file_name.txt of del lobs to /directory/lobs/ \
       modified by coldel\| select * from table_name"
   ```

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 RDS for Db2 資料庫。在下列範例中，將 **rds\$1database\$1alias**、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 使用 `IMPORT` 命令，將資料從用戶端電腦上的檔案匯入遠端 RDS for Db2 資料庫。如需詳細資訊，請參閱 IBM Db2 文件中的 [IMPORT 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-import)。在下列範例中，將 *directory* 和 *file\$1name* 取代為您資料檔案所在用戶端電腦上的目錄，以及資料檔案的名稱。將 *SCHEMA\$1NAME* 和 *TABLE\$1NAME* 取代為結構描述和資料表的名稱。

   ```
   db2 "IMPORT from /directory/file_name.tbl OF DEL LOBS FROM /directory/lobs/ \
       modified by coldel\| replace into SCHEMA_NAME.TABLE_NAME"
   ```

1. 終止您的連線。

   ```
   db2 terminate
   ```

# 使用 LOAD 命令將資料從用戶端電腦匯入 Amazon RDS for Db2
<a name="db2-native-db2-tools-load"></a>

您可以使用 `LOAD CLIENT` 命令，將資料從用戶端電腦上的檔案載入 RDS for Db2 伺服器。由於 RDS for Db2 伺服器沒有 SSH 連線，您可以在自我管理的 Db2 伺服器或 Db2 用戶端電腦上使用 `LOAD CLIENT` 命令。

**重要**  
`LOAD CLIENT` 命令方法適用於遷移小型資料表。如果您的用戶端與 RDS for Db2 之間的網路頻寬有限，建議您使用不同的遷移方法。如需更多資訊，請參閱[使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2](db2-native-db2-tools.md)。  
如果您的資料檔案包含大型物件檔案名稱的參考，則 `LOAD` 命令將無法運作，因為大型物件 (LOB) 需要位於 Db2 伺服器。如果您嘗試將 LOB 從用戶端電腦載入 RDS for Db2 伺服器中，您會收到 SQL3025N 錯誤。請改用 [IMPORT 命令](db2-native-db2-tools-import.md)。

**將資料載入 RDS for Db2 伺服器中**

1. 使用 IBM Db2 Data Management Console 登入您的用戶端電腦。如需更多詳細資訊，請參閱 [使用 IBM Db2 Data Management Console 連線至 Amazon RDS for Db2 資料庫執行個體](db2-connecting-with-ibm-data-management-console.md)。

1. 在用戶端電腦上為 RDS for Db2 資料庫編製目錄。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及自我管理 Db2 資料庫的連接埠號碼。

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *source\$1database\$1name* 和 *source\$1database\$1alias* 取代為自我管理 Db2 資料庫的名稱，以及您要用於此資料庫的別名。

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 連接至來源資料庫。在下列範例中，將 *source\$1database\$1alias*、*user\$1id* 和 *user\$1password* 取代為您在上一個步驟中建立的別名，以及自我管理 Db2 資料庫的使用者 ID 和密碼。

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 在您的自我管理 Db2 系統上使用 `EXPORT` 命令產生資料檔案。在下列範例中，將*目錄*取代為您資料檔案所在用戶端電腦上的目錄。將 *file\$1name* 和 *TABLE\$1NAME* 取代為資料檔案的名稱和資料表的名稱。

   ```
   db2 "export to /directory/file_name.txt of del modified by coldel\| \
       select * from TPCH.TABLE_NAME"
   ```

1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 RDS for Db2 資料庫。在下列範例中，將 **rds\$1database\$1alias**、*master\$1username* 和 *master\$1password* 取代為您自己的資訊。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 使用 `LOAD` 命令將資料從用戶端電腦上的檔案載入遠端 RDS for Db2 資料庫中。如需詳細資訊，請參閱 IBM Db2 文件中的 [LOAD 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)。在下列範例中，將*目錄*取代為您資料檔案所在用戶端電腦上的目錄。將 *file\$1name* 和 *TABLE\$1NAME* 取代為資料檔案的名稱和資料表的名稱。

   ```
   db2 "LOAD CLIENT from /directory/file_name.txt \
       modified by coldel\| replace into TPCH.TABLE_NAME \
       nonrecoverable without prompting"
   ```

1. 終止您的連線。

   ```
   db2 terminate
   ```

# 使用 INSERT 命令將資料從 Db2 匯入 Amazon RDS for Db2
<a name="db2-native-db2-tools-insert"></a>

您可以從自我管理的 Db2 伺服器使用 `INSERT` 命令，將資料插入 Amazon RDS for Db2 資料庫。透過此遷移方法，您可以使用遠端 RDS for Db2 資料庫執行個體的暱稱。您的自我管理 Db2 資料庫 (來源) 必須能夠連線至 RDS for Db2 資料庫 (目標)。

**重要**  
`INSERT` 命令方法適用於遷移小型資料表。如果您的自我管理 Db2 資料庫與 RDS for Db2 資料庫之間的網路頻寬有限，建議您使用不同的遷移方法。如需更多詳細資訊，請參閱 [使用原生 Db2 工具將資料從 Db2 遷移至 Amazon RDS for Db2](db2-native-db2-tools.md)。

**將資料從自我管理的 Db2 資料庫複製到 RDS for Db2 資料庫**

1. 為自我管理 Db2 執行個體上的 RDS for Db2 資料庫執行個體編製目錄。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及自我管理 Db2 資料庫的連接埠號碼。

      ```
      db2 catalog tcpip node remnode REMOTE dns_ip_address SERVER port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *rds\$1database\$1name* 取代為 RDS for Db2 資料庫執行個體上的資料庫名稱。

      ```
      db2 catalog database rds_database_name as remdb at node remnode \
          authentication server_encrypt
      ```

1. 在自我管理的 Db2 執行個體上啟用聯合。在下列範例中，將 *source\$1database\$1name* 取代為自我管理 Db2 執行個體上的資料庫名稱。

   ```
   db2 update dbm cfg using FEDERATED YES source_database_name
   ```

1. 在 RDS for Db2 資料庫執行個體上建立資料表。

   1. 為節點編製目錄。在下列範例中，將 *dns\$1ip\$1address* 和 *port* 取代為 DNS 名稱或 IP 位址，以及自我管理 Db2 資料庫的連接埠號碼。

      ```
      db2 catalog tcpip node srcnode REMOTE dns_ip_address server port
      ```

   1. 為資料庫編製目錄。在下列範例中，將 *source\$1database\$1name* 和 *source\$1database\$1alias* 取代為自我管理 Db2 資料庫的名稱，以及您要用於此資料庫的別名。

      ```
      db2 catalog database source_database_name as source_database_alias at node srcnode \
          authentication server_encrypt
      ```

1. 連接至來源資料庫。在下列範例中，將 *source\$1database\$1alias*、*user\$1id* 和 *user\$1password* 取代為您在上一個步驟中建立的別名，以及自我管理 Db2 資料庫的使用者 ID 和密碼。

   ```
   db2look -d source_database_alias -i user_id -w user_password -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 設定聯合，並在自我管理的 Db2 執行個體上為 RDS for Db2 資料庫資料表建立暱稱。

   1. 連線至本機資料庫 在下列範例中，將 *source\$1database\$1name* 取代為自我管理 Db2 執行個體上的資料庫名稱。

      ```
      db2 connect to source_database_name
      ```

   1.  建立包裝函式以存取 Db2 資料來源。

      ```
      db2 create wrapper drda
      ```

   1. 在聯合資料庫中定義資料來源。在下列範例中，將 *admin* 和 *admin\$1password* 取代為自我管理 Db2 執行個體的憑證。將 *rds\$1database\$1name* 取代為 RDS for Db2 資料庫執行個體上的資料庫之名稱。

      ```
      db2 "create server rdsdb2 type DB2/LUW version '11.5.9.0' \
          wrapper drda authorization "admin" password "admin_password" \
          options( dbname 'rds_database_name', node 'remnode')"
      ```

   1. 映射兩個資料庫上的使用者。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您 RDS for Db2 資料庫執行個體的憑證：

      ```
      db2 "create user mapping for user server rdsdb2 \
          options (REMOTE_AUTHID 'master_username', REMOTE_PASSWORD 'master_password')"
      ```

   1. 驗證 RDS for Db2 伺服器的連線。

      ```
      db2 set passthru rdsdb2
      ```

   1. 在遠端 RDS for Db2 資料庫中為資料表建立暱稱。在下列範例中，將 *NICKNAME* 和 *TABLE\$1NAME* 取代為資料表的暱稱和資料表的名稱。

      ```
      db2 create nickname REMOTE.NICKNAME for RDSDB2.TABLE_NAME.NICKNAME
      ```

1. 將資料插入遠端 RDS for Db2 資料庫中的資料表。在自我管理 Db2 執行個體本機資料表的 `select` 陳述式中使用暱稱。在下列範例中，將 *NICKNAME* 和 *TABLE\$1NAME* 取代為資料表的暱稱和資料表的名稱。

   ```
   db2 "INSERT into REMOTE.NICKNAME select * from RDS2DB2.TABLE_NAME.NICKNAME"
   ```

# 使用 INGEST 公用程式將資料從 Db2 匯入 Amazon RDS for Db2
<a name="db2-native-db2-tools-ingest"></a>

您可以使用 `INGEST` 公用程式，持續將資料從用戶端電腦上的檔案和管道串流到目標 Amazon RDS for Db2 資料庫執行個體。`INGEST` 公用程式支援 `INSERT` 和 `MERGE` 操作。如需詳細資訊，請參閱 IBM Db2 文件中的[擷取公用程式](https://www.ibm.com/docs/en/db2/11.1?topic=reference-ingest-utility)一節。

由於 `INGEST` 公用程式支援暱稱，您可以使用公用程式，將資料從自我管理的 Db2 資料庫傳輸到 RDS for Db2 資料庫。只要兩個資料庫之間存在網路連線，即可使用此方法。

**重要**  
`INGEST` 公用程式不支援大型物件 (LOB)。請改用 [`IMPORT` 命令](db2-native-db2-tools-import.md)。

若要使用 `INGEST` 公用程式 `RESTARTABLE` 的功能，請在 RDS for Db2 資料庫上執行下列命令。

```
db2 "call sysproc.sysinstallobjects(‘INGEST’,‘C’,NULL,NULL)"
```

# Amazon RDS for Db2 聯合
<a name="db2-federation"></a>

您可以使用 Amazon RDS for Db2 資料庫做為聯合資料庫。為 RDS for Db2 設定聯合之後，您將能夠從 RDS for Db2 資料庫存取及查詢多個資料庫的資料。聯合讓您無需將資料遷移至 RDS for Db2 資料庫，或將資料合併至單一資料庫。

透過使用 RDS for Db2 資料庫作為聯合資料庫，您可以繼續存取所有 RDS for Db2 功能，並充分利用各種功能 AWS 服務，同時將您的資料保存在不同的資料庫中。您可以設定連線相同類型不同資料庫的同質聯合，或連線不同類型不同資料庫的異質聯合。

您必須先將 RDS for Db2 中的 Db2 資料庫連線至遠端資料庫。然後，您可以針對所有連線的資料庫執行查詢。例如，您可以執行 SQL JOIN 陳述式，將 RDS for Db2 資料庫中的資料表與 z/OS 資料庫中遠端 Db2 中的資料表聯結。

**Topics**
+ [同質聯合](#db2-federation-homogeneous)
+ [異質聯合](#db2-federation-heterogeneous)

## 同質聯合
<a name="db2-federation-homogeneous"></a>

您可以在 RDS for Db2 資料庫與下列 Db2 系列產品之間設定同質聯合：
+ 適用於 Linux、UNIX、Windows (LUW) 的 Db2
+ Db2 iSeries
+ 適用於 z/OS 的 Db2

RDS for Db2 同質聯合不支援下列動作：
+ 執行 `CATALOG` 命令，以在 RDS for Db2 主機資料庫上設定節點目錄和遠端資料庫
+ 在 z/OS 上聯合至 Db2 時設定工作負載平衡 (WLB)
+ 設定 IBM 資料伺服器驅動程式組態檔案 (`db2dsdriver.cfg`)

RDS for Db2 同質聯合有下列要求：
+ 您必須在 `UNFENCED` 模式下建立 DRDA 包裝函式。如果沒有，則聯合無法在 RDS for Db2 中運作。
+ 您必須允許從 RDS for Db2 主機資料庫到遠端主機資料庫的傳入和傳出流量。如需詳細資訊，請參閱[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

**Topics**
+ [步驟 1：建立 DRDA 包裝函式和聯合伺服器](#db2-federation-homogeneous-create)
+ [步驟 2：建立使用者映射](#db2-federation-homogeneous-map)
+ [步驟 3：檢查連線](#db2-federation-homogeneous-check)

### 步驟 1：建立 DRDA 包裝函式和聯合伺服器
<a name="db2-federation-homogeneous-create"></a>

對於同質聯合，請建立 DRDA 包裝函式和聯合伺服器。與遠端主機的連線是使用 `HOST`、`PORT` 和 `DBNAME`。

根據遠端 Db2 資料庫的類型，選擇下列其中一種方法：
+ **適用於 Linux、UNIX 和 Windows (LUX) 資料庫的 Db2** – 執行下列 SQL 命令。在下列範例中，將 *server\$1name* 取代為您要用於聯合的伺服器名稱。將 *db2\$1version* 取代為您遠端 Db2 資料庫的版本。將 *username* 和 *password* 取代為您要連線之遠端 Db2 資料庫的憑證。將 *db\$1name*、*dns\$1name* 和 *port* 取代為您要連線之遠端 Db2 資料庫的適當值。

  ```
  create wrapper drda options(DB2_FENCED 'N');
  create server server_name type DB2/LUW wrapper drda version 'db2_version' authorization "master_username" password "master_password" options (add DBNAME 'db_name',add HOST 'dns_name',add PORT 'port');
  ```

  **範例**

  ```
  create wrapper drda options(DB2_FENCED 'N');
  create server SERVER1 type DB2/LUW wrapper drda version '11.5' authorization "sysuser" password "******" options (add DBNAME 'TESTDB2',add HOST 'ip-123-45-67-899.us-west-1.compute.internal',add PORT '25010');
  ```
+ **Db2 iSeries** – 執行下列 SQL 命令。在下列範例中，將 *wrapper\$1name* 和 *library\$1name* 取代為 DRDA 包裝函式和[包裝函式程式庫檔案](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files)的名稱。將 *server\$1name* 取代為您要用於聯合的伺服器名稱。將 *db2\$1version* 取代為您遠端 Db2 資料庫的版本。將 *username* 和 *password* 取代為您要連線之遠端 Db2 資料庫的憑證。將 *dns\$1name*、*port* 和 *db\$1name* 取代為您要連線之遠端 Db2 資料庫的適當值。

  ```
  create wrapper wrapper_name library 'library name' options(DB2_FENCED 'N');
  create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "sername" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');
  ```

  **範例**

  ```
  create wrapper WRAPPER1 library 'libdb2drda.so' options(DB2_FENCED 'N');
  create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  ```
+ **Db2 for z/OS** – 執行下列 SQL 命令。在下列範例中，將 *wrapper\$1name* 和 *library\$1name* 取代為 DRDA 包裝函式和[包裝函式程式庫檔案](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files)的名稱。將 *server\$1name* 取代為您要用於聯合的伺服器名稱。將 *db2\$1version* 取代為您遠端 Db2 資料庫的版本。將 *username* 和 *password* 取代為您要連線之遠端 Db2 資料庫的憑證。將 *dns\$1name*、*port* 和 *db\$1name* 取代為您要連線之遠端 Db2 資料庫的適當值。

  ```
  create wrapper wrapper_name library 'library_name' options(DB2_FENCED 'N');
  create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "username" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');
  ```

  **範例**

  ```
  create wrapper WRAPPER1 library 'libdb2drda.so' OPTIONS(DB2_FENCED 'N');
  create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  ```

### 步驟 2：建立使用者映射
<a name="db2-federation-homogeneous-map"></a>

執行下列 SQL 命令，建立使用者映射，將聯合伺服器與您的資料來源伺服器建立關聯。在下列範例中，將 *server\$1name* 取代為您要執行作業的遠端伺服器之名稱。這是您在[步驟 1](#db2-federation-homogeneous-create) 中建立的伺服器。將 *username* 和 *password* 取代為此遠端伺服器的憑證。

```
create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
```

如需詳細資訊，請參閱 IBM Db2 文件中的[使用者映射](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings)。

### 步驟 3：檢查連線
<a name="db2-federation-homogeneous-check"></a>

檢查連線，確認已成功設定您的聯合。開啟工作階段，使用 SET PASSTHRU 命令將原生 SQL 命令傳送至遠端資料來源，然後在遠端資料伺服器上建立資料表。

1. 開啟並關閉工作階段，將 SQL 提交至資料來源。在下列範例中，將 *server\$1name* 取代為您在步驟 1 中為聯合建立的伺服器之名稱。

   ```
   set passthru server_name;
   ```

1. 建立新的資料表。在下列範例中，將 *column\$1name*、*data\$1type* 和 *value* 取代為資料表的適當項目。

   ```
   create table table_name ( column_name data_type(value), column_name data_type(value);
   ```

    如需詳細資訊，請參閱 IBM Db2 文件中的 [CREATE TABLE 陳述式](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table)。

1. 建立索引、將資料列的值插入資料表，然後重設連線。重設連線會捨棄連線，但會保留後端程序。在下列範例中，將 *index\$1name*、*table\$1name*、*Column\$1name* 和 *columnx\$1value* 取代為您的資訊。

   ```
   create index index_name on table_name(column_name);
   insert into table_name values(column1_value,column2_value,column3_value);
   insert into table_name values(column1_value,column2_value,column3_value);
   set passthru reset;
   
   connect reset;
   ```

1. 連線至遠端 Db2 資料庫，為您的遠端伺服器建立暱稱，然後執行作業。當您完成存取遠端 Db2 資料庫中的資料時，請重設，然後終止連線。在下列範例中，將 *database\$1name* 取代為遠端 Db2 資料庫的名稱。將 *nickname* 取代為名稱。將 *server\$1name* 和 *table\$1name* 取代為您要在其中執行作業之伺服器的遠端伺服器和資料表的名稱。將 *username* 取代為遠端伺服器的資訊。將 *sql\$1command* 取代為要在遠端伺服器上執行的作業。

   ```
   connect to database_name;
   create nickname nickname for server_name."username"."table_name";
   select sql_command from nickname;
   connect reset;
   terminate;
   ```

**範例**

下列範例會建立傳遞工作階段，以允許聯合伺服器 `testdb10` 上的作業。

接著，它會使用具有不同資料類型的三個資料欄來建立資料表 `t1`。

然後，範例會在資料表 `t1` 的三個資料欄上建立索引 `i1_t1`。隨後，它會插入兩個資料列，其中包含這三個資料欄的值，然後中斷連線。

最後，此範例會連線至遠端 Db2 資料庫 `testdb2`，並在聯合伺服器 `testdb10` 中為資料表` t1`建立暱稱。它會使用該資料來源的使用者名稱 `TESTUSER` 來建立暱稱。SQL 命令會從資料表 `t1` 輸出所有資料。範例隨即中斷連線並結束工作階段。

```
set passthru testdbl0;

create table t1 ( c1 decimal(13,0), c2 char(200), c3 int);

create index i1_t1 on t1(c3);
insert into t1 values(1,'Test',1);
insert into t1 values(2,'Test 2',2);
connect reset;

connect to testdb2;
create nickname remote_t1 for testdbl0."TESTUSER"."T1";
select * from remote_t1;
connect reset;
terminate;
```

## 異質聯合
<a name="db2-federation-heterogeneous"></a>

您可以在 RDS for Db2 資料庫與其他資料來源 (例如 Oracle 和 Microsoft SQL Server) 之間設定異質聯合。如需 Db2 LUW 所支援資料來源的完整清單，請參閱 IBM 支援網站上的 [Db2 LUW V11.5 中綁定的聯合資料來源支援矩陣](https://www.ibm.com/support/pages/data-source-support-matrix-federation-bundled-db2-luw-v115)。

RDS for Db2 異質聯合不支援下列項目：
+ 其他資料來源的原生包裝函式
+ 其他資料來源的 JDBC 包裝函式
+ 聯合到 Sybase、Informix 和 Teradata 資料來源，因為這些資料來源需要在 RDS for Db2 上安裝用戶端軟體

RDS for Db2 異質聯合有下列要求：
+ RDS for Db2 僅支援 ODBC 包裝函式方法。
+ 如果您建立包裝函式的明確定義，則必須將 `DB2_FENCED` 選項設定為 `'N'`。如需 ODBC 有效包裝函式選項的清單，請參閱 IBM Db2 文件中的 [ODBC 選項](https://www.ibm.com/docs/en/db2/11.5?topic=options-odbc)。
+ 您必須允許從 RDS for Db2 主機資料庫到遠端主機資料庫的傳入和傳出流量。如需詳細資訊，請參閱[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

如需有關聯合到 Oracle 的資訊，請參閱 IBM 支援網站上的[如何使用 Db2 聯合和 ODBC 驅動程式查詢 Oracle？](https://www.ibm.com/support/pages/node/6431133)。

如需支援聯合的資料來源詳細資訊，請參閱 IBM 支援網站上的 [Db2 LUW V11.5 中綁定的聯合資料來源支援矩陣](https://www.ibm.com/support/pages/node/957245)。

**Topics**
+ [步驟 1：建立 ODBC 包裝函式](#db2-federation-heteogenous-define-wrapper)
+ [步驟 2：建立聯合伺服器](#db2-federation-heterogeneous-create)
+ [步驟 3：建立使用者映射](#db2-federation-heterogeneous-map)
+ [步驟 4：檢查連線](#db2-federation-heterogeneous-check)

### 步驟 1：建立 ODBC 包裝函式
<a name="db2-federation-heteogenous-define-wrapper"></a>

執行以下命令來建立包裝函式。

```
db2 "create wrapper odbc options( module '/home/rdsdb/sqllib/federation/odbc/lib/libodbc.so')"
```

### 步驟 2：建立聯合伺服器
<a name="db2-federation-heterogeneous-create"></a>

執行以下命令來建立聯合伺服器。在下列範例中，將 *server\$1name* 取代為您要用於聯合的伺服器名稱。將 *wrapper\$1type* 取代為適當的包裝函式。將 *db\$1version* 取代為您遠端資料庫的版本。將 *dns\$1name*、*port* 和 *service\$1name* 取代為您要連線之遠端資料庫的適當值。

```
db2 "create server server_name type wrapper_type version db_version options (HOST 'dns_name', PORT 'port', SERVICE_NAME 'service_name')“
```

如需包裝函式類型的資訊，請參閱 IBM 支援網站上的 [Db2 LUW V11.5 中綁定的聯合資料來源支援矩陣](https://www.ibm.com/support/pages/node/957245)。

**範例**

下列範例會為遠端 Oracle 資料庫建立聯合伺服器。

```
db2 "create server server1 type oracle_odbc version 12.1 options (HOST 'test1.amazon.com', PORT '1521', SERVICE_NAME 'pdborcl.amazon.com')“
```

### 步驟 3：建立使用者映射
<a name="db2-federation-heterogeneous-map"></a>

執行下列 SQL 命令，建立使用者映射，將聯合伺服器與您的資料來源伺服器建立關聯。在下列範例中，將 *server\$1name* 取代為您要執行作業的遠端伺服器之名稱。這是您在[步驟 2](#db2-federation-heterogeneous-create) 中建立的伺服器。將 *username* 和 *password* 取代為此遠端伺服器的憑證。

```
create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
```

如需詳細資訊，請參閱 IBM Db2 文件中的[使用者映射](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings)。

### 步驟 4：檢查連線
<a name="db2-federation-heterogeneous-check"></a>

檢查連線，確認已成功設定您的聯合。開啟工作階段，使用 SET PASSTHRU 命令將原生 SQL 命令傳送至遠端資料來源，然後在遠端資料伺服器上建立資料表。

1. 開啟並關閉工作階段，將 SQL 提交至資料來源。在下列範例中，將 *server\$1name* 取代為您在[步驟 2](#db2-federation-heterogeneous-create) 中為聯合所建立伺服器的名稱。

   ```
   set passthru server_name;
   ```

1. 建立新的資料表。在下列範例中，將 *column\$1name*、*data\$1type* 和 *value* 取代為資料表的適當項目。

   ```
   create table table_name ( column_name data_type(value), column_name data_type(value);
   ```

    如需詳細資訊，請參閱 IBM Db2 文件中的 [CREATE TABLE 陳述式](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table)。

1. 建立索引、將資料列的值插入資料表，然後重設連線。重設連線會捨棄連線，但會保留後端程序。在下列範例中，將 *index\$1name*、*table\$1name*、*Column\$1name* 和 *columnx\$1value* 取代為您的資訊。

   ```
   create index index_name on table_name(column_name);
   insert into table_name values(column1_value,column2_value,column3_value);
   insert into table_name values(column1_value,column2_value,column3_value);
   set passthru reset;
   
   connect reset;
   ```

1. 連線至遠端 Db2 資料庫，為您的遠端伺服器建立暱稱，然後執行作業。當您完成存取遠端 Db2 資料庫中的資料時，請重設，然後終止連線。在下列範例中，將 *database\$1name* 取代為遠端 Db2 資料庫的名稱。將 *nickname* 取代為名稱。將 *server\$1name* 和 *table\$1name* 取代為您要在其中執行作業之伺服器的遠端伺服器和資料表的名稱。將 *username* 取代為遠端伺服器的資訊。將 *sql\$1command* 取代為要在遠端伺服器上執行的作業。

   ```
   connect to database_name;
   create nickname nickname for server_name."username"."table_name";
   select sql_command from nickname;
   connect reset;
   terminate;
   ```

**範例**

下列範例會建立傳遞工作階段，以允許聯合伺服器 `testdb10` 上的作業。

接著，它會使用具有不同資料類型的三個資料欄來建立資料表 `t1`。

然後，範例會在資料表 `t1` 的三個資料欄上建立索引 `i1_t1`。隨後，它會插入兩個資料列，其中包含這三個資料欄的值，然後中斷連線。

最後，此範例會連線至遠端 Db2 資料庫 `testdb2`，並在聯合伺服器 `testdb10` 中為資料表` t1`建立暱稱。它會使用該資料來源的使用者名稱 `TESTUSER` 來建立暱稱。SQL 命令會從資料表 `t1` 輸出所有資料。範例隨即中斷連線並結束工作階段。

```
set passthru testdbl0;

create table t1 ( c1 decimal(13,0), c2 char(200), c3 int);

create index i1_t1 on t1(c3);
insert into t1 values(1,'Test',1);
insert into t1 values(2,'Test 2',2);
connect reset;

connect to testdb2;
create nickname remote_t1 for testdbl0."TESTUSER"."T1";
select * from remote_t1;
connect reset;
terminate;
```

# 使用適用於 Amazon RDS for Db2 的複本
<a name="db2-replication"></a>

RDS for Db2 支援建立複本資料庫，以提供讀取擴展和災難復原功能。您可以透過兩種模式建立複本：用於卸載讀取工作負載的唯讀複本，以及用於跨區域災難復原的待命複本。RDS for Db2 使用 IBM Db2 高可用性災難復原 (HADR) 技術進行複寫。如需詳細資訊，請參閱 IBM Db2 文件中的[高可用性災難復原 (HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)。

*Db2 複本*資料庫是主要資料庫的實體複本。唯讀模式中的 Db2 複本稱為*僅供讀取複本*。待命模式中的 Db2 複本稱為*待命複本*。Db2 不允許在複本中寫入，但是您可以升級複本以使其可寫入。提升的複本會將複製的資料置於提升請求提出的時機。如需詳細資訊，請參閱[提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)。

如需 RDS for Db2 複本的功能和行為摘要，請參閱 [資料庫引擎的僅供讀取複本之間的差異](USER_ReadRepl.Overview.Differences.md)。

## 唯讀和待命複本
<a name="db2-read-replicas.overview.modes"></a>

建立或修改 Db2 複本時，您可以將其置於下列任一模式中：

**唯讀**  
這是預設值。HADR 會將來源資料庫的變更傳輸並套用至所有僅供讀取複本資料庫。對於唯讀複本，Db2 環境變數 `DB2_HADR_ROS` 設定為 `ON`。複本資料庫上讀取查詢的隔離層級為 `Uncommitted Read`。如需詳細資訊，請參閱 IBM Db2 文件中[作用中待命資料庫的隔離層級](https://www.ibm.com/docs/en/db2/11.5?topic=standby-isolation-level-active-database)。  
如需套用至所有資料庫引擎之僅供讀取複本的一般資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。如需有關 Db2 HADR 的詳細資訊，請參閱 IBM Db2 文件中的[高可用性災難復原 (HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)。

 **待命**  
對於待命複本，Db2 環境變數 `DB2_HADR_ROS` 設定為 `OFF`，使複本資料庫不接受使用者連線。待命複本的主要用途是跨區域災難復原。  
待命複本無法提供唯讀工作負載。待命複本沒有任何封存日誌。

單一來源資料庫執行個體可建立至多三個複本。您可以為相同的來源資料庫執行個體建立唯讀和待命資料庫複本的組合。建立複本之後，您可以變更複本模式。如需詳細資訊，請參閱 [修改 RDS for Db2 複本模式](db2-replicas-changing-replica-mode.md)。

建立複本之前，請確定您符合所有需求。如需詳細資訊，請參閱[RDS for Db2 複本的要求與考量](db2-read-replicas.limitations.md)。

## 資料庫啟用
<a name="db2-read-replicas.overview.database-activations"></a>

Db2 HADR 是在資料庫層級設定。建立複本之後，會為所有 Db2 資料庫設定 HADR，包括 RDS 完全管理的 `rdsadmin`。建立 Db2 複本之前，您必須明確啟用所有資料庫。否則，複本建立會失敗，Amazon RDS 會發出事件。資料庫執行個體有一或多個複本之後，您就無法使用 `rdsadmin.activate_database` 或 `rdsadmin.deactivate_database` 預存程序來啟用或停用資料庫執行個體上的任何資料庫。如需詳細資訊，請參閱[RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)。

## HADR 組態
<a name="db2-read-replicas.overview.hadr-configurations"></a>

您可以連線至資料庫，然後執行 `db2 get db cfg`，以查看資料庫的所有 HADR 組態。

## 封存日誌保留
<a name="db2-read-replicas.overview.log-retention"></a>

滿足下列條件後，Amazon RDS 會從主要資料庫執行個體清除日誌：
+ 日誌至少已有兩個小時。
+ 已超過封存日誌保留時數的設定。
+ 封存日誌已成功複寫至所有複本資料庫執行個體。此條件同時適用於相同 中的資料庫執行個體 AWS 區域 和跨區域資料庫執行個體。

如需設定封存記錄保留時數的相關資訊，請參閱[rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)。

Amazon RDS 會個別檢查及清除每個資料庫。如果資料庫遺失 HADR 連線，或無法使用連線的相關資訊，則 Amazon RDS 會略過資料庫，而不會清除封存日誌。

## Db2 複寫期間的中斷
<a name="db2-read-replicas.overview.outages"></a>

建立複本時，Amazon RDS 會對來源資料庫執行個體建立資料庫快照，接著開始複寫。當資料庫快照作業開始時，來源資料庫執行個體會經歷非常短暫的 I/O 暫停。I/O 暫停通常持續約一秒。不過，如果來源資料庫執行個體是多可用區域部署，則來源資料庫執行個體不會遇到任何 I/O 暫停。這是因為使用多可用區域部署時，會從次要資料庫執行個體擷取快照。

資料庫快照會成為 Db2 複本。Amazon RDS 會為來源資料庫和複本設定必要的參數和權限，而不會發生任何服務中斷。同樣地，如果您刪除複本，也不會發生中斷。

# RDS for Db2 複本的要求與考量
<a name="db2-read-replicas.limitations"></a>

Db2 複本需求分為數個類別：授權和版本控制、備份和還原考量、複寫行為，以及一般作業考量。建立 Db2 複本之前，請先深入了解下列要求與注意事項。

## RDS for Db2 複本的版本和授權需求
<a name="db2-read-replicas.limitations.versions-and-licenses"></a>

建立 RDS for Db2 複本之前，關版請檢閱下列有本和授權模型的資訊：
+ **支援的版本** – 所有 Db2 11.5 版本都支援複本資料庫執行個體。

  來源和複本資料庫執行個體必須使用相同的主要版本。Db2 複本支援次要版本升級，但不支援主要版本升級。如需與升級資料庫執行個體的相關資訊，請參閱 [升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。
**注意**  
升級來源資料庫執行個體時，所有複本都會自動升級，以維持版本相容性。
+ **有效的授權模型和複本模式** – Db2 Advanced Edition (AE) 和 Standard Edition (SE) 都可以透過 AWS Marketplace 模型以唯讀或待命模式為自有授權 (BYOL) 模型和 Db2 授權建立複本。
+ **自訂參數群組** – 您必須為複本指定自訂參數群組。

  對於使用 BYOL 模型的複本，此自訂參數群組必須包含您的 IBM Site ID 和 IBM Customer ID。如需詳細資訊，請參閱[Db2 的自帶授權 (BYOL) IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。您可以使用 AWS 管理主控台、 或 RDS API AWS CLI ，為複本指定此自訂參數群組。
+ **vCPU 計數**因複本模式和授權模型而異：
  + 無論資料庫執行個體大小為何，**待命複本**一律使用兩個 vCPU。
    + **BYOL 模型** – AWS License Manager 組態顯示 RDS for Db2 資料庫執行個體使用兩個 vCPU。
    + **透過 AWS Marketplace 模型的 Db2 授權** – 帳單反映兩個 vCPU 的授權成本。
  + **唯讀複本**使用與資料庫執行個體大小相同的 vCPU 計數。
    + **BYOL 模型** – AWS License Manager 組態顯示 RDS for Db2 資料庫執行個體使用符合資料庫執行個體大小的相同數量 vCPU。
    + **透過 AWS Marketplace 模型取得的 Db2 授權** – 帳單反映符合資料庫執行個體大小的相同 vCPU 數量的授權成本。

## RDS for Db2 複本的備份與還原考量
<a name="db2-read-replicas.limitations.backups"></a>

複本備份的行為與主要資料庫備份不同。請考慮下列備份和還原需求：
+ 若要建立 RDS for Db2 複本的快照或開啟自動備份，請務必手動設定備份保留期間。根據預設，不會啟用自動備份。
+ 當您還原複本備份時，會還原到資料庫時間，而不是開始備份的時間。資料庫時間指備份中資料最近套用的交易時間。其中的差異非常明顯，因為複本的時間可能會延後主要資料庫幾分鐘或幾小時。有多個資料庫時，RDS for Db2 會使用最早的資料庫時間。

  若要尋找差異，請執行 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 命令或呼叫 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 操作。將 `SnapshotDatabaseTime` 值與 `OriginalSnapshotCreateTime` 值進行比較。`SnapshotDatabaseTime` 值是複本備份的資料庫時間。`OriginalSnapshotCreateTime` 值是主要資料庫上最新套用的交易。

如需備份和還原備份的詳細資訊，請參閱 [使用 RDS for Db2 複本備份](db2-read-replicas.backups.md)。

## RDS for Db2 複本的複寫考量
<a name="db2-read-replicas.limitations.replication"></a>

Db2 複本使用具有特定限制和行為的 HADR 技術。請檢閱下列複寫注意事項：
+ 複寫會對 RDS for Db2 資料庫執行個體上的所有資料庫使用 Db2 HADR。
+ 複寫不支援 `LOAD` 命令。如果您從來源資料庫執行個體執行 `LOAD` 命令，將會收到不一致的資料。
+ RDS for Db2 不會複寫下列項目：
  + 儲存體存取。請注意依賴儲存體存取的資料，例如外部資料表。
  + 未記錄的非內嵌 LOBs。
  + 外部預存程序的二進位檔 (使用 C 或 Java)。
+ 對於待命複本，RDS for Db2 會複寫下列項目：
  + 本機使用者，主要使用者除外
  + 資料庫組態參數
+ 對於唯讀複本，RDS for Db2 會複寫下列項目：
  + 本機使用者，主要使用者除外
  + SID 群組映射

## RDS for Db2 複本的其他事項考量
<a name="db2-read-replicas.limitations.miscellaneous"></a>

其他作業考量適用於 Db2 複本。檢閱下列項目：
+ RDS for Db2 會將資料庫組態複寫到複本。當 RDS for Db2 提升複本時，它會停用並啟用每個資料庫。
+ RDS for Db2 會複寫本機使用者，但不會複寫主要使用者，以及將 SID 群組映射複寫到複本。您可以在複本上修改主要使用者。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 所有資料庫都必須處於作用中狀態。如需啟用資料庫的相關資訊，請參閱 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)。
+ 建立複本之前，必須先完成建立、捨棄、還原或滾動資料庫的所有預存程序。如需有關這些預存程序的詳細資訊，請參閱 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)。
+ 建立複本時，Amazon RDS 會將來源資料庫執行個體上所有資料庫的資料庫層級參數 `blocknonlogged` 設定為 `YES`。當來源複本再次成為獨立執行個體時，Amazon RDS 會將值設回 `NO`。如需詳細資訊，請參閱 IBM Db2 文件中的[區塊非記錄 - 區塊建立允許非記錄活動組態參數的資料表](https://www.ibm.com/docs/en/db2/11.1?topic=dcp-blocknonlogged-block-creation-tables-that-allow-non-logged-activity)。
+ 建立複本時，Amazon RDS 會將來源資料庫執行個體上所有資料庫的資料庫層級參數 `logindexbuild` 設定為 `YES`。當來源複本再次成為獨立執行個體時，Amazon RDS 會將值設回 `NO`。如需詳細資訊，請參閱 IBM Db2 文件中的 [logindexbuild - 日誌索引頁面建立的組態參數](https://www.ibm.com/docs/en/db2/11.1?topic=parameters-logindexbuild-log-index-pages-created)。

# 準備建立 RDS for Db2 複本
<a name="db2-read-replicas.Configuration"></a>

建立 RDS for Db2 複本之前，您必須先完成下列任務才能成功複寫。這些任務有助於防止常見問題，並確保最佳效能。

## 任務 1：啟用自動備份
<a name="db2-read-replicas.configuration.autobackups"></a>

當您將資料庫執行個體作為來源資料庫執行個體之前，您必須在來源資料庫執行個體上啟用自動備份。這是所有複本建立作業的先決條件。若要了解如何執行此程序，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

如需 Db2 複本特定備份的相關資訊，請參閱 [使用 RDS for Db2 複本備份](db2-read-replicas.backups.md)。

## 任務 2：規劃運算和儲存資源
<a name="db2-read-replicas.configuration.planning-resources"></a>

確保資料庫執行個體及複本都依照運算和儲存適當的調整大小，以搭配工作負載。如複本達到運算、網路或儲存資源上限時，複本會停止接受或套用來源的變更。如需監控複本效能和資源使用率的相關資訊，請參閱 [監控僅供讀取複本](USER_ReadRepl.Monitoring.md)。

RDS for Db2 的來源資料庫執行個體與其複本之間不會相互干涉，以降低複寫時的高延遲。如果您遇到高複本延遲，請參閱 [監控 Db2 複寫延遲](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag) 以取得故障診斷指引。

您可以從來源和其他複本獨立修改複本的儲存和 CPU 資源。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 任務 3：準備資料庫
<a name="db2-read-replicas.configuration.activate-databases"></a>

建立複本之前，請根據下列幾點確認您的資料庫已就緒：
+ 資料庫執行個體包含您想要出現在資料庫執行個體上的所有資料庫。建立複本後，您無法在資料庫執行個體上建立、捨棄或原生還原資料庫。對 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)、[rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 或 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 預存程序的任何呼叫都會失敗。
+ 資料庫執行個體上的所有資料庫都處於作用中狀態。如果任何資料庫處於非作用中狀態，複本建立將會失敗。如需啟用資料庫的相關資訊，請參閱 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)。

## 後續步驟
<a name="db2-read-replicas-configuration-next-steps"></a>

完成所有準備任務後，您就可以建立 Db2 複本。
+ 若要建立唯讀複本，請參閱 [建立僅供讀取複本](USER_ReadRepl.Create.md)。
+ 若要建立待命複本，請參閱 [建立待命 Db2 複本](db2-read-replicas.creating-in-standby-mode.md)。

# 在待命模式中建立 RDS for Db2 複本
<a name="db2-read-replicas.creating-in-standby-mode"></a>

根據預設，會以唯讀模式建立 Db2 複本。您可以在待命模式中建立複本，以用於災難復原。待命複本不接受使用者連線，但可為跨區域案例提供更快的容錯移轉功能。

在建立待命複本之前，請確定您已完成準備任務。如需詳細資訊，請參閱[準備建立 RDS for Db2 複本](db2-read-replicas.Configuration.md)。建立待命複本之後，您可以變更複本模式。如需詳細資訊，請參閱[修改 RDS for Db2 複本模式](db2-replicas-changing-replica-mode.md)。

您可以使用 AWS 管理主控台、 AWS CLI或 RDS API 建立待命複本。如需建立唯讀複本的詳細資訊，請參閱 [建立僅供讀取複本](USER_ReadRepl.Create.md)。

## 主控台
<a name="db2-read-replicas.creating-in-standby-mode.console"></a>

**從來源 RDS for Db2 資料庫執行個體建立待命複本**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇要作為待命複本來源的 RDS for Db2 資料庫執行個體。

1. 在 **Actions** (動作) 中，選擇 **Create replica** (建立複本)。

1. 針對**複本模式**，選擇**待命**。

1. 選擇您想要使用的設定。針對**資料庫執行個體識別符**，輸入待命複本的名稱。視需要調整其他設定。

1. 針對**區域**，選擇將啟動待命複本 AWS 區域 的 。

1. 選擇您的執行個體大小和儲存體類型。建議您使用與待命複本來源資料庫執行個體相同的資料庫執行個體類別和儲存類型。

1. 針對**多可用區域部署**，選擇**建立待命執行個體**，以在另一個可用區域中，建立複本的待命複本，以便支援待命複本。

1. 選擇您想要使用的其他設定。

1. 選擇 **Create replica (建立複本)**。

在**資料庫**頁面中，待命複本具有角色**複本**。

## AWS CLI
<a name="db2-read-replicas.creating-in-standby-mode.cli"></a>

若要在待命模式中建立 Db2 複本，請使用 AWS CLI 命令 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)，並將 `--replica-mode`設定為 `mounted`。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier my_standby_replica \
    --source-db-instance-identifier my_db_instance \
    --replica-mode mounted
```
在 Windows 中：  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier my_standby_replica ^
    --source-db-instance-identifier my_db_instance ^
    --replica-mode mounted
```

## RDS API
<a name="db2-read-replicas.creating-in-standby-mode.api"></a>

若要在待命模式中建立 Db2 複本，請在 RDS API 作業 [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 中指定 `ReplicaMode=mounted`。

# 修改 RDS for Db2 複本模式
<a name="db2-replicas-changing-replica-mode"></a>

您可以在唯讀與待命模式之間變更現有 Db2 複本的複本模式。此彈性可讓您根據讀取工作負載或災難復原需求不斷變化的需求來調整複本組態。

在下列案例中，您可能想要變更複本模式：
+ **唯讀轉換為待命** – 當您不再需要讀取容量，但想要維護災難復原功能時
+ **待命轉換為唯讀** – 當您需要為報告或分析工作負載新增讀取容量時

變更複本模式之前，請確定符合下列條件：
+ 複本處於可用狀態。
+ 沒有任何作用中的維護作業在複本上執行。
+ 您擁有修改資料庫執行個體的必要許可。

變更作業可能需要幾分鐘的時間。在作業期間，資料庫執行個體狀態會變更為 **modifying (正在修改)**。如需狀態變更的詳細資訊，請參閱[在 Amazon RDS 資料庫執行個體狀態](accessing-monitoring.md#Overview.DBInstance.Status)。當您從唯讀變更為待命模式時，複本會中斷所有作用中的連線。

**重要**  
由於變更複本模式會暫時中斷服務，因此請在維護時段期間規劃變更，將對應用程式的影響降至最低。

您可以使用 AWS 管理主控台 AWS CLI、 或 RDS API 修改複本模式。

## 主控台
<a name="db2-replicas-changing-replica-mode-console"></a>

**變更 Db2 複本的複本模式**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要修改的複本資料庫。

1. 選擇 **Modify** (修改)。

1. 針對**複本模式**，選擇所需的模式：
   + **唯讀** – 適用於讀取工作負載
   + **待命** – 適用於災難復原

1. 選擇您想要變更的其他設定。

1. 選擇 **Continue (繼續)**。

1. 在 **Scheduling of modifications** (修改排程) 中，選擇 **Apply immediately** (立即套用)。

1. 選擇 **Modify DB instance (修改資料庫執行個體)**。

1. 修改完成後，請在**資料庫**頁面中驗證複本模式變更。變更完成時，複本狀態應會顯示為**可用**。

## AWS CLI
<a name="db2-replicas-changing-replica-mode-cli"></a>

若要將 Db2 複本從唯讀模式變更為待命模式，請在 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令`mounted`中將 `--replica-mode` 設為 。若要將 Db2 複本從待命模式變更為唯讀模式，請將 `--replica-mode` 設定為 `open-read-only`。

下列範例會將複本從唯讀模式變更為待命模式：

**Example**  
在 Linux、macOS 或 Unix 中：  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode mounted
```
在 Windows 中：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode mounted
```

下列範例會將複本從待命模式變更為唯讀模式：

**Example**  
在 Linux、macOS 或 Unix 中：  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode open-read-only
```
在 Windows 中：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode open-read-only
```

## RDS API
<a name="db2-replicas-changing-replica-mode-api"></a>

若要將 Db2 複本從唯讀模式變更為待命模式，請在 [ModifyDBInstance](AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 中設定 `ReplicaMode=mounted`。若要將 Db2 複本從待命模式變更為唯讀模式，請設定 `ReplicaMode=open-read-only`。

以下是將複本模式從唯讀變更為待命的範例 API 呼叫：

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "mounted",
    "ApplyImmediately": true
}
```

以下是將複本模式從待命變更為唯讀的範例 API 呼叫：

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "open-read-only",
    "ApplyImmediately": true
}
```

如需有關複本模式之間差異的相關資訊，請參閱 [使用適用於 Amazon RDS for Db2 的複本](db2-replication.md)。如需對複本問題進行故障診斷，請參閱 [針對 RDS for Db2 複寫問題進行故障診斷](db2-troubleshooting-replicas.md)。

# 使用 RDS for Db2 複本備份
<a name="db2-read-replicas.backups"></a>

您可以建立及還原 RDS for Db2 複本的備份，就像主要資料庫一樣。不過，複本備份的運作方式有重大差異，尤其是有關還原時間與備份保留設定。

RDS for Db2 支援複本的自動備份和手動快照。RDS for Db2 不支援時間點還原。如需 RDS 備份的相關資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

## 複本備份的主要差異
<a name="db2-read-replicas-backups-overview"></a>

複本備份在幾個重要方面與主要資料庫備份不同：
+ 預設不會啟用複本的自動備份。
+ 還原作業使用資料庫時間，而不是備份建立時間。
+ 複本延遲可能會影響還原的實際資料。如需有關監控複本延遲的相關資訊，請參閱 [監控 Db2 複寫延遲](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag)。

## 啟用 RDS for Db2 複本的自動備份
<a name="db2-read-replicas.backups.turning-on"></a>

與主要資料庫不同，RDS for Db2 複本預設不會啟用自動備份。您必須手動設定備份保留期，才能啟用自動備份。將備份保留期間設定為正的非零值以啟用自動備份。

### 主控台
<a name="db2-read-replicas.backups.turning-on-console"></a>

**立即啟用自動備份**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 針對**備份保留期間**，選擇非零正值，例如三天。

1. 選擇 **Continue (繼續)**。

1. 選擇 **Apply immediately** (立即套用)。

1. 選擇**修改資料庫執行個體**以儲存您的變更並啟用自動備份。

### AWS CLI
<a name="db2-read-replicas.backups.turning-on-cli"></a>

若要啟用自動備份，請使用 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令。

包含以下參數：
+ `--db-instance-identifier`
+ `--backup-retention-period`
+ `--apply-immediately` 或 `--no-apply-immediately` \$1

以下範例透過將備份保留期間設定為三天來啟用自動備份。變更會立即套用。

**Example**  
在 Linux、macOS 或 Unix 中：  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
在 Windows 中：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

### RDS API
<a name="db2-read-replicas.backups.turning-on-api"></a>

若要啟用自動備份，請使用 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 作業，其中包含下列必要參數：
+ `DBInstanceIdentifier`
+ `BackupRetentionPeriod`

## 還原 RDS for Db2 複本備份
<a name="db2-read-replicas.backups.restoring"></a>

您可以還原 RDS for Db2 複本備份，方法與還原主要資料庫備份的方式相同。如需詳細資訊，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

還原複本備份時最重要的考量，是了解資料庫時間與備份建立時間之間的差異，尤其是存在複本延遲時。

您可以監控複寫延遲，並確保備份包含預期的資料。如需 ReplicaLag 指標的相關資訊，請參閱 [Amazon RDS 的 Amazon CloudWatch 指標](rds-metrics.md)。

### 了解計時差異
<a name="db2-read-replicas-backups-restoring-timing"></a>

還原複本備份時，您必須決定要還原的時間點。資料庫時間指備份中資料最近套用的交易時間。還原複本備份時，您會還原到資料庫時間，而不是備份完成的時間。其中的差異非常明顯，因為複本的時間可能會延後主要資料庫幾分鐘或幾小時。因此，複本備份的資料庫時間可能遠早於快照建立時間。

若要尋找資料庫時間與建立時間之間的差異，請執行 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 命令或呼叫 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 作業。比較 `SnapshotDatabaseTime` 值和 `OriginalSnapshotCreateTime` 值。`SnapshotDatabaseTime` 值是複本備份的所有資料庫中最早的資料庫時間。`OriginalSnapshotCreateTime` 值是主要資料庫上最新套用的交易。請注意，多個資料庫的複寫延遲可能不同，而資料庫時間可能介於這兩個時間之間。

下列 AWS CLI 範例顯示兩次之間的差異：

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-snapshots \
    --db-instance-identifier my_db2_replica \
    --db-snapshot-identifier my_replica_snapshot
```

在 Windows 中：

```
aws rds describe-db-snapshots ^
    --db-instance-identifier my_db2_replica ^
    --db-snapshot-identifier my_replica_snapshot
```

此命令會產生類似下列範例的輸出。

```
{
    "DBSnapshots": [
        {
            "DBSnapshotIdentifier": "my_replica_snapshot",
            "DBInstanceIdentifier": "my_db2_replica", 
            "SnapshotDatabaseTime": "2022-07-26T17:49:44Z",
            ...
            "OriginalSnapshotCreateTime": "2021-07-26T19:49:44Z"
        }
    ]
}
```

# 針對 RDS for Db2 複寫問題進行故障診斷
<a name="db2-troubleshooting-replicas"></a>

本主題說明常見的 RDS for Db2 複寫問題，並提供唯讀和待命複本的故障診斷指引。除了檢閱下列故障診斷資訊之外，請確定您遵循[需求和考量](db2-read-replicas.limitations.md)，並在建立 Db2 複本之前，完成[準備步驟](db2-read-replicas.Configuration.md)。

## 複本建立失敗
<a name="db2-troubleshooting-replicas-creation"></a>



建立複本可能會失敗，原因如下：
+ **非作用中資料庫** – 來源資料庫執行個體上的所有資料庫都必須處於作用中狀態後，才能建立複本。

  如需啟用資料庫的相關資訊，請參閱 [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)。
+ **缺少自動備份** – 來源資料庫執行個體必須啟用自動備份。

  如需啟用備份的詳細資訊，請參閱 [啟用 RDS for Db2 複本的自動備份](db2-read-replicas.backups.md#db2-read-replicas.backups.turning-on)。
+ **參數群組問題** – 複本需要自訂參數群組。對於 BYOL 授權，參數群組必須包含 IBM Site ID 和 IBM Customer ID。

  如需詳細資訊，請參閱[Db2 的自帶授權 (BYOL) IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。

## 監控 Db2 複寫延遲
<a name="db2-troubleshooting-replicas-lag"></a>

若要在 Amazon CloudWatch 中監控複寫延遲，請檢視 Amazon RDS `ReplicaLag` 指標。如需複寫延遲時間的更多資訊，請參閱 [監控僅供讀取複本](USER_ReadRepl.Monitoring.md) 和 [Amazon RDS 的 Amazon CloudWatch 指標](rds-metrics.md)。如需為複本延遲設定 CloudWatch 警示的詳細資訊，請參閱 [使用 Amazon CloudWatch 監控 Amazon RDS 指標](monitoring-cloudwatch.md)。

對於唯讀複本，如果延遲時間太長，請查詢 `MON_GET_HADR` 資料表，以取得複本資料庫執行個體的狀態。

對於待命複本，如果延遲時間太長，請查詢 `MON_GET_HADR` 資料表，以取得來源資料庫執行個體的狀態。請勿查詢複本資料庫執行個體，因為複本資料庫執行個體不接受使用者連線。

高複寫延遲的常見原因包括下列原因：
+ 複本上的運算資源不足
+ 來源與複本之間的網路連線問題
+ 來源資料庫上的高寫入活動
+ 複本上的儲存效能限制

如果高複寫延遲持續存在，請考慮擴展複本資源。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## Db2 複寫錯誤
<a name="db2-troubleshooting-replicas-triggers"></a>

Db2 複寫可能因各種原因而處於錯誤狀態。執行下列動作：
+ 監控事件和資料庫執行個體狀態，以確保資料庫執行個體正在複寫。

  如需詳細資訊，請參閱[使用 Amazon RDS 事件通知](USER_Events.md)。
+ 在 Amazon RDS 主控台中檢查 Db2 複本的診斷日誌。在日誌中，尋找 HADR 訊息中的錯誤。將日誌序列號與主序列號進行比較。

  如需存取及解譯 Db2 診斷日誌的相關資訊，請參閱 [Amazon RDS for Db2 資料庫日誌檔案](USER_LogAccess.Concepts.Db2.md)。如需 Db2 HADR 組態和故障診斷的相關資訊，請參閱 [使用適用於 Amazon RDS for Db2 的複本](db2-replication.md)。

如果複寫錯誤持續存在，您可能需要重新建立複本。

## 連線問題
<a name="db2-troubleshooting-replicas-connections"></a>

如果您無法連線至複本，請檢閱下列複本模式的相關資訊：
+ **待命複本** – 依設計不接受使用者連線。針對讀取工作負載使用唯讀複本。
+ **唯讀複本** – 檢查您的安全群組設定、網路 ACL 和參數群組組態。

  如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用安全群組控制 AWS 資源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)、《Amazon VPC 使用者指南》**中的[使用網路存取控制清單控制子網路流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)，以及 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

## 效能問題
<a name="db2-troubleshooting-replicas-performance"></a>

如果複本效能不佳，請檢閱下列建議：
+ 確保複本具有足夠的運算和儲存資源。
+ 在 Amazon CloudWatch 中監控 `ReplicaLag` 指標。
+ 考慮擴展複本資料庫執行個體類別。

如需修改資源或執行個體類別的相關資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

如需監控複本延遲的資訊，請參閱 [監控複寫延遲](USER_ReadRepl.Monitoring.md#USER_ReadRepl.Monitoring.Lag) 和 [Amazon RDS 的 Amazon CloudWatch 指標](rds-metrics.md)。如需為複本延遲設定 CloudWatch 警示的詳細資訊，請參閱 [使用 Amazon CloudWatch 監控 Amazon RDS 指標](monitoring-cloudwatch.md)。

# Amazon RDS for Db2 資料庫執行個體的選項
<a name="Db2.Options"></a>

以下顯示可供執行 Db2 資料庫引擎之 Amazon RDS 執行個體使用的選項或其他功能。若要啟用這些選項，您可以將它們新增至自訂選項群組，然後使選項群組與您的資料庫執行個體產生關聯。如需使用選項群組的相關詳細資訊，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。

Amazon RDS 支援 Db2 的下列選項：


| 選項 | 選項 ID | 
| --- | --- | 
|  [Db2 稽核記錄](Db2.Options.Audit.md)  |  `DB2_AUDIT`  | 

# Db2 稽核記錄
<a name="Db2.Options.Audit"></a>

Amazon RDS 會使用 Db2 稽核記錄來記錄資料庫活動，包含登入資料庫的使用者，以及針對資料庫執行的查詢。RDS 會使用您提供的 AWS Identity and Access Management (IAM) 角色，將完成的稽核日誌上傳至 Amazon S3 儲存貯體。

**Topics**
+ [設定 Db2 稽核記錄](#db2-audit-setting-up)
+ [管理 Db2 稽核記錄](#db2-audit-managing)
+ [檢視稽核日誌](#db2-audit-viewing-logs)
+ [針對 Db2 稽核記錄日誌進行故障診斷](#db2-audit-troubleshooting)

## 設定 Db2 稽核記錄
<a name="db2-audit-setting-up"></a>

若要啟用 Amazon RDS for Db2 資料庫的稽核記錄，請在 RDS for Db2 資料庫執行個體上啟用 `DB2_AUDIT` 選項。然後，設定稽核政策以啟用特定資料庫的功能。若要在 RDS for Db2 資料庫執行個體上啟用選項，您可以設定 `DB2_AUDIT` 選項的選項設定。您可以透過提供 Amazon S3 儲存貯體的 Amazon Resource Name (ARN) 和具有存取儲存貯體許可的 IAM 角色來執行此作業。

若要設定 RDS for Db2 資料庫的 Db2 稽核記錄，請完成下列步驟。

**Topics**
+ [步驟 1：建立 Amazon S3 儲存貯體](#db2-audit-create-s3-bucket)
+ [步驟 2：建立 IAM 政策](#db2-audit-create-iam-policy)
+ [步驟 3：建立 IAM 角色並附加您的 IAM 政策](#db2-audit-create-iam-role)
+ [步驟 4：設定 Db2 稽核記錄的選項群組](#db2-audit-configure-options-group)
+ [步驟 5：設定稽核政策](#db2-audit-configure-audit-policy)
+ [步驟 6：檢查稽核組態](#db2-audit-check-config-status)

### 步驟 1：建立 Amazon S3 儲存貯體
<a name="db2-audit-create-s3-bucket"></a>

如果您尚未這麼做，請建立 Amazon S3 儲存貯體，讓 Amazon RDS 可以上傳 RDS for Db2 資料庫的稽核日誌檔案。下列限制適用於使用為稽核檔案目標的 S3 儲存貯體︰
+ 它必須與 AWS 區域 RDS for Db2 資料庫執行個體位於相同的 中。
+ 它不可以開放給大眾使用。
+ 儲存貯體擁有者也必須是 IAM 角色擁有者。

若要了解如何建立 Amazon S3 儲存貯體，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

啟用稽核記錄之後，Amazon RDS 會自動將日誌從您的資料庫執行個體傳送至下列位置：
+ 資料庫執行個體層級日誌 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/`
+ 資料庫層級日誌 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/`

請記下儲存貯體的 Amazon Resource Name (ARN)。需要這項資訊才能完成後續步驟。

### 步驟 2：建立 IAM 政策
<a name="db2-audit-create-iam-policy"></a>

建立具有將稽核日誌檔案從資料庫執行個體傳輸至 Amazon S3 儲存貯體所需之許可的 IAM 政策。此步驟假設您擁有 S3 儲存貯體。

在您建立政策之前，請收集下列資訊：
+ 您儲存貯體的 ARN。
+ 如果您的儲存貯體使用SSE-KMS加密，則為您的 AWS Key Management Service (AWS KMS) 金鑰的 ARN。

建立包含下列許可的 IAM 政策：

```
"s3:ListBucket",
 "s3:GetBucketAcl",
 "s3:GetBucketLocation",
 "s3:PutObject",
 "s3:ListMultipartUploadParts",
 "s3:AbortMultipartUpload",
 "s3:ListAllMyBuckets"
```

**注意**  
Amazon RDS 需要在內部執行 `s3:ListAllMyBuckets`動作，以確認相同的 同時 AWS 帳戶 擁有 S3 儲存貯體和 RDS for Db2 資料庫執行個體。

如果您的儲存貯體使用SSE-KMS加密，請同時包含 IAM 角色和 AWS KMS 金鑰的下列許可。

將下列許可納入 IAM 角色的政策。

```
"kms:GenerateDataKey",
 "kms:Decrypt"
```

將下列許可納入金鑰的 AWS KMS 金鑰政策。使用您的帳戶號碼取代 *111122223333*，再以您的叢集 IAM 角色名稱取代 *AROA123456789EXAMPLE*。

```
{
  "Sid": "Allow RDS role to use the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:sts::111122223333:assumed-role/AROA123456789EXAMPLE/RDS-Db2Audit",
      "arn:aws:iam::111122223333:role/AROA123456789EXAMPLE"
    ]
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```

您可以使用 AWS 管理主控台 或 () 建立 IAM AWS Command Line Interface 政策AWS CLI。

#### 主控台
<a name="db2-audit-create-iam-policy-console"></a>

**建立 IAM 政策以允許 Amazon RDS 存取您的 Amazon S3 儲存貯體**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇**建立政策**，然後選擇 **JSON**。

1. 在**新增動作**中，依 **S3** 篩選。新增存取 **ListBucket**、**GetBucketAcl** 和 **GetBucketLocation**。

1. 針對**新增資源**，選擇**新增**。針對**資源類型**，選擇**儲存貯體**，然後輸入儲存貯體的名稱。然後，選擇**新增資源**。

1. 選擇**新增新陳述式**。

1. 在**新增動作**中，依 **S3** 篩選。新增存取 **PutObject**、**ListMultipartUploadParts** 和 **AbortMultipartUpload**。

1. 針對**新增資源**，選擇**新增**。針對**資源類型**，選擇**物件**，然後輸入*您的儲存貯體名稱/\$1*。然後，選擇**新增資源**。

1. 選擇**新增新陳述式**。

1. 在**新增動作**中，依 **S3** 篩選。新增存取 **ListAllMyBuckets**。

1. 針對**新增資源**，選擇**新增**。針對**資源類型**，選擇**所有資源**。然後，選擇**新增資源**。

1. 如果您使用自己的 KMS 金鑰來加密資料：

   1. 選擇**新增新陳述式**。

   1. 在**新增動作**中，依 KMS 篩選。新增存取 **GenerateDataKey** 和 **Decrypt**。

   1. 針對**新增資源**，選擇**新增**。針對**資源類型**，選擇**所有資源**。然後，選擇**新增資源**。

1. 選擇**下一步**。

1. 在**政策名稱**中，輸入此政策的名稱。

1. (選用) 在**說明**中，輸入此政策的說明。

1. 選擇**建立政策**。

#### AWS CLI
<a name="db2-audit-create-iam-policy-cli"></a>

**建立 IAM 政策以允許 Amazon RDS 存取您的 Amazon S3 儲存貯體**

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 命令。在下列範例中，將 *iam\$1policy\$1name* 和 *amzn-s3-demo-bucket* 取代為 IAM 政策和目標 Amazon S3 儲存貯體的名稱。

   在 Linux、macOS 或 Unix 中：

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
           "Version": "2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "Statement1",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListBucket",
                       "s3:GetBucketAcl",
                       "s3:GetBucketLocation"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket"
                   ]
               },
               {
                   "Sid": "Statement2",
                   "Effect": "Allow",
                   "Action": [
                       "s3:PutObject",
                       "s3:ListMultipartUploadParts",
                       "s3:AbortMultipartUpload"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket/*"
                   ]
               },
               {
                   "Sid": "Statement3",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListAllMyBuckets"
                   ],
                   "Resource": [
                       "*"
                   ]
               },
               {
                   "Sid": "Statement4",
                   "Effect": "Allow",
                   "Action": [
                       "kms:GenerateDataKey",
                       "kms:Decrypt"
                   ],
                   "Resource": [
                       "*"
                   ]
               }
           ]
     }'
   ```

   在 Windows 中：

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
           "Version": "2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "Statement1",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListBucket",
                       "s3:GetBucketAcl",
                       "s3:GetBucketLocation"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket"
                   ]
               },
               {
                   "Sid": "Statement2",
                   "Effect": "Allow",
                   "Action": [
                       "s3:PutObject",
                       "s3:ListMultipartUploadParts",
                       "s3:AbortMultipartUpload"
                   ],
                   "Resource": [
                       "arn:aws:s3:::amzn-s3-demo-bucket/*"
                   ]
               },
               {
                   "Sid": "Statement3",
                   "Effect": "Allow",
                   "Action": [
                       "s3:ListAllMyBuckets"
                   ],
                   "Resource": [
                       "*"
                   ]
               },
               {
                   "Sid": "Statement4",
                   "Effect": "Allow",
                   "Action": [
                       "kms:GenerateDataKey",
                       "kms:Decrypt"
                   ],
                   "Resource": [
                       "*"
                   ]
               }
           ]
     }'
   ```

1. 建立政策後，請記下政策的 ARN。您需要 [步驟 3：建立 IAM 角色並附加您的 IAM 政策](#db2-audit-create-iam-role) 的 ARN。

如需有關建立 IAM 政策的詳細資訊，請參閱 IAM 使用者指南中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

### 步驟 3：建立 IAM 角色並附加您的 IAM 政策
<a name="db2-audit-create-iam-role"></a>

此步驟會假設您已在 [步驟 2：建立 IAM 政策](#db2-audit-create-iam-policy) 中建立了 IAM 政策。在此步驟中，您會建立 RDS for Db2 資料庫執行個體的 IAM 角色，然後將 IAM 政策附加至角色。

您可以使用主控台或 AWS CLI來建立資料庫執行個體的 IAM 角色。

#### 主控台
<a name="db2-audit-create-iam-role-console"></a>

**建立 IAM 角色，並將 IAM 政策連接至該角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 針對**信任的實體類型**，請選取 **AWS 服務**。

1. 針對**服務或使用案例**，請選取 **RDS**，然後選取 **RDS – 新增角色至資料庫**。

1. 選擇**下一步**。

1. 針對**許可政策**，搜尋並選取您建立的 IAM 政策之名稱。

1. 選擇**下一步**。

1. 在 **Role name** (角色名稱) 中，輸入角色名稱。

1. (選用) 在 **Description** (說明) 中，輸入新角色的說明。

1. 選擇建**立角色**。

#### AWS CLI
<a name="db2-audit-create-iam-role-cli"></a>

**建立 IAM 角色，並將 IAM 政策連接至該角色**

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令。在下列範例中，使用 IAM 角色的名稱取代 *iam\$1role\$1name*。

   在 Linux、macOS 或 Unix 中：

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   在 Windows 中：

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. 角色建立後，請記下此角色的 ARN。下一個步驟需要用到此 ARN，[步驟 4：設定 Db2 稽核記錄的選項群組](#db2-audit-configure-options-group)。

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 命令。在下列範例中，將 *iam\$1policy\$1arn* 取代為您在 [步驟 2：建立 IAM 政策](#db2-audit-create-iam-policy) 中所建立 IAM 政策的 ARN。將 *iam\$1role\$1name* 取代為您剛建立的 IAM 角色之名稱。

   在 Linux、macOS 或 Unix 中：

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   在 Windows 中：

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

### 步驟 4：設定 Db2 稽核記錄的選項群組
<a name="db2-audit-configure-options-group"></a>

將 Db2 稽核記錄選項新增至 RDS for Db2 資料庫執行個體的過程如下︰

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 新增和設定所有必要的選項。

1. 將選項群組與資料庫執行個體建立關聯。

在您新增 Db2 稽核記錄選項之後，就不需要重新啟動資料庫執行個體。只要選項群組處於作用中狀態，您就可以建立稽核，並將稽核日誌儲存於 S3 儲存貯體。

**若要在資料庫執行個體的選項群組中新增和設定 Db2 稽核記錄**

1. 選擇下列其中一項：
   + 使用現有的選項群組。
   + 建立自訂資料庫選項群組，並使用該選項群組。如需詳細資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **DB2\$1AUDIT** 選項新增至選項群組，並進行選項設定。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。
   + 針對 **IAM\$1ROLE\$1ARN**，輸入您在 [步驟 3：建立 IAM 角色並附加您的 IAM 政策](#db2-audit-create-iam-role) 中建立的 IAM 角色之 ARN。
   + 針對 **S3\$1BUCKET\$1ARN**，輸入要用於 Db2 稽核日誌的 S3 儲存貯體之 ARN。儲存貯體必須位於與您的 RDS for Db2 資料庫執行個體相同的區域中。與您所輸入 IAM 角色相關聯的政策必須允許對此資源進行必要的作業。

1. 將選項群組套用至新的或現有的資料庫執行個體。選擇下列其中一項：
   + 如果您建立了新的資料庫執行個體，在啟動執行個體時套用選項群組。
   + 針對現有的資料庫執行個體，可以修改執行個體，並附加新的選項群組，以套用選項群組。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 步驟 5：設定稽核政策
<a name="db2-audit-configure-audit-policy"></a>

若要設定 RDS for Db2 資料庫的稽核政策，請使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。然後，使用資料庫的資料庫名稱和適用的參數值呼叫 `rdsadmin.configure_db_audit` 預存程序。

下列範例會連線至資料庫，並使用 AUDIT、 CHECKING、OBJMAINT、SECMAINT、SYSADMIN 和 VALIDATE 等類別設定 `testdb` 的稽核政策。狀態值 `BOTH` 會記錄成功和失敗，`ERROR TYPE` 預設為 `NORMAL`。如需有關如何使用此預存程序的詳細資訊，請參閱 [rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit)。

```
db2 "connect to rdsadmin user master_user using master_password"
db2 "call rdsadmin.configure_db_audit('testdb', 'ALL', 'BOTH', ?)"
```

### 步驟 6：檢查稽核組態
<a name="db2-audit-check-config-status"></a>

為了確保您的稽核政策設定正確，請檢查稽核組態的狀態。

若要檢查組態，請使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 `rdsadmin` 資料庫。然後，使用您資料庫的資料庫名稱執行下列 SQL 陳述式。在下列範例中，資料庫名稱為 *testdb*。

```
db2 "select task_id, task_type, database_name, lifecycle,
    varchar(bson_to_json(task_input_params), 500) as task_params,
    cast(task_output as varchar(500)) as task_output
    from table(rdsadmin.get_task_status(null,'testdb','CONFIGURE_DB_AUDIT'))"
    
Sample Output
 
TASK_ID              TASK_TYPE            DATABASE_NAME       LIFECYCLE
-------------------- -------------------- --------------- -------------
                   2  CONFIGURE_DB_AUDIT            DB2DB       SUCCESS

... continued ...
TASK_PARAMS                                
-------------------------------------------------------- 
{ "AUDIT_CATEGORY" : "ALL", "CATEGORY_SETTING" : "BOTH" }            

... continued ...
                                        TASK_OUTPUT
---------------------------------------------------
2023-12-22T20:27:03.029Z Task execution has started.

2023-12-22T20:27:04.285Z Task execution has completed successfully.
```

## 管理 Db2 稽核記錄
<a name="db2-audit-managing"></a>

設定 Db2 稽核記錄之後，您可以修改特定資料庫的稽核政策，或在資料庫層級停用稽核記錄，或停用整個資料庫執行個體的稽核記錄。您也可以變更上傳日誌檔案的目的地 Amazon S3 儲存貯體。

**Topics**
+ [修改 Db2 稽核政策](#db2-audit-modifying-policy)
+ [修改日誌檔案的位置](#db2-audit-modifying-location)
+ [停用 Db2 稽核記錄](#db2-audit-disabling)

### 修改 Db2 稽核政策
<a name="db2-audit-modifying-policy"></a>

若要修改特定 RDS for Db2 資料庫的稽核政策，請執行 `rdsadmin.configure_db_audit` 預存程序。使用此預存程序，您可以變更稽核政策的類別、類別設定和錯誤類型組態。如需詳細資訊，請參閱[rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit)。

### 修改日誌檔案的位置
<a name="db2-audit-modifying-location"></a>

若要變更上傳日誌檔案的目的地 Amazon S3 儲存貯體，請執行下列其中一項作業：
+ 修改連接至 RDS for Db2 資料庫執行個體的目前選項群組 – 更新 `DB2_AUDIT` 選項的 `S3_BUCKET_ARN` 設定，以指向新的儲存貯體。此外，請務必更新連接至所連接選項群組中 `IAM_ROLE_ARN` 設定所指定之 IAM 角色的 IAM 政策。此 IAM 政策必須提供您的新儲存貯體所需的存取許可。如需 IAM 政策中所需許可的詳細資訊，請參閱 [建立 IAM 政策](#db2-audit-create-iam-policy)。
+ 將 RDS for Db2 資料庫執行個體連接至不同的選項群組 – 修改資料庫執行個體，以變更連接至該執行個體的選項群組。請確定已使用正確的 `S3_BUCKET_ARN` 和 `IAM_ROLE_ARN` 設定來設定新的選項群組。如需如何為 `DB2_AUDIT` 選項設定這些設定的相關資訊，請參閱 [設定選項群組](#db2-audit-configure-options-group)。

當您修改選項群組時，請確定您立即套用變更。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 停用 Db2 稽核記錄
<a name="db2-audit-disabling"></a>

若要停用 Db2 稽核記錄，請執行下列其中一項作業：
+ 停用 RDS for Db2 資料庫執行個體的稽核記錄 – 修改資料庫執行個體，並使用 `DB2_AUDIT` 選項從中移除選項群組。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 停用特定資料庫的稽核記錄 – 使用您資料庫的資料庫名稱呼叫 `rdsadmin.disable_db_audit`，以停止稽核記錄並移除稽核政策。如需詳細資訊，請參閱[rdsadmin.disable\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-disable-db-audit)。

  ```
  db2 "call rdsadmin.disable_db_audit(
      'db_name',
      ?)"
  ```

## 檢視稽核日誌
<a name="db2-audit-viewing-logs"></a>

啟用 Db2 稽核記錄後，請等待至少一小時，再檢視 Amazon S3 儲存貯體中的稽核資料。Amazon RDS 會自動將日誌從 RDS for Db2 資料庫執行個體傳送至下列位置：
+ 資料庫執行個體層級日誌 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/`
+ 資料庫層級日誌 – `bucket_name/db2-audit-logs/dbi_resource_id/date_time_utc/db_name/`

Amazon S3 主控台的下列範例螢幕擷取畫面顯示 RDS for Db2 資料庫執行個體層級日誌檔案的資料夾清單。

![\[選取物件索引標籤的 Amazon S3 主控台，顯示 RDS for Db2 資料庫執行個體層級日誌檔案的資料夾清單。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-instance-level-audit-logs.png)


Amazon S3 主控台的下列範例螢幕擷取畫面顯示 RDS for Db2 資料庫執行個體的資料庫層級日誌檔案。

![\[選取物件索引標籤的 Amazon S3 主控台，顯示 RDS for Db2 資料庫執行個體的資料庫層級日誌檔案。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-database-level-audit-logs.png)


## 針對 Db2 稽核記錄日誌進行故障診斷
<a name="db2-audit-troubleshooting"></a>

使用以下資訊進行 Db2 稽核記錄一般問題的故障診斷。

### 無法設定稽核政策
<a name="db2-audit-troubleshooting-policy-config"></a>

如果呼叫預存程序 `rdsadmin.configure_db_audit` 傳回錯誤，則使用 `DB2_AUDIT` 選項的選項群組可能與 RDS for Db2 資料庫執行個體沒有關聯。修改資料庫執行個體以新增選項群組，然後再次嘗試呼叫預存程序。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### Amazon S3 儲存貯體中沒有資料
<a name="db2-audit-troubleshooting-missing-data"></a>

如果 Amazon S3 儲存貯體缺少記錄資料，請檢查下列項目：
+ Amazon S3 儲存貯體與 RDS for Db2 資料庫執行個體位於相同的區域。
+ 您在 `IAM_ROLE_ARN` 選項設定中指定的角色已設定必要的許可，可將日誌上傳至您的 Amazon S3 儲存貯體。如需詳細資訊，請參閱[建立 IAM 政策](#db2-audit-create-iam-policy)。
+ 與 RDS for Db2 資料庫執行個體相關聯的選項群組中，`IAM_ROLE_ARN` 和 `S3_BUCKET_ARN` 選項設定的 ARN 是正確的。如需詳細資訊，請參閱[設定選項群組](#db2-audit-configure-options-group)。

您可以連線至資料庫並執行 SQL 陳述式，以檢查稽核記錄組態的任務狀態。如需詳細資訊，請參閱[檢查稽核組態](#db2-audit-check-config-status)。

您也可以檢查事件，以進一步了解日誌可能遺失的原因。如需檢視事件方式的相關資訊，請參閱 [在 Amazon RDS 主控台中檢視日誌、事件和串流](logs-events-streams-console.md)。

# Amazon RDS for Db2 的外部預存程序
<a name="db2-external-stored-procedures"></a>

您可以建立外部常式，並向 Amazon RDS for Db2 資料庫註冊這些外部常式做為外部預存程序。目前，RDS for Db2 僅支援外部預存程序的 Java 型常式。

## Java 型外部預存程序
<a name="db2-external-stored-procedures-java"></a>

Java 型外部預存程序是您向 RDS for Db2 資料庫註冊為外部預存程序的外部 Java 常式。

**Topics**
+ [Java 型外部預存程序的限制](#db2-external-stored-procedures-java-limitations)
+ [設定 Java 型外部預存程序](#db2-external-stored-procedures-java-configuring)

### Java 型外部預存程序的限制
<a name="db2-external-stored-procedures-java-limitations"></a>

在開發外部常式之前，請考慮下列限制。

若要建立外部常式，請務必使用 Db2 提供的 Java 開發套件 (JDK)。如需詳細資訊，請參閱 [Db2 資料庫產品的 Java 軟體支援](https://www.ibm.com/docs/en/db2/11.5?topic=servers-java-software-support-db2-database-products)。

您的 Java 程式只能在 `/tmp` 目錄中建立檔案，Amazon RDS 並不支援啟用這些檔案的可執行檔或設定使用者 ID (SUID) 許可。您的 Java 程式也無法使用通訊端系統呼叫或下列系統呼叫：
+ \$1sysctl
+ acct
+ afs\$1syscall
+ bpf
+ capset
+ chown
+ chroot
+ create\$1module
+ delete\$1module
+ fanotify\$1init
+ fanotify\$1mark
+ finit\$1module
+ fsconfig
+ fsopen
+ fspick
+ get\$1kernel\$1syms
+ getpmsg
+ init\$1module
+ mount
+ move\$1mount
+ nfsservctl
+ open\$1by\$1handle\$1at
+ open\$1tree
+ pivot\$1root
+ putpmsg
+ query\$1module
+ quotactl
+ reboot
+ security
+ setdomainname
+ setfsuid
+ sethostname
+ sysfs
+ tuxcall
+ umount2
+ uselib
+ ustat
+ vhangup
+ vserver

如需 Db2 外部常式的其他限制，請參閱 IBM Db2 文件中的[外部常式的限制](https://www.ibm.com/docs/en/db2/11.5?topic=routines-restrictions-external)。

### 設定 Java 型外部預存程序
<a name="db2-external-stored-procedures-java-configuring"></a>

若要設定外部預存程序，請使用外部常式建立 .jar 檔案，將其安裝在 RDS for Db2 資料庫上，然後將其註冊為外部預存程序。

**Topics**
+ [步驟 1：啟用外部預存程序](#db2-external-stored-procedures-java-enable)
+ [步驟 2：使用外部常式安裝 .jar 檔案](#db2-external-stored-procedures-java-install-jar)
+ [步驟 3：註冊外部預存程序](#db2-external-stored-procedures-java-register)
+ [步驟 4：驗證外部預存程序](#db2-external-stored-procedures-java-validate)

#### 步驟 1：啟用外部預存程序
<a name="db2-external-stored-procedures-java-enable"></a>

若要啟用外部預存程序，請在與資料庫執行個體相關聯的自訂參數群組中，將 `db2_alternate_authz_behaviour` 參數設定為下列其中一個值：
+ `EXTERNAL_ROUTINE_DBADM` – 對具有 `DBADM` 授權的任何使用者、群組或角色隱含授予 `CREATE_EXTERNAL_ROUTINE` 許可。
+ `EXTERNAL_ROUTINE_DBAUTH` – 允許具有 `DBADM` 授權將 `CREATE_EXTERNAL_ROUTINE` 許可授予任何使用者、群組或角色的使用者。在此情況下，沒有任何使用者、群組或角色會隱含授予此許可，甚至不會隱含授予具有 `DBADM` 授權的使用者。

如需此設定的詳細資訊，請參閱 IBM Db2 文件中的 [GRANT (資料庫授權單位) 陳述式](https://www.ibm.com/docs/en/db2/11.5?topic=statements-grant-database-authorities)。

您可以使用 AWS 管理主控台、 AWS CLI或 Amazon RDS API 來建立及修改自訂參數群組。

##### 主控台
<a name="db2-external-stored-procedures-java-enable-console"></a>

**在自訂參數群組中設定 db2\$1alternate\$1authz\$1behaviour 參數**

1. 如果您想要使用與資料庫執行個體正在使用的自訂資料庫參數群組不同的自訂資料庫參數群組，請建立新的資料庫參數群組。如果您使用自帶授權 (BYOL) 模型，請確定新的自訂參數群組包含 IBM ID。如需這些 ID 的相關資訊，請參閱 [Db2 的自帶授權 (BYOL) IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 在自訂參數群組中設定 `db2_alternate_authz_behaviour` 參數的值。如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

##### AWS CLI
<a name="db2-external-stored-procedures-java-enable-cli"></a>

**在自訂參數群組中設定 db2\$1alternate\$1authz\$1behaviour 參數**

1. 如果您想要使用不同於資料庫執行個體在使用的自訂資料庫參數群組，請執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 命令來建立自訂參數群組。如果您使用自帶授權 (BYOL) 模型，請確定新的自訂參數群組包含 IBM ID。如需這些 ID 的相關資訊，請參閱 [Db2 的自帶授權 (BYOL) IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您要建立之參數群組的名稱。
   + `--db-parameter-group-family` – Db2 引擎版本和主要版本。有效值為 `db2-se-11.5` 和 `db2-ae-11.5`。
   + `--description` – 此參數群組的描述。

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

   下列範例示範如何為參數群組系列 `db2-se-11.5` 建立名為 `MY_EXT_SP_PARAM_GROUP` 的自訂參數群組。

   在 Linux、macOS 或 Unix 中：

   ```
   aws rds create-db-parameter-group \
   --region us-east-1 \
   --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
   --db-parameter-group-family db2-se-11.5 \ 
   --description "test db2 external routines"
   ```

   在 Windows 中：

   ```
   aws rds create-db-parameter-group ^
   --region us-east-1 ^
   --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
   --db-parameter-group-family db2-se-11.5 ^ 
   --description "test db2 external routines"
   ```

1. 執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 命令來修改自訂參數群組中的 `db2_alternate_authz_behaviour` 參數。

   包含下列必要選項：
   + `--db-parameter-group-name` – 您所建立的參數群組之名稱。
   + `--parameters` – 參數名稱、值，以及參數更新套用方法的陣列。

   如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

   下列範例示範如何透過將 `db2_alternate_authz_behaviour` 的值設定為 `EXTERNAL_ROUTINE_DBADM` 來修改參數群組 `MY_EXT_SP_PARAM_GROUP`。

   在 Linux、macOS 或 Unix 中：

   ```
   aws rds modify-db-parameter-group \
       --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
       --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
   ```

   在 Windows 中：

   ```
   aws rds modify-db-parameter-group ^
       --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
       --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
   ```

##### RDS API
<a name="db2-external-stored-procedures-java-enable-api"></a>

**在自訂參數群組中設定 db2\$1alternate\$1authz\$1behaviour 參數**

1. 如果您想要使用與資料庫執行個體正在使用的自訂資料庫參數群組不同的自訂資料庫參數群組，請使用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 作業來建立新的資料庫參數群組。如果您使用自帶授權 (BYOL) 模型，請確定新的自訂參數群組包含 IBM Db2 ID。如需這些 ID 的相關資訊，請參閱 [Db2 的自帶授權 (BYOL) IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `DBParameterGroupFamily`
   + `Description`

   如需建立資料庫參數群組的詳細資訊，請參閱[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)。

1. 修改您透過使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 作業所建立的自訂參數群組中的 `db2_alternate_authz_behaviour` 參數。

   包含下列必要參數：
   + `DBParameterGroupName`
   + `Parameters`

   如需修改參數群組的相關詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

#### 步驟 2：使用外部常式安裝 .jar 檔案
<a name="db2-external-stored-procedures-java-install-jar"></a>

建立 Java 常式後，請建立 .jar 檔案，然後執行 `db2 "call sqlj.install_jar('file:file_path',jar_ID)"` 以將其安裝在 RDS for Db2 資料庫上。

下列範例示範如何建立 Java 常式，並將其安裝在 RDS for Db2 資料庫上。此範例包含簡單常式的範例程式碼，可供您用來測試程序。此範例中進行下列假設：
+ Java 程式碼是在安裝 Db2 的伺服器上進行編譯。這是最佳實務，因為未使用 IBM 提供的 JDK 編譯可能會導致無法解釋的錯誤。
+ 伺服器具有在本機編製目錄的 RDS for Db2 資料庫。

如果您想要使用下列範例程式碼嘗試此程序，請將其複製，然後儲存至名為 `MYJAVASP.java` 的檔案。

```
import java.sql.*;
public class MYJAVASP
{
public static void my_JAVASP (String inparam) throws SQLException, Exception
{
try
{
// Obtain the calling context's connection details.
Connection myConn = DriverManager.getConnection("jdbc:default:connection");
String myQuery = "INSERT INTO TEST.TEST_TABLE VALUES (?, CURRENT DATE)";
PreparedStatement myStmt = myConn.prepareStatement(myQuery);
myStmt.setString(1, inparam);
myStmt.executeUpdate();
}
catch (SQLException sql_ex)
{
throw sql_ex;
}
catch (Exception ex)
{
throw ex;
}
}
```

下列命令會編譯 Java 常式。

```
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
```

下列命令會建立 .jar 檔案。

```
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
```

下列命令會連線至名為 `MY_DB2_DATABASE` 的資料庫，並安裝 .jar 檔案。

```
db2 "connect to MY_DB2_DATABASE user master_username using master_password" 

db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')"
db2 "call sqlj.refresh_classes()"
```

#### 步驟 3：註冊外部預存程序
<a name="db2-external-stored-procedures-java-register"></a>

在 RDS for Db2 資料庫上安裝 .jar 檔案後，請執行 `db2 CREATE PROCEDURE` 或 `db2 REPLACE PROCEDURE`命令，將其註冊為預存程序。

下列範例示範如何連線至資料庫，並將上一個步驟中建立的 Java 常式註冊為預存程序。

```
db2 "connect to MY_DB2_DATABASE user master_username using master_password"

create procedure TESTSP.MYJAVASP (in input char(6))
specific myjavasp
dynamic result sets 0
deterministic
language java
parameter style java
no dbinfo
fenced
threadsafe
modifies sql data
program type sub
external name 'MYJAVASP!my_JAVASP';
```

#### 步驟 4：驗證外部預存程序
<a name="db2-external-stored-procedures-java-validate"></a>

使用下列步驟來測試上一個步驟中註冊的範例外部預存程序。

**驗證外部預存程序**

1. 在下列範例中建立類似 `TEST.TEST_TABLE` 的資料表。

   ```
   db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
   ```

1. 呼叫新的外部預存程序。呼叫會傳回 `0` 狀態。

   ```
   db2 "call TESTSP.MYJAVASP('test')"
   Return Status = 0
   ```

1. 查詢您在步驟 1 中建立的資料表，以驗證預存程序呼叫的結果。

   ```
   db2 "SELECT * from TEST.TEST_TABLE"
   ```

   查詢會產生類似下列範例的輸出：

   ```
   C1     C2
   ------ ----------
   test   02/05/2024
   ```

# Amazon RDS for Db2 的已知問題和限制
<a name="db2-known-issues-limitations"></a>

下列項目為使用 Amazon RDS for Db2 的已知問題和限制：

**Topics**
+ [身分驗證限制](#db2-known-issues-limitations-authentication-limit)
+ [非連接常式](#db2-known-issues-limitations-non-fenced-routines)
+ [遷移期間的非自動儲存資料表空間](#db2-known-issues-limitations-non-automatic-storage-tablespaces)
+ [設定 db2\$1compatibility\$1vector 參數](#db2-known-issues-limitations-db2-compatibility-vector)
+ [遷移包含 INVALID 套件的資料庫](#db2-known-issues-limitations-invalid-packages-migrating)

## 身分驗證限制
<a name="db2-known-issues-limitations-authentication-limit"></a>

Amazon RDS 預設會將 `JCC_ENFORCE_SECMEC` 設定為 `db2auth`。不過，如果您不想透過線路強制執行 userid 和密碼加密，可透過將參數群組中的 `db2auth` 參數變更為 `CLEAR_TEXT` 來覆寫此設定。如需詳細資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

## 非連接常式
<a name="db2-known-issues-limitations-non-fenced-routines"></a>

RDS for Db2 不支援透過備份及還原資料來建立非連接常式和遷移這些常式。若要檢查您的資料庫是否包含任何非連接常式，請執行下列 SQL 命令：

```
SELECT 'COUNT:' || count(*) FROM SYSCAT.ROUTINES where fenced='N' and routineschema not in ('SQLJ','SYSCAT','SYSFUN','SYSIBM','SYSIBMADM','SYSPROC','SYSTOOLS')
```

## 遷移期間的非自動儲存資料表空間
<a name="db2-known-issues-limitations-non-automatic-storage-tablespaces"></a>

RDS for Db2 不支援建立新的非自動儲存資料表空間。當您使用原生還原進行資料庫的一次性遷移時，RDS for Db2 會自動將您的非自動儲存資料表空間轉換為自動儲存資料表空間，然後將資料庫還原為 RDS for Db2。如需一次性遷移的相關資訊，請參閱 [從 Amazon RDS for Db2 的 Linux 遷移至 Linux](db2-one-time-migration-linux.md) 和 [從 Amazon RDS for Db2 的 AIX 或 Windows 遷移至 Linux](db2-one-time-migration-aix-windows-linux.md)。

## 設定 db2\$1compatibility\$1vector 參數
<a name="db2-known-issues-limitations-db2-compatibility-vector"></a>

您可以使用 Amazon RDS，在建立資料庫執行個體時建立初始資料庫，然後修改相關聯參數群組中的參數。不過，對於 Db2，如果您想要在參數群組中設定 `db2_compatibility_vector` 參數，則必須先修改自訂參數群組中的參數、在沒有資料庫的情況下建立資料庫執行個體，然後使用 `rdsadmin.create_database` 預存程序建立資料庫。

**設定 `db2_compatibility_vector` 參數**

1. [建立自訂參數群組](USER_WorkingWithParamGroups.Creating.md)。(您無法修改預設參數群組中的參數。)

1. [修改參數](USER_WorkingWithParamGroups.Modifying.md)。

1. [建立資料庫執行個體](USER_CreateDBInstance.md)。

1. 使用 `rdsadmin.create_database` 預存程序[建立資料庫](db2-managing-databases.md#db2-creating-database)。

1. [將參數群組與包含資料庫的資料庫執行個體建立關聯](USER_WorkingWithParamGroups.Associating.md)。

## 遷移包含 INVALID 套件的資料庫
<a name="db2-known-issues-limitations-invalid-packages-migrating"></a>

如果您使用 `RESTORE` 命令將包含 `INVALID` 套件的 Db2 資料庫遷移至 RDS for Db2，可能會在開始使用資料庫時遇到問題。`INVALID` 套件可能會因為資料庫執行個體使用者 `rdsdb` 的授權設定和從 `PUBLIC` 移除授權而引發問題。`INVALID` 套件會導致下列命令失敗：
+ `db2updv115`
+ `db2 "call SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()"`

使用 `RESTORE` 命令遷移資料庫之前，請先執行下列命令，確保您的資料庫不包含 `INVALID` 套件：

```
db2 "SELECT 'COUNT:' || count(*) FROM SYSCAT.INVALIDOBJECTS"
```

如果命令傳回大於零的計數，則呼叫下列命令：

```
db2 "call SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()"
```

之後，請呼叫先前的命令，確認您的資料庫不再包含 `INVALID` 套件。

```
db2 "SELECT 'COUNT:' || count(*) FROM SYSCAT.INVALIDOBJECTS"
```

現在您已準備好備份資料庫，並將其還原為 RDS for Db2 資料庫執行個體。

# Amazon RDS for Db2 預存程序參考
<a name="db2-stored-procedures"></a>

您可以透過呼叫內建預存程序來管理執行 Db2 引擎的 Amazon RDS for Db2 資料庫執行個體。


| 預存程序 | 類別 | 描述 | 
| --- | --- | --- | 
|  [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database)  |  資料庫  |  使用 `rdsadmin.activate_database` 預存程序在獨立的 RDS for Db2 資料庫執行個體上啟用資料庫。  | 
|  [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups)  |  授予及撤銷權限  |  使用 `rdsadmin.add_groups` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫，將一或多個群組新增至使用者。  | 
|  [rdsadmin.add\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user)  |  授予及撤銷權限  |  使用 `rdsadmin.add_user` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫，將使用者新增至授權清單。  | 
|  [rdsadmin.alter\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-alter-buffer-pool)  |  緩衝集區  |  使用 `rdsadmin.alter_bufferpool` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫修改緩衝集區。  | 
|  [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace)  |  資料表空間  |  使用 `rdsadmin.alter_tablespace` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫修改資料表空間。  | 
|  [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database)  |  資料庫  |  使用 `rdsadmin.backup_database` 預存程序將 RDS for Db2 資料庫執行個體上的資料庫備份至 Amazon S3 儲存貯體。然後，您可以將備份從 Amazon S3 還原至 RDS for Db2 資料庫執行個體，或還原至其他位置，例如本機伺服器。  | 
|  [rdsadmin.catalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-catalog-storage-access)  |  儲存體存取  |  使用 `rdsadmin.catalog_storage_access` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫，編目儲存別名以存取 Amazon S3 儲存貯體與 Db2 資料檔案。  | 
|  [rdsadmin.change\$1password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password)  |  授予及撤銷權限  |  使用 `rdsadmin.change_password` 預存程序變更 RDS for Db2 資料庫執行個體上資料庫的使用者密碼。  | 
|  [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward)  |  資料庫  |  使用 `rdsadmin.complete_rollforward` 預存程序，將 RDS for Db2 資料庫執行個體上的資料庫從 `ROLL-FORWARD PENDING` 狀態上線。當您呼叫 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database) 但將 `complete_rollforward` 參數設定為 `FALSE` 時，會發生 `ROLL-FORWARD PENDING` 狀態。  | 
|  [rdsadmin.configure\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-configure-db-audit)  |  稽核政策  |  使用 `rdsadmin.configure_db_audit` 預存程序來修改 RDS for Db2 資料庫執行個體上資料庫的稽核政策。如果沒有稽核政策，則執行此預存程序會建立稽核政策。  | 
|  [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)  |  緩衝集區  |  使用 `rdsadmin.create_bufferpool` 預存程序為 RDS for Db2 資料庫執行個體上的資料庫建立緩衝集區。  | 
|  [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)  |  資料庫  |  使用 `rdsadmin.create_database` 預存程序在 RDS for Db2 資料庫執行個體上建立資料庫。  | 
|  [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role)  |  授予及撤銷權限  |  使用 `rdsadmin.create_role` 預存程序來建立角色，以連接至 RDS for Db2 資料庫執行個體上的資料庫。  | 
|  [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)  |  資料表空間  |  使用 `rdsadmin.create_tablespace` 預存程序為 RDS for Db2 資料庫執行個體上的資料庫建立資料表空間。  | 
|  [rdsadmin.db2pd\$1command](db2-sp-managing-databases.md#db2-sp-db2pd-command)  |  資料庫  |  使用 `rdsadmin.db2pd_command` 預存程序收集 RDS for Db2 資料庫執行個體上資料庫的相關資訊。此資訊有助於監控和故障診斷 RDS for Db2 中的資料庫。  | 
|  [rdsadmin.db2support\$1command](db2-sp-managing-databases.md#db2-sp-db2support-command)  |  資料庫  |  使用 `rdsadmin.db2support_command` 預存程序收集 RDS for Db2 資料庫執行個體上資料庫的診斷資訊，並將其上傳至 Amazon S3 儲存貯體。  | 
|  [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant)  |  授予及撤銷權限  |  使用 `rdsadmin.dbadm_grant` 預存程序將一或多個授權類型 (`DBADM`、`ACCESSCTRL` 或 `DATAACCESS`) 授予 RDS for Db2 資料庫執行個體上之資料庫的一或多個角色、使用者或群組。  | 
|  [rdsadmin.dbadm\$1revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke)  |  授予及撤銷權限  |  使用 `rdsadmin.dbadm_revoke` 預存程序，從 RDS for Db2 資料庫執行個體上之資料庫的一或多個角色、使用者或群組撤銷一或多個授權類型 (`DBADM`、`ACCESSCTRL` 或 `DATAACCESS`)。  | 
|   [rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database)  |  資料庫  |  使用 `rdsadmin.deactivate_database` 預存程序來停用 RDS for Db2 資料庫執行個體上的資料庫。您可以停用資料庫以節省記憶體資源。  | 
|  [rdsadmin.disable\$1db\$1audit](db2-sp-managing-audit-policies.md#db2-sp-disable-db-audit)  |  稽核政策  |  使用 `rdsadmin.disable_db_audit` 預存程序來停止稽核記錄，並從 RDS for Db2 資料庫執行個體上的資料庫移除稽核政策。  | 
|  [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)  |  緩衝集區  |  使用 `rdsadmin.drop_bufferpool` 預存程序從 RDS for Db2 資料庫執行個體上的資料庫捨棄緩衝集區。  | 
|  [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database)  |  資料庫  |  使用 `rdsadmin.drop_database` 預存程序從 RDS for Db2 資料庫執行個體捨棄資料庫。  | 
|  [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role)  |  授予及撤銷權限  |  使用 `rdsadmin.drop_role` 預存程序從 RDS for Db2 資料庫執行個體上的資料庫刪除角色。  | 
|  [rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)  |  資料表空間  |  使用 `rdsadmin.drop_tablespace` 預存程序從 RDS for Db2 資料庫執行個體上的資料庫捨棄資料表空間。  | 
|  [rdsadmin.fgac\$1command](db2-sp-managing-databases.md#db2-sp-fgac-command)  |  資料庫  |  使用 `rdsadmin.fgac_command` 預存程序控制 RDS for Db2 資料庫執行個體上資料庫中資料的資料列或資料欄層級的存取。  | 
|  [rdsadmin.force\$1application](db2-sp-managing-databases.md#db2-sp-force-application)  |  資料庫  |  使用 `rdsadmin.force_application` 預存程序強制應用程式離開 RDS for Db2 資料庫執行個體上的資料庫，以執行維護。  | 
|  [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role)  |  授予及撤銷權限  |  使用 `rdsadmin.grant_role` 預存程序將角色指派給 RDS for Db2 資料庫執行個體上之資料庫中的承授者角色、使用者或群組。您也可以使用此預存程序來授予承授者角色指派角色的 `DBADM` 授權。  | 
|  [rdsadmin.list\$1archive\$1log\$1information](db2-sp-managing-databases.md#db2-sp-list-archive-log-information)  |  資料庫  |  使用 `rdsadmin.list_archive_log_information` 預存程序傳回 RDS for Db2 資料庫執行個體上之資料庫封存日誌的相關資訊。此資訊包含個別日誌檔案的大小和建立日期，以及封存日誌檔案所使用的總儲存體等詳細資訊。  | 
|  [rdsadmin.list\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-list-sid-group-mapping)  |  授予及撤銷權限  |  使用 `rdsadmin.list_sid_group_mapping` 預存程序傳回在 RDS for Db2 資料庫執行個體上設定的所有安全 ID (SID) 和 Active Directory 群組映射清單。  | 
|  [rdsadmin.list\$1users](db2-sp-granting-revoking-privileges.md#db2-sp-list-users)  |  授予及撤銷權限  |  使用 `rdsadmin.list_users` 預存程序傳回 RDS for Db2 資料庫執行個體上之資料庫的授權清單上的使用者清單。  | 
|  [rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database)  |  資料庫  |  進行資料庫組態變更後，請使用 `rdsadmin.reactivate_database` 預存程序在 RDS for Db2 資料庫執行個體上重新啟用資料庫。對於獨立資料庫執行個體上的資料庫，您可以使用此預存程序或 [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database) 預存程序。對於複本來源資料庫執行個體上的資料庫，您必須使用 `rdsadmin.reactivate_database` 預存程序。  | 
|  [rdsadmin.remove\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups)  |  授予及撤銷權限  |  使用 `rdsadmin.remove_groups` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫，從使用者移除一或多個群組。  | 
|  [rdsadmin.remove\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-remove-sid-group-mapping)  |  授予及撤銷權限  |  使用 `rdsadmin.remove_sid_group_mapping` 預存程序從 RDS for Db2 資料庫執行個體中移除安全 ID (SID) 及其對應的 Active Directory 群組映射。  | 
|  [rdsadmin.remove\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user)  |  授予及撤銷權限  |  使用 `rdsadmin.remove_user` 預存程序從 RDS for Db2 資料庫執行個體上的資料庫授權清單中移除使用者。  | 
|  [rdsadmin.rename\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-rename-tablespace)  |  資料表空間  |  使用 `rdsadmin.rename_tablespace` 預存程序來重新命名 RDS for Db2 資料庫執行個體上資料庫的資料表空間。  | 
|  [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)  |  資料庫  |  使用 `rdsadmin.restore_database` 預存程序從 Amazon S3 儲存貯體還原 RDS for Db2 資料庫執行個體上的資料庫。  | 
|  [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role)  |  授予及撤銷權限  |  使用 `rdsadmin.revoke_role` 預存程序從 RDS for Db2 資料庫執行個體上之資料庫中的承授者角色、使用者或群組撤銷角色。  | 
|  [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)  |  資料庫  |  使用 `rdsadmin.rollforward_database` 預存程序將 RDS for Db2 資料庫執行個體上的資料庫上線，並在您透過呼叫 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 還原 RDS for Db2 資料庫執行個體上的資料庫之後，套用交易日誌。  | 
|  [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status)  |  資料庫  |  使用 `rdsadmin.rollforward_status` 預存程序來查詢呼叫 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database) 或 RDS for Db2 資料庫執行個體上 [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward) 預存程序的向前捲動狀態。  | 
|  [rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)  |  資料庫  |  使用 `rdsadmin.set_archive_log_retention` 預存程序來設定在 RDS for Db2 資料庫執行個體上保留資料庫封存日誌檔案的時間。您也可以使用此預存程序來停用封存日誌保留。  | 
|  [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)  |  資料庫  |  使用 `rdsadmin.set_configuration` 預存程序，針對 RDS for Db2 資料庫執行個體上的資料庫設定特定設定。  | 
|  [rdsadmin.set\$1sid\$1group\$1mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping)  |  授予及撤銷權限  |  使用 `rdsadmin.set_sid_group_mapping` 預存程序在 RDS for Db2 資料庫執行個體上的安全 ID (SID) 與對應的 Active Directory 群組之間建立映射。  | 
|  [rdsadmin.show\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-show-archive-log-retention)  |  資料庫  | 使用 rdsadmin.show\$1archive\$1log\$1retention 預存程序傳回 RDS for Db2 資料庫執行個體上之資料庫目前的封存日誌保留設定。 | 
|  [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)  |  資料庫  | 使用 rdsadmin.show\$1configuration 預存程序傳回 RDS for Db2 資料庫執行個體上之資料庫的一或多個可修改設定。 | 
|  [rdsadmin.uncatalog\$1storage\$1access](db2-sp-managing-storage-access.md#db2-sp-uncatalog-storage-access)  |  儲存體存取  |  使用 `rdsadmin.uncatalog_storage_access` 預存程序移除儲存別名，以使用 Db2 資料檔案存取 Amazon S3 儲存貯體。  | 
|  [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)  |  資料庫  | 使用 rdsadmin.update\$1db\$1param 預存程序來更新 RDS for Db2 資料庫執行個體上之資料庫的資料庫參數。 | 
|  [rdsadmin.enable\$1archive\$1log\$1copy](db2-sp-managing-databases.md#db2-sp-enable_archive_log_copy)  |  資料庫  | 使用 rdsadmin.enable\$1archive\$1log\$1copy 預存程序來啟用 RDS Db2 資料庫封存日誌複製到 Amazon S3。 | 
|  [rdsadmin.disable\$1archive\$1log\$1copy](db2-sp-managing-databases.md#db2-sp-disable_archive_log_copy)  |  資料庫  | 使用rdsadmin.disable\$1archive\$1log\$1copy預存程序來停用 RDS Db2 資料庫封存日誌複製到 Amazon S3。 | 

**Topics**
+ [Amazon RDS for Db2 預存程序的考量](db2-stored-procedures-considerations.md)
+ [授予及撤銷 RDS for Db2 權限的預存程序](db2-sp-granting-revoking-privileges.md)
+ [RDS for Db2 稽核政策的預存程序](db2-sp-managing-audit-policies.md)
+ [RDS for Db2 緩衝集區的預存程序](db2-sp-managing-buffer-pools.md)
+ [RDS for Db2 資料庫的預存程序](db2-sp-managing-databases.md)
+ [RDS for Db2 儲存體存取的預存程序](db2-sp-managing-storage-access.md)
+ [RDS for Db2 資料表空間的預存程序](db2-sp-managing-tablespaces.md)

# Amazon RDS for Db2 預存程序的考量
<a name="db2-stored-procedures-considerations"></a>

在使用執行 Db2 引擎的 RDS for Db2 資料庫執行個體的 Amazon RDS 系統預存程序之前，請檢閱下列資訊：
+ 執行預存程序之前，您必須先以 RDS for Db2 資料庫執行個體的主要使用者身分連線到 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您自己的資訊。

  ```
  db2 "connect to rdsadmin user master_username using master_password"
  ```
+ 預存程序會傳回 `ERR_MESSAGE` 參數，指出預存程序是否成功執行，以及為何未成功執行。

  **範例**

  下列範例指出預存程序已成功執行。

  ```
  Parameter Name : ERR_MESSAGE
  Parameter Value : -
  Return Status = 0
  ```

  下列範例指出預存程序未成功執行，因為預存程序中使用的 Amazon S3 儲存貯體名稱無效。

  ```
  Parameter Name : ERR_MESSAGE
  Parameter Value : Invalid S3 bucket name
  Return Status = -1006
  ```

  如需呼叫預存程序時傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

如需檢查預存程序狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

# 授予及撤銷 RDS for Db2 權限的預存程序
<a name="db2-sp-granting-revoking-privileges"></a>

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 資料庫的使用者、角色、群組和授權。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

如需使用這些預存程序的任務，請參閱 [授予及撤銷權限](db2-granting-revoking-privileges.md)和 [設定 Kerberos 身分驗證](db2-kerberos-setting-up.md)。

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.create\$1role](#db2-sp-create-role)
+ [rdsadmin.grant\$1role](#db2-sp-grant-role)
+ [rdsadmin.revoke\$1role](#db2-sp-revoke-role)
+ [rdsadmin.drop\$1role](#db2-sp-drop-role)
+ [rdsadmin.add\$1user](#db2-sp-add-user)
+ [rdsadmin.change\$1password](#db2-sp-change-password)
+ [rdsadmin.list\$1users](#db2-sp-list-users)
+ [rdsadmin.remove\$1user](#db2-sp-remove-user)
+ [rdsadmin.add\$1groups](#db2-sp-add-groups)
+ [rdsadmin.remove\$1groups](#db2-sp-remove-groups)
+ [rdsadmin.dbadm\$1grant](#db2-sp-dbadm-grant)
+ [rdsadmin.dbadm\$1revoke](#db2-sp-dbadm-revoke)
+ [rdsadmin.set\$1sid\$1group\$1mapping](#db2-sp-set-sid-group-mapping)
+ [rdsadmin.list\$1sid\$1group\$1mapping](#db2-sp-list-sid-group-mapping)
+ [rdsadmin.remove\$1sid\$1group\$1mapping](#db2-sp-remove-sid-group-mapping)

## rdsadmin.create\$1role
<a name="db2-sp-create-role"></a>

建立角色。

### 語法
<a name="db2-sp-create-role-syntax"></a>

```
db2 "call rdsadmin.create_role(
    'database_name',
    'role_name')"
```

### Parameters
<a name="db2-sp-create-role-parameters"></a>

下列是必要參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
您要建立角色的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-create-role-usage-notes"></a>

如需檢查建立角色狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-create-role-examples"></a>

下列範例會為資料庫 `DB2DB` 建立名為 `MY_ROLE` 的角色。

```
db2 "call rdsadmin.create_role(
    'DB2DB',
    'MY_ROLE')"
```

## rdsadmin.grant\$1role
<a name="db2-sp-grant-role"></a>

將角色指派給角色、使用者或群組。

### 語法
<a name="db2-sp-grant-role-syntax"></a>

```
db2 "call rdsadmin.grant_role(
    ?,
    'database_name',
    'role_name',
    'grantee',
    'admin_option')"
```

### Parameters
<a name="db2-sp-grant-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
您要建立角色的名稱。資料類型為 `varchar`。

*grantee*  
要接收授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`、`PUBLIC`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

下列是選用輸入參數：

*admin\$1option*  
指定承授者 `ROLE` 是否具有指派角色的 `DBADM` 授權。資料類型為 `char`。預設值為 `N`。

### 使用須知
<a name="db2-sp-grant-role-usage-notes"></a>

如需檢查指派角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-grant-role-examples"></a>

**範例 1：將角色指派給角色、使用者和群組，以及授予授權**

下列範例會為資料庫 `TESTDB` 將名為 `ROLE_TEST` 的角色指派給名為 `role1` 的角色、名為 `user1` 的使用者，以及名為 `group1` 的群組。`ROLE_TEST` 獲得指派角色的管理員授權。

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1',
    'Y')"
```

**範例 2：將角色指派給 `PUBLIC`，而不是授予授權**

下列範例會為資料庫 `TESTDB` 將名為 `ROLE_TEST` 的角色指派給 `PUBLIC`。`ROLE_TEST` 未獲得指派角色的管理員授權。

```
db2 "call rdsadmin.grant_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.revoke\$1role
<a name="db2-sp-revoke-role"></a>

從角色、使用者或群組撤銷角色。

### 語法
<a name="db2-sp-revoke-role-syntax"></a>

```
db2 "call rdsadmin.revoke_role(
    ?,
    'database_name',
    'role_name',
    'grantee')"
```

### Parameters
<a name="db2-sp-revoke-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數只接受 ?。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
要撤銷之角色的名稱。資料類型為 `varchar`。

*grantee*  
要失去授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`、`PUBLIC`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-revoke-role-usage-notes"></a>

如需檢查撤銷角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-revoke-role-examples"></a>

**範例 1：從角色、使用者和群組撤銷角色**

下列範例會從名為 `role1` 的角色、名為 `user1` 的使用者和名為 `group1` 的群組為資料庫 `TESTDB` 撤銷名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'ROLE role1, USER user1, GROUP group1')"
```

**範例 2：從 `PUBLIC` 撤銷角色**

下列範例會從 `PUBLIC` 為資料庫 `TESTDB` 撤銷名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.revoke_role(
    ?,
    'TESTDB',
    'ROLE_TEST',
    'PUBLIC')"
```

## rdsadmin.drop\$1role
<a name="db2-sp-drop-role"></a>

捨棄角色。

### 語法
<a name="db2-sp-drop-role-syntax"></a>

```
db2 "call rdsadmin.drop_role(
    ?,
    'database_name',
    'role_name')"
```

### Parameters
<a name="db2-sp-drop-role-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數只接受 ?。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*role\$1name*  
要捨棄之角色的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-drop-role-usage-notes"></a>

如需檢查捨棄角色狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-drop-role-examples"></a>

下列範例會為資料庫 `TESTDB` 捨棄名為 `ROLE_TEST` 的角色。

```
db2 "call rdsadmin.drop_role(
    ?,
    'TESTDB',
    'ROLE_TEST')"
```

## rdsadmin.add\$1user
<a name="db2-sp-add-user"></a>

將使用者新增至授權清單。

### 語法
<a name="db2-sp-add-user-syntax"></a>

```
db2 "call rdsadmin.add_user(
    'username',
    'password',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-add-user-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*password*  
使用者的密碼。資料類型為 `varchar`。

以下為選用參數：

*group\$1name*  
要新增使用者的群組之名稱。資料類型為 `varchar`。預設為空字串或 null。

### 使用須知
<a name="db2-sp-add-user-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將使用者新增至一或多個群組。

您可以在建立新使用者或[將群組新增至現有使用者](db2-granting-revoking-privileges.md#add-group-to-user)時建立群組。您無法自行建立群組。

**注意**  
您可以呼叫 `rdsadmin.add_user` 來新增的使用者數量上限為 5,000。

如需檢查新增使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-add-user-examples"></a>

下列範例會建立名為 `jorge_souza` 的使用者，並將使用者指派給名為 `sales` 和 `inside_sales` 的群組。

```
db2 "call rdsadmin.add_user(
    'jorge_souza',
    '*******',
    'sales,inside_sales')"
```

## rdsadmin.change\$1password
<a name="db2-sp-change-password"></a>

變更使用者的密碼。

### 語法
<a name="db2-sp-change-password-syntax"></a>

```
db2 "call rdsadmin.change_password(
    'username',
    'new_password')"
```

### Parameters
<a name="db2-sp-change-password-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*new\$1password*  
使用者的新密碼。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-change-password-usage-notes"></a>

如需檢查變更密碼狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-change-password-examples"></a>

下列範例會變更 `jorge_souza` 的密碼。

```
db2 "call rdsadmin.change_password(
    'jorge_souza',
    '*******')"
```

## rdsadmin.list\$1users
<a name="db2-sp-list-users"></a>

列出授權清單上的使用者。

### 語法
<a name="db2-sp-list-users-syntax"></a>

```
db2 "call rdsadmin.list_users()"
```

### 使用須知
<a name="db2-sp-list-users-usage-notes"></a>

如需檢查列出使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.remove\$1user
<a name="db2-sp-remove-user"></a>

從授權清單中移除使用者。

### 語法
<a name="db2-sp-remove-user-syntax"></a>

```
db2 "call rdsadmin.remove_user('username')"
```

### Parameters
<a name="db2-sp-remove-user-parameters"></a>

以下是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-user-usage-notes"></a>

如需檢查移除使用者狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-user-examples"></a>

下列範例會移除 `jorge_souza`，使其無法存取 RDS for Db2 資料庫執行個體中的資料庫。

```
db2 "call rdsadmin.remove_user('jorge_souza')"
```

## rdsadmin.add\$1groups
<a name="db2-sp-add-groups"></a>

將群組新增至使用者。

### 語法
<a name="db2-sp-add-groups-syntax"></a>

```
db2 "call rdsadmin.add_groups(
    'username',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-add-groups-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*group\$1name*  
要新增使用者的群組之名稱。資料類型為 `varchar`。預設為空字串。

### 使用須知
<a name="db2-sp-add-groups-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將一或多個群組新增至使用者。如需檢查新增群組狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-add-groups-examples"></a>

下列範例會將 `direct_sales` 和 `b2b_sales` 群組新增至使用者 `jorge_souza`。

```
db2 "call rdsadmin.add_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.remove\$1groups
<a name="db2-sp-remove-groups"></a>

從使用者移除群組。

### 語法
<a name="db2-sp-remove-groups-syntax"></a>

```
db2 "call rdsadmin.remove_groups(
    'username',
    'group_name,group_name')"
```

### Parameters
<a name="db2-sp-remove-groups-parameters"></a>

下列是必要參數：

*username*  
使用者的使用者名稱。資料類型為 `varchar`。

*group\$1name*  
要從中移除使用者之群組的名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-groups-usage-notes"></a>

您可以透過使用逗號分隔群組名稱，將一或多個群組從使用者移除。

如需檢查移除群組狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-groups-examples"></a>

下列範例會將 `direct_sales` 和 `b2b_sales` 群組從使用者 `jorge_souza` 移除。

```
db2 "call rdsadmin.remove_groups(
    'jorge_souza',
    'direct_sales,b2b_sales')"
```

## rdsadmin.dbadm\$1grant
<a name="db2-sp-dbadm-grant"></a>

將 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權授予角色、使用者或群組。

### 語法
<a name="db2-sp-dbadm-grant-syntax"></a>

```
db2 "call rdsadmin.dbadm_grant(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### Parameters
<a name="db2-sp-dbadm-grant-parameters"></a>

以下是必要輸出參數：

?  
輸出任務唯一識別符的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*authorization*  
要授予之授權的類型。資料類型為 `varchar`。有效值：`DBADM`、`ACCESSCTRL`、`DATAACCESS`。  
使用逗號分隔多種類型。

*grantee*  
要接收授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-dbadm-grant-usage-notes"></a>

接收存取權的角色必須存在。

如需檢查授予資料庫管理員存取權狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-dbadm-grant-examples"></a>

**範例 1：授予資料庫管理員對角色的存取權**

下列範例會授予資料庫管理員對角色 `ROLE_DBA` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**範例 2：將資料庫管理員存取權授予使用者和群組**

下列範例會授予資料庫管理員對 `user1` 和 `group1` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**範例 3：將資料庫管理員存取權授予多個使用者和群組**

下列範例會授予資料庫管理員對 `user1`、`user2`、`group1` 和 `group2` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_grant(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.dbadm\$1revoke
<a name="db2-sp-dbadm-revoke"></a>

從角色、使用者或群組撤銷 `DBADM`、`ACCESSCTRL` 或 `DATAACCESS` 授權。

### 語法
<a name="db2-sp-dbadm-revoke-syntax"></a>

```
db2 "call rdsadmin.dbadm_revoke(
    ?,
    'database_name',
    'authorization',
    'grantee')"
```

### Parameters
<a name="db2-sp-dbadm-revoke-parameters"></a>

以下是必要輸出參數：

?  
任務的唯一識別符。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*authorization*  
要撤銷之授權的類型。資料類型為 `varchar`。有效值：`DBADM`、`ACCESSCTRL`、`DATAACCESS`。  
使用逗號分隔多種類型。

*grantee*  
要撤銷授權的角色、使用者或群組。資料類型為 `varchar`。有效值：`ROLE`、`USER`、`GROUP`。  
格式必須為值，後面接著名稱。以逗號分隔多個值和名稱。範例：'`USER user1, user2, GROUP group1, group2`'。以您自己的資訊取代名稱。

### 使用須知
<a name="db2-sp-dbadm-revoke-usage-notes"></a>

如需檢查撤銷資料庫管理員存取權狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-dbadm-revoke-examples"></a>

**範例 1：從角色撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對角色 `ROLE_DBA` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB',
    'DBADM',
    'ROLE ROLE_DBA')"
```

**範例 2：從使用者和群組撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對 `user1` 和 `group1` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, GROUP group1')"
```

**範例 3：從多個使用者和群組撤銷資料庫管理員存取權**

下列範例會撤銷資料庫管理員對 `user1`、`user2`、`group1` 和 `group2` 名為 `TESTDB` 的資料庫存取權。

```
db2 "call rdsadmin.dbadm_revoke(
    ?, 
    'TESTDB', 
    'DBADM', 
    'USER user1, user2, GROUP group1, group2')"
```

## rdsadmin.set\$1sid\$1group\$1mapping
<a name="db2-sp-set-sid-group-mapping"></a>

在安全 ID (SID) 和對應的 Active Directory 群組之間建立映射。

### 語法
<a name="db2-sp-set-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'SID',
    'group_name')"
```

### Parameters
<a name="db2-sp-set-sid-group-mapping-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*SID*  
安全 ID (SID)。資料類型為 `varchar`。

*group\$1name*  
要映射至 SID 的 Active Directory 群組之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-set-sid-group-mapping-usage-notes"></a>

使用此預存程序，透過 Active Directory 群組啟用 Kerberos 身分驗證。如果映射中已存在 `SID` 或 `group_name`，則此預存程序會失敗。

如需如何尋找群組 SID 的相關資訊，請參閱 [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid)。

如需檢查建立映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-set-sid-group-mapping-examples"></a>

下列範例會將 SID 映射至名為 `my_group` 的群組。

```
db2 "call rdsadmin.set_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513',
    'my_group')"
```

## rdsadmin.list\$1sid\$1group\$1mapping
<a name="db2-sp-list-sid-group-mapping"></a>

列出在資料庫執行個體上設定的所有安全 ID (SID) 和 Active Directory 群組映射。

### 語法
<a name="db2-sp-list-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.list_sid_group_mapping()"
```

### 使用須知
<a name="db2-sp-list-sid-group-mapping-usage-notes"></a>

如需檢查列出映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.remove\$1sid\$1group\$1mapping
<a name="db2-sp-remove-sid-group-mapping"></a>

從資料庫執行個體移除安全 ID (SID) 及其對應的 Active Directory 群組映射。

### 語法
<a name="db2-sp-remove-sid-group-mapping-syntax"></a>

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'SID')"
```

### Parameters
<a name="db2-sp-remove-sid-group-mapping-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*SID*  
安全 ID (SID)。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-remove-sid-group-mapping-usage-notes"></a>

如需如何尋找群組 SID 的相關資訊，請參閱 [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](db2-kerberos-setting-up.md#db2-kerberos-setting-up-retrieve-ad-group-sid)。

如需檢查移除映射狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-remove-sid-group-mapping-examples"></a>

下列範例會從映射目標群組中移除 SID 映射。

```
db2 "call rdsadmin.remove_sid_group_mapping(
    ?,
    'S-1-5-21-9146495592-531070549-834388463-513')"
```

# RDS for Db2 稽核政策的預存程序
<a name="db2-sp-managing-audit-policies"></a>

本主題中所述的內建預存程序會管理使用稽核記錄的 Amazon RDS for Db2 資料庫的稽核政策。如需詳細資訊，請參閱[Db2 稽核記錄](Db2.Options.Audit.md)。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.configure\$1db\$1audit](#db2-sp-configure-db-audit)
+ [rdsadmin.disable\$1db\$1audit](#db2-sp-disable-db-audit)

## rdsadmin.configure\$1db\$1audit
<a name="db2-sp-configure-db-audit"></a>

為 *db*\$1name 指定的 RDS for Db2 資料庫設定稽核政策。如果您要設定的政策不存在，呼叫此預存程序會建立該政策。如果此政策確實存在，呼叫此預存程序會使用您提供的參數值對其進行修改。

### 語法
<a name="db2-sp-configure-db-audit-syntax"></a>

```
db2 "call rdsadmin.configure_db_audit(
    'db_name', 
    'category', 
    'category_setting', 
    '?')"
```

### Parameters
<a name="db2-sp-configure-db-audit-parameters"></a>

下列是必要參數。

*db\$1name*  
要為其設定稽核政策之 RDS for Db2 資料庫的資料庫名稱。資料類型為 `varchar`。

*category*  
要為其設定此稽核政策的類別名稱。資料類型為 `varchar`。以下是此參數的有效值：  
+ `ALL` – 使用 `ALL`，Amazon RDS 不包含 `CONTEXT`、`EXECUTE` 或 `ERROR` 類別。
+ `AUDIT` 
+ `CHECKING` 
+ `CONTEXT` 
+ `ERROR` 
+ `EXECUTE` – 您可以使用資料或不使用資料來設定此類別。使用資料表示也會記錄針對任何主機變數和參數標記提供的輸入資料值。預設值為不使用資料。如需詳細資訊，請參閱 *category\$1setting* 參數的描述和 [範例](#db2-sp-configure-db-audit-examples)。
+ `OBJMAINT` 
+ `SECMAINT` 
+ `SYSADMIN` 
+ `VALIDATE` 
如需這些類別的詳細資訊，請參閱 [IBM Db2 文件](https://www.ibm.com/docs/en/db2/11.1?topic=statements-create-audit-policy)。

*category\$1setting*  
指定稽核類別的設定。資料類型為 `varchar`。  
下表顯示每個類別的有效類別設定值。      
<a name="db2-option-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/db2-sp-managing-audit-policies.html)

### 使用須知
<a name="db2-sp-configure-db-audit-usage-notes"></a>

呼叫 `rdsadmin.configure_db_audit` 之前，請確定 RDS for Db2 資料庫執行個體與您要設定稽核政策的資料庫，與具有 `DB2_AUDIT` 選項的選項群組相關聯。如需詳細資訊，請參閱[設定 Db2 稽核記錄](Db2.Options.Audit.md#db2-audit-setting-up)。

設定稽核政策後，您可以依照 [檢查稽核組態](Db2.Options.Audit.md#db2-audit-check-config-status) 中的步驟檢查資料庫的稽核組態狀態。

指定 `category` 參數的 `ALL` 不包含 `CONTEXT`、`EXECUTE` 或 `ERROR` 類別。若要將這些類別新增至稽核政策，請分別呼叫 `rdsadmin.configure_db_audit`，其中包含您要新增的每個類別。如需詳細資訊，請參閱[範例](#db2-sp-configure-db-audit-examples)。

### 範例
<a name="db2-sp-configure-db-audit-examples"></a>

下列範例會為名為 `TESTDB` 的資料庫建立或修改稽核政策。在範例 1 到 5 中，如果先前未設定 `ERROR` 類別，則此類別會設為 `NORMAL` (預設值)。若要將該設定變更為 `AUDIT`，請遵循 [Example 6: Specifying the ERROR category](#example-6)。

**範例 1：指定 `ALL` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'ALL', 'BOTH', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `AUDIT`、`CHECKING`、`OBJMAINT`、`SECMAINT`、`SYSADMIN` 和 `VALIDATE` 類別。指定 `BOTH` 表示將稽核每個類別的成功和失敗事件。

**範例 2：使用資料指定 `EXECUTE` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'SUCCESS,WITH', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `EXECUTE` 類別。指定 `SUCCESS,WITH` 表示此類別的日誌將僅包含成功事件，並將包含針對主機變數和參數標記提供的輸入資料值。

**範例 3：指定不使用資料的 `EXECUTE` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'FAILURE,WITHOUT', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `EXECUTE` 類別。指定 `FAILURE,WITHOUT` 表示此類別的日誌將僅包含失敗事件，並不會包含針對主機變數和參數標記提供的輸入資料值。

**範例 4：指定不使用狀態事件的 `EXECUTE` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'EXECUTE', 'NONE', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `EXECUTE` 類別。指定 `NONE` 表示不會稽核此類別中的事件。

**範例 1：指定 `OBJMAINT` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'OBJMAINT', 'NONE', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `OBJMAINT` 類別。指定 `NONE` 表示不會稽核此類別中的事件。

**範例 6：指定 `ERROR` 類別**

```
db2 "call rdsadmin.configure_db_audit('TESTDB', 'ERROR', 'AUDIT', ?)"
```

在此範例中，呼叫會在稽核政策中設定 `ERROR` 類別。指定 `AUDIT` 表示所有錯誤 (包括稽核記錄本身發生的錯誤) 都會擷取在日誌中。預設錯誤類型為 `NORMAL`。使用 `NORMAL` 時，會忽略稽核所產生的錯誤，且只會擷取與正在執行的作業相關聯的 `SQLCODE` 錯誤。

## rdsadmin.disable\$1db\$1audit
<a name="db2-sp-disable-db-audit"></a>

停止 *db\$1name* 指定之 RDS for Db2 資料庫的稽核記錄，並移除為其設定的稽核政策。

**注意**  
此預存程序只會移除透過呼叫 [rdsadmin.configure\$1db\$1audit](#db2-sp-configure-db-audit) 設定的稽核政策。

### 語法
<a name="db2-sp-disable-db-audit-syntax"></a>

```
db2 "call rdsadmin.disable_db_audit('db_name', ?)"
```

### Parameters
<a name="db2-sp-disable-db-audit-parameters"></a>

下列是必要參數。

*db\$1name*  
要停用稽核記錄的 RDS for Db2 資料庫的資料庫名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-disable-db-audit-usage-notes"></a>

呼叫 `rdsadmin.disable_db_audit` 並不會停用 RDS for Db2 資料庫執行個體的稽核記錄。若要在資料庫執行個體層級停用稽核記錄，請從資料庫執行個體中移除選項群組。如需詳細資訊，請參閱[停用 Db2 稽核記錄](Db2.Options.Audit.md#db2-audit-disabling)。

### 範例
<a name="db2-sp-disable-db-audit-examples"></a>

下列範例會停用名為 `TESTDB` 之資料庫的稽核記錄。

```
db2 "call rdsadmin.disable_db_audit('TESTDB', ?)"
```

# RDS for Db2 緩衝集區的預存程序
<a name="db2-sp-managing-buffer-pools"></a>

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 資料庫的緩衝集區。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

這些預存程序用於各種任務。這不是完整清單。
+ [緩衝集區的常見任務](db2-managing-buffer-pools.md)
+ [產生效能報告](db2-managing-databases.md#db2-generating-performance-reports)
+ [使用 db2look 複製資料庫中繼資料](db2-native-db2-tools-db2look.md)
+ [為 IBM Db2 Data Management Console 建立儲存庫資料庫](db2-connecting-with-ibm-data-management-console.md#db2-creating-repo-db-monitoring-dmc)

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.create\$1bufferpool](#db2-sp-create-buffer-pool)
+ [rdsadmin.alter\$1bufferpool](#db2-sp-alter-buffer-pool)
+ [rdsadmin.drop\$1bufferpool](#db2-sp-drop-buffer-pool)

## rdsadmin.create\$1bufferpool
<a name="db2-sp-create-buffer-pool"></a>

建立緩衝集區。

### 語法
<a name="db2-sp-create-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.create_bufferpool(
    'database_name', 
    'buffer_pool_name', 
    buffer_pool_size, 
    'immediate', 
    'automatic', 
    page_size, 
    number_block_pages, 
    block_size)"
```

### Parameters
<a name="db2-sp-create-buffer-pool-parameters"></a>

下列是必要參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*buffer\$1pool\$1name*  
要建立的緩衝集區之名稱。資料類型為 `varchar`。

下列是選用參數：

*buffer\$1pool\$1size*  
緩衝集區的大小，以頁數表示。資料類型為 `integer`。預設值為 `-1`。

*immediate*  
指定命令是否立即執行。資料類型為 `char`。預設值為 `Y`。

*automatic*  
指定是否將緩衝集區設定為自動。資料類型為 `char`。預設值為 `Y`。

*page\$1size*  
緩衝集區的頁面大小。資料類型為 `integer`。有效值：`4096`、`8192`、`16384`、`32768`。預設值為 `8192`。

*number\$1block\$1pages*  
緩衝集區中的區塊頁面數目。資料類型為 `integer`。預設值為 `0`。

*block\$1size*  
區塊頁面的區塊大小。資料類型為 `integer`。有效值：`2` 到 `256`。預設值為 `32`。

### 使用須知
<a name="db2-sp-create-buffer-pool-usage-notes"></a>

如需檢查建立緩衝集區狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-create-buffer-pool-examples"></a>

**範例 1：使用預設參數建立緩衝集區**

下列範例會為具有預設參數名為 `TESTDB` 的資料庫建立名為 `BP8` 的緩衝集區，因此緩衝集區會使用 8 KB 的頁面大小。

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP8')"
```

**範例 2：建立緩衝集區以使用自動配置立即執行**

下列範例會為名為 `TESTDB` 的資料庫建立名為 `BP16` 的緩衝集區，該資料庫使用 16 KB 頁面大小，初始頁面計數為 1,000，並設定為自動。Db2 會立即執行命令。如果您使用的初始頁面計數為 -1，則 Db2 將使用頁面的自動配置。

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP16', 
    1000, 
    'Y', 
    'Y', 
    16384)"
```

**範例 3：建立緩衝集區以使用區塊頁面立即執行**

下列範例會為名為 `TESTDB` 的資料庫建立名為 `BP16` 的緩衝集區。此緩衝集區具有 16 KB 的頁面大小，初始頁面計數為 10,000。Db2 使用區塊大小為 512 的 500 個區塊頁面立即執行命令。

```
db2 "call rdsadmin.create_bufferpool(
    'TESTDB', 
    'BP16',
    10000, 
    'Y', 
    'Y', 
    16384, 
    500, 
    512)"
```

## rdsadmin.alter\$1bufferpool
<a name="db2-sp-alter-buffer-pool"></a>

修改緩衝集區。

### 語法
<a name="db2-sp-alter-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.alter_bufferpool(
    'database_name', 
    'buffer_pool_name', 
    buffer_pool_size, 
    'immediate', 
    'automatic', 
    change_number_blocks, 
    number_block_pages, 
    block_size)"
```

### Parameters
<a name="db2-sp-alter-buffer-pool-parameters"></a>

下列是必要參數：

*database\$1name*  
將在其中執行命令之資料庫的名稱。資料類型為 `varchar`。

*buffer\$1pool\$1name*  
要更改的緩衝集區之名稱。資料類型為 `varchar`。

*buffer\$1pool\$1size*  
緩衝集區的大小，以頁數表示。資料類型為 `integer`。

下列是選用參數：

*immediate*  
指定命令是否立即執行。資料類型為 `char`。預設值為 `Y`。

*automatic*  
指定是否將緩衝集區設定為自動。資料類型為 `char`。預設值為 `N`。

*change\$1number\$1blocks*  
指定緩衝集區中的區塊頁面數目是否有變更。資料類型為 `char`。預設值為 `N`。

*number\$1block\$1pages*  
緩衝集區中的區塊頁面數目。資料類型為 `integer`。預設值為 `0`。

*block\$1size*  
區塊頁面的區塊大小。資料類型為 `integer`。有效值：`2` 到 `256`。預設值為 `32`。

### 使用須知
<a name="db2-sp-alter-buffer-pool-usage-notes"></a>

如需檢查更改緩衝集區狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-alter-buffer-pool-examples"></a>

下列範例會將名為 `TESTDB` 的資料庫名為 `BP16` 的緩衝集區更改為非自動，並將大小變更為 10,000 頁。Db2 會立即執行此命令。

```
db2 "call rdsadmin.alter_bufferpool(
    'TESTDB',
    'BP16', 
    10000, 
    'Y', 
    'N')"
```

## rdsadmin.drop\$1bufferpool
<a name="db2-sp-drop-buffer-pool"></a>

捨棄緩衝集區。

### 語法
<a name="db2-sp-drop-buffer-pool-syntax"></a>

```
db2 "call rdsadmin.drop_bufferpool(
    'database_name', 
    'buffer_pool_name'"
```

### Parameters
<a name="db2-sp-drop-buffer-pool-parameters"></a>

下列是必要參數：

*database\$1name*  
緩衝集區所屬資料庫的名稱。資料類型為 `varchar`。

*buffer\$1pool\$1name*  
要捨棄的緩衝集區之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-drop-buffer-pool-usage-notes"></a>

如需檢查捨棄緩衝集區狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-drop-buffer-pool-examples"></a>

下列範例會為名為 `TESTDB` 的資料庫捨棄名為 `BP16` 的緩衝集區。

```
db2 "call rdsadmin.drop_bufferpool(
    'TESTDB',
    'BP16')"
```

# RDS for Db2 資料庫的預存程序
<a name="db2-sp-managing-databases"></a>

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 的資料庫。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

這些預存程序用於各種任務。這不是完整清單。
+ [資料庫的一般任務](db2-managing-databases.md)
+ [使用 EBCDIC 定序建立資料庫](db2-ebcdic.md)
+ [收集資料庫的相關資訊](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [修改資料庫組態參數](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [從 Linux 遷移至 Linux](db2-one-time-migration-linux.md)
+ [從 Linux 遷移到 Linux，停機時間接近零](db2-near-zero-downtime-migration.md)

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.create\$1database](#db2-sp-create-database)
+ [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database)
+ [rdsadmin.activate\$1database](#db2-sp-activate-database)
+ [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database)
+ [rdsadmin.drop\$1database](#db2-sp-drop-database)
+ [rdsadmin.update\$1db\$1param](#db2-sp-update-db-param)
+ [rdsadmin.set\$1configuration](#db2-sp-set-configuration)
+ [rdsadmin.show\$1configuration](#db2-sp-show-configuration)
+ [rdsadmin.backup\$1database](#db2-sp-backup-database)
+ [rdsadmin.restore\$1database](#db2-sp-restore-database)
+ [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)
+ [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)
+ [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)
+ [rdsadmin.db2pd\$1command](#db2-sp-db2pd-command)
+ [rdsadmin.force\$1application](#db2-sp-force-application)
+ [rdsadmin.set\$1archive\$1log\$1retention](#db2-sp-set-archive-log-retention)
+ [rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention)
+ [rdsadmin.list\$1archive\$1log\$1information](#db2-sp-list-archive-log-information)
+ [rdsadmin.enable\$1archive\$1log\$1copy](#db2-sp-enable_archive_log_copy)
+ [rdsadmin.disable\$1archive\$1log\$1copy](#db2-sp-disable_archive_log_copy)
+ [rdsadmin.fgac\$1command](#db2-sp-fgac-command)
+ [rdsadmin.db2support\$1command](#db2-sp-db2support-command)

## rdsadmin.create\$1database
<a name="db2-sp-create-database"></a>

建立資料庫。

### 語法
<a name="db2-sp-create-database-syntax"></a>

```
db2 "call rdsadmin.create_database(
    'database_name',
    'database_page_size',
    'database_code_set',
    'database_territory',
    'database_collation',
    'database_autoconfigure_str',
    'database_non-restrictive')"
```

### Parameters
<a name="db2-sp-create-database-parameters"></a>

**注意**  
此預存程序不會驗證必要參數的組合。當您呼叫 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 時，使用者定義的函數可能會傳回錯誤，因為 `database_codeset`、`database_territory` 和 `database_collation` 的組合無效。如需詳細資訊，請參閱 IBM Db2 文件中的[選擇資料庫的程式碼頁面、區域和定序](https://www.ibm.com/docs/en/db2/11.5?topic=support-choosing-code-page-territory-collation-your-database)。

以下是必要參數：

*database\$1name*  
要建立之資料庫的名稱。資料類型為 `varchar`。

下列是選用參數：

*database\$1page\$1size*  
資料庫的預設頁面大小。有效值：`4096`、`8192`、`16384`、`32768`。資料類型為 `integer`。預設值為 `8192`。  
Amazon RDS 支援 4 KiB、8 KiB 和 16 KiB 頁面的寫入原子性。相反地，32 KiB 頁面會有*扭曲寫入*的風險，或寫入磁碟的部分資料。如果您使用 32 KiB 頁面，則建議您啟用 point-in-time 復原和自動備份。否則，您會面臨無法從未完成頁面復原的風險。如需詳細資訊，請參閱[備份簡介](USER_WorkingWithAutomatedBackups.md)及[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

*database\$1code\$1set*  
資料庫的程式碼集。資料類型為 `varchar`。預設值為 `UTF-8`。

*database\$1territory*  
資料庫的雙字母國家/地區代碼。資料類型為 `varchar`。預設值為 `US`。

*database\$1collation*  
定序序列會決定存放在資料庫中字元字串的排序和比較方式。資料類型為 `varchar`。  
有效值：  
+ `COMPATIBILITY` – IBM Db2 第 2 版定序序列。
+ `EBCDIC_819_037` – ISO Latin 程式碼頁面，定序；CCSID 037 (EBCDIC US English)。
+ `EBCDIC_819_500` – ISO Latin 程式碼頁面，定序；CCSID 500 (EBCDIC International)。
+ `EBCDIC_850_037` – ASCII Latin 程式碼頁面，定序；CCSID 037 (EBCDIC US English)。
+ `EBCDIC_850_500` – ASCII Latin 程式碼頁面，定序；CCSID 500 (EBCDIC International)。
+ `EBCDIC_932_5026` – ASCII Japanese 程式碼頁面，定序；CCSID 5026 (EBCDIC US English)。
+ `EBCDIC_932_5035` – ASCII Japanese 程式碼頁面，定序；CCSID 5035 (EBCDIC International)。
+ `EBCDIC_1252_037` – Windows Latin 程式碼頁面，定序；CCSID 037 (EBCDIC US English)。
+ `EBCDIC_1252_500` – Windows Latin 程式碼頁面，定序；CCSID 500 (EBCDIC International).
+ `IDENTITY` – 預設定序。字串會以位元組對位元組進行比較。
+ `IDENTITY_16BIT` – UTF-16 的相容性編碼結構描述：8 位元 (CESU-8) 定序序列。如需詳細資訊，請參閱 Unicode Consortium 網站上的 [Unicode 技術報告 \$126](https://www.unicode.org/reports/tr26/tr26-4.html)。
+ `NLSCHAR` – 僅適用於 Thai 程式碼頁面 (CP874)。
+ `SYSTEM` – 如果您使用 `SYSTEM`，則資料庫會自動使用 `database_codeset`和 `database_territory` 的定序序列。
預設值為 `IDENTITY`。  
此外，RDS for Db2 支援下列定序群組：`language-aware-collation` 和 `locale-sensitive-collation`。如需詳細資訊，請參閱 IBM Db2 文件中的[選擇 Unicode 資料庫的定序](https://www.ibm.com/docs/en/db2/11.5?topic=collation-choosing-unicode-database)。

*database\$1autoconfigure\$1str*  
`AUTOCONFIGURE` 命令語法，例如 `'AUTOCONFIGURE APPLY DB'`。資料類型為 `varchar`。預設為空字串或 null。  
如需詳細資訊，請參閱 IBM Db2 文件中的 [AUTOCONFIGURE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=cc-autoconfigure)。

*database\$1non-restrictive*  
在資料庫中授予預設授權單位和權限。資料類型為 `varchar`。預設值為 `N`。  
有效值：  
+ `N` – 建立的資料庫具有限制性，不會授予授權單位或權限。
+ `Y` – 建立的資料庫是非限制性的，並將一組許可授予特殊群組 `PUBLIC`。如需詳細資訊，請參閱 IBM Db2 文件中[建立資料庫時授予的預設權限](https://www.ibm.com/docs/en/db2/11.5.x?topic=ownership-default-privileges-granted-creating-database)。

### 使用須知
<a name="db2-sp-create-database-usage-notes"></a>

如果您打算修改 `db2_compatibility_vector` 參數，在建立資料庫之前，請修改參數。如需詳細資訊，請參閱[設定 db2\$1compatibility\$1vector 參數](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector)。

特別考量：
+ 傳送至 Db2 執行個體的 `CREATE DATABASE` 命令使用 `RESTRICTIVE` 選項。
+ RDS for Db2 僅使用 `AUTOMATIC STORAGE` 資料表空間。
+ RDS for Db2 使用 `NUMSEGS` 和 `DFT_EXTENT_SZ` 的預設值。
+ RDS for Db2 使用儲存加密，且不支援資料庫加密。

如需這些考量的詳細資訊，請參閱 IBM Db2 文件中的 [CREATE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database#:~:text=in%20the%20database.-,RESTRICTIVE,-If%20the%20RESTRICTIVE)。

呼叫 `rdsadmin.create_database` 之前，您必須連線到 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的 RDS for Db2 資料庫執行個體資訊：

```
db2 connect to rdsadmin user master_username using master_password
```

如需檢查建立資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.create_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-create-database-examples"></a>

下列範例會建立名為 `TESTJP` 的資料庫，其中包含日本的 *database\$1code\$1set*、*database\$1territory* 和 *database\$1collation* 參數的正確組合：

```
db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"
```

## rdsadmin.deactivate\$1database
<a name="db2-sp-deactivate-database"></a>

停用資料庫。

### 語法
<a name="db2-sp-deactivate-database-syntax"></a>

```
db2 "call rdsadmin.deactivate_database(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-deactivate-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要停用的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-deactivate-database-usage-notes"></a>

您可以停用資料庫以節省記憶體資源，或進行其他資料庫組態變更。若要讓已停用的資料庫恢復連線，請呼叫 [rdsadmin.activate\$1database](#db2-sp-activate-database) 預存程序。

您無法在複寫期間透過呼叫 `rdsadmin.deactivate_database` 預存程序來停用來源資料庫執行個體上的資料庫。

如需檢查停用資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.deactivate_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-deactivate-database-examples"></a>

下列範例會停用名為 `TESTDB` 的資料庫。

```
db2 "call rdsadmin.deactivate_database(?, 'TESTDB')"
```

## rdsadmin.activate\$1database
<a name="db2-sp-activate-database"></a>

啟用資料庫。

如需有關 [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database) 和 `rdsadmin.activate_database` 之間的差異的資訊，請參閱 [使用須知](#db2-sp-activate-database-usage-notes)。

### 語法
<a name="db2-sp-activate-database-syntax"></a>

```
db2 "call rdsadmin.activate_database(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-activate-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要啟用的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-activate-database-usage-notes"></a>

所有資料庫預設都會在建立時啟用。如果您[停用]()獨立資料庫執行個體上的資料庫來節省記憶體資源或進行其他資料庫組態變更，請呼叫 `rdsadmin.activate_database` 預存程序，以再次啟用資料庫。

此預存程序只會啟用位於獨立資料庫執行個體上的資料庫，且該資料庫是透過呼叫 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 預存程序來停用。若要在複本來源資料庫執行個體上啟用資料庫，您必須呼叫 [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database) 預存程序。

如需檢查啟用資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.activate_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-activate-database-examples"></a>

下列範例會啟用名為 `TESTDB` 的資料庫。

```
db2 "call rdsadmin.activate_database(?, 'TESTDB')"
```

## rdsadmin.reactivate\$1database
<a name="db2-sp-reactivate-database"></a>

重新啟用資料庫。

如需 [rdsadmin.activate\$1database](#db2-sp-activate-database) 與 `rdsadmin.reactivate_database` 之間差異的相關資訊，請參閱 [使用須知](#db2-sp-reactivate-database-usage-notes)。

### 語法
<a name="db2-sp-reactivate-database-syntax"></a>

```
db2 "call rdsadmin.reactivate_database(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-reactivate-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要重新啟用的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-reactivate-database-usage-notes"></a>

當您呼叫 `rdsadmin.reactivate_database` 預存程序時，預存程序會先呼叫 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 預存程序來停用資料庫，然後再呼叫 [rdsadmin.activate\$1database](#db2-sp-activate-database) 預存程序來啟用資料庫。

變更資料庫組態之後，您可能需要在 RDS for Db2 資料庫執行個體上重新啟用資料庫。若要判斷是否需要重新啟用資料庫，請連線至資料庫並執行 `db2 get db cfg show detail`。

針對獨立資料庫執行個體上的資料庫，您可以使用 `rdsadmin.reactivate_database` 儲存程序來重新啟用資料庫。或者，如果您已呼叫 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 預存程序，則可以改為呼叫 [rdsadmin.activate\$1database](#db2-sp-activate-database) 預存程序。

針對複本來源資料庫執行個體上的資料庫，您必須使用 `rdsadmin.reactivate_database` 儲存程序來重新啟用資料庫。

如需檢查重新啟用資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.reactivate_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-reactivate-database-examples"></a>

下列範例會重新啟用名為 `TESTDB` 的資料庫。

```
db2 "call rdsadmin.reactivate_database(?, 'TESTDB')"
```

## rdsadmin.drop\$1database
<a name="db2-sp-drop-database"></a>

捨棄資料庫。

### 語法
<a name="db2-sp-drop-database-syntax"></a>

```
db2 "call rdsadmin.drop_database('database_name')"
```

### Parameters
<a name="db2-sp-drop-database-parameters"></a>

以下是必要參數：

*database\$1name*  
要捨棄的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-drop-database-usage-notes"></a>

只有在符合下列條件時，您才能呼叫 `rdsadmin.drop_database` 來捨棄資料庫：
+ 當您使用 Amazon RDS 主控台或 AWS CLI來建立 RDS for Db2 資料庫執行個體時，並未指定資料庫的名稱。如需詳細資訊，請參閱[建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。
+ 您已透過呼叫 [rdsadmin.create\$1database](#db2-sp-create-database) 預存程序來建立資料庫。
+ 您已透過呼叫 [rdsadmin.restore\$1database](#db2-sp-restore-database) 預存程序，從離線或備份映像還原資料庫。

呼叫 `rdsadmin.drop_database` 之前，您必須連線到 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的 RDS for Db2 資料庫執行個體資訊：

```
db2 connect to rdsadmin user master_username using master_password
```

如需檢查捨棄資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.drop_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-drop-database-examples"></a>

下列範例會捨棄名為 `TESTDB` 的資料庫：

```
db2 "call rdsadmin.drop_database('TESTDB')"
```

## rdsadmin.update\$1db\$1param
<a name="db2-sp-update-db-param"></a>

更新資料庫參數。

### 語法
<a name="db2-sp-update-db-param-syntax"></a>

```
db2 "call rdsadmin.update_db_param(
    'database_name', 
    'parameter_to_modify', 
    'changed_value',
    'restart_database')"
```

### Parameters
<a name="db2-sp-update-db-param-parameters"></a>

下列是必要參數：

*database\$1name*  
要執行任務之資料庫的名稱。資料類型為 `varchar`。

*parameter\$1to\$1modify*  
要修改之參數的名稱。資料類型為 `varchar`。如需詳細資訊，請參閱[Amazon RDS for Db2 參數](db2-supported-parameters.md)。

*changed\$1value*  
要變更參數值的目標值。資料類型為 `varchar`。

以下為選用參數：

*restart\$1database*  
指定 RDS 在需要重新啟動時是否會重新啟動資料庫。資料類型為 `varchar`。若要修改 `logprimary`和 `logfilsiz`，請將此參數設為 `'YES'`。

### 使用須知
<a name="db2-sp-update-db-param-usage-notes"></a>

如需檢查更新資料庫參數的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.update_db_param` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-update-db-param-examples"></a>

**範例 1：更新參數 **

下列範例會將名為 `TESTDB` 之資料庫的 `archretrydelay` 參數更新為 `100`：

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'archretrydelay', 
    '100')"
```

**範例 2：延遲物件的驗證**

下列範例會延遲驗證名為 `TESTDB` 的資料庫中所建立的物件，以避免相依性檢查：

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'auto_reval', 
    'deferred_force')"
```

## rdsadmin.set\$1configuration
<a name="db2-sp-set-configuration"></a>

設定資料庫的特定設定。

### 語法
<a name="db2-sp-set-configuration-syntax"></a>

```
db2 "call rdsadmin.set_configuration(
    'name',  
    'value')"
```

### Parameters
<a name="db2-sp-set-configuration-parameters"></a>

下列是必要參數：

*name*  
組態設定的名稱。資料類型為 `varchar`。

*value*  
組態設定的值。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-set-configuration-usage-notes"></a>

下表顯示您可以使用 `rdsadmin.set_configuration` 控制的組態設定。


| 名稱 | 描述 | 
| --- | --- | 
|  `RESTORE_DATABASE_NUM_BUFFERS`  |  在還原作業期間所要建立緩衝區的數目。此值必須小於資料庫執行個體類別的總記憶體大小。如果未設定此設定，則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊，請參閱 IBM Db2 文件中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。  | 
|  `RESTORE_DATABASE_PARALLELISM`  |  在還原作業期間所要建立緩衝區操縱器的數目。此值必須小於資料庫執行個體 vCPU 數目的兩倍。如果未設定此設定，則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊，請參閱 IBM Db2 文件中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。  | 
|  `RESTORE_DATABASE_NUM_MULTI_PATHS`  |  從 Amazon S3 操作還原期間要使用的路徑 （或 I/O 串流） 數目。若要使用此組態設定，您必須有多個備份檔案。此值可以改善使用大量資料還原資料庫時的效能，因為它會平行還原多個資料庫備份檔案。我們建議您設定此值以符合資料庫備份檔案的數目。如需詳細資訊，請參閱 IBM Db2 文件中的 [BACKUP DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-backup-database)。  | 
|  `USE_STREAMING_RESTORE`  |  指定是否要在還原期間直接串流備份資料，而不是先將整個備份下載到您的 RDS for Db2 資料庫執行個體，然後解壓縮。`USE_STREAMING_RESTORE` 將 設定為 可`TRUE`大幅降低儲存需求，並可改善還原效能。此設定需要 IBM Db2 引擎版本 11.5.9.0.sb00063198.r1 或更高版本，並透過資料庫的彈性網路界面 (ENI) 連接 Amazon S3。如需詳細資訊，請參閱 IBM Db2 文件中的[遠端儲存](https://www.ibm.com/docs/en/db2/11.5.x?topic=databases-remote-storage)。  | 

### 範例
<a name="db2-sp-set-configuration-examples"></a>

**範例 1：指定要建立的緩衝區數目**

下列範例會將 `RESTORE_DATABASE_NUM_BUFFERS` 組態設定為 `150`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_BUFFERS', 
    '150')"
```

**範例 2：指定要建立的緩衝區操縱器數量**

下列範例會將 `RESTORE_DATABASE_PARALLELISM` 組態設定為 `8`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_PARALLELISM', 
    '8')"
```

**範例 3：指定還原期間要使用的路徑或 I/O 串流數目**

下列範例會將 `RESTORE_DATABASE_NUM_MULTI_PATHS` 組態設定為 `5`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_MULTI_PATHS', 
    '5')"
```

**範例 4：將還原設定為串流備份資料**

下列範例會將 `USE_STREAMING_RESTORE` 組態設定為 `TRUE`。

```
db2 "call rdsadmin.set_configuration(
    'USE_STREAMING_RESTORE', 
    'TRUE')"
```

## rdsadmin.show\$1configuration
<a name="db2-sp-show-configuration"></a>

傳回您可以使用預存程序 `rdsadmin.set_configuration` 設定的目前設定。

### 語法
<a name="db2-sp-show-configuration-syntax"></a>

```
db2 "call rdsadmin.show_configuration(
    'name')"
```

### Parameters
<a name="db2-sp-show-configuration-parameters"></a>

以下為選用參數：

*name*  
要傳回相關資訊的組態設定之名稱。資料類型為 `varchar`。  
下列組態名稱為有效：  
+ `RESTORE_DATABASE_NUM_BUFFERS` – 在還原操作期間要建立的緩衝區數目。
+ `RESTORE_DATABASE_PARALLELISM` – 在還原操作期間要建立的緩衝區操縱器數目。
+ `RESTORE_DATABASE_NUM_MULTI_PATHS` – 從 Amazon S3 操作還原期間要使用的路徑 （或 I/O 串流） 數目。
+ `USE_STREAMING_RESTORE` – 指定是否要在還原期間直接串流備份資料，而不是先將整個備份資料下載到您的 RDS for Db2 資料庫執行個體，然後解壓縮。

### 使用須知
<a name="db2-sp-show-configuration-usage-notes"></a>

如果您未指定組態設定的名稱，則 `rdsadmin.show_configuration` 會傳回您可以使用預存程序 `rdsadmin.set_configuration` 設定之所有組態設定的資訊。

### 範例
<a name="db2-sp-show-configuration-examples"></a>

下列範例會傳回目前 `RESTORE_DATABASE_PARALLELISM` 組態的相關資訊。

```
db2 "call rdsadmin.show_configuration(
    'RESTORE_DATABASE_PARALLELISM')"
```

## rdsadmin.backup\$1database
<a name="db2-sp-backup-database"></a>

將資料庫從 RDS for Db2 資料庫執行個體備份到 Amazon S3 儲存貯體。

### 語法
<a name="db2-sp-backup-database-syntax"></a>

```
db2 "call rdsadmin.backup_database(
    ?,
    'database_name', 
    's3_bucket_name', 
    's3_prefix', 
    'backup_type',
    'compression_option',
    'util_impact_priority', 
    'num_files',
    'parallelism',
    'num_buffers')"
```

### Parameters
<a name="db2-sp-backup-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
RDS for Db2 資料庫執行個體上要備份的目標資料庫名稱。資料類型為 `varchar`。  
資料庫必須存在於資料庫執行個體中。您無法備份`rdsadmin`資料庫。

*s3\$1bucket\$1name*  
您希望備份所在的 Amazon S3 儲存貯體名稱。資料類型為 `varchar`。  
在呼叫 之前，S3 儲存貯體必須存在`rdsadmin.backup_database`，與您要備份的 RDS for Db2 資料庫執行個體中的目標資料庫位於相同 AWS 區域 位置，並且可以透過連接至資料庫執行個體的 IAM 角色存取。

*s3\$1prefix*  
Amazon S3 路徑的字首，其中 RDS for Db2 會上傳備份檔案。資料類型為 `varchar`。  
字首限制為 1024 個字元。它不得包含正斜線或尾斜線 (/)。由於IBM 串流至 Amazon S3 的限制，我們建議字首包含子目錄。  
為了更好地管理檔案，RDS for Db2 會在 *s3\$1prefix* 之後建立額外的目錄。RDS for Db2 將所有備份檔案上傳至 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*。如果您將 *num\$1files* 設定為高於 `1`，*db\$1name* 目錄將包含多個備份檔案。  
以下是備份檔案的 Amazon S3 位置範例。在此範例中， `backups/daily`是為 *s3\$1prefix* 參數設定的值。  

```
backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB
```

*backup\$1type*  
決定資料庫是否在備份期間保持可用的備份類型。資料類型為 `varchar`。  
有效值：  
+ `OFFLINE` – 資料庫在備份期間無法使用。此類型較快，但會導致停機時間。
+ `ONLINE` – 在備份期間，資料庫仍然可用。根據預設，`ONLINE` 會設定為 `INCLUDE LOGS`。

下列是選用參數：

*compression\$1option*  
使用的壓縮演算法類型，會影響備份時間、CPU 用量和儲存成本。資料類型為 `varchar`。預設值為 `NONE`。  
有效值：  
+ `NONE` – 最大的檔案大小、最低的 CPU 使用量，以及最便宜的儲存成本。
+ `STANDARD` – 標準 Db2 壓縮。使用 `libdb2compr.so`。
+ `ZLIB` – 增強型 Db2 壓縮。使用 `libdb2zcompr.so`，但 CPU 密集且最昂貴的儲存成本。

*util\$1impact\$1priority*  
控制備份對系統資源影響的設定。資料類型為 `integer`。有效值： `1`–`100` （從低到高）。預設值為 `50`。  
較低的值可減少備份對系統資源的影響，但可能會增加備份資料庫所需的時間。較高的值可能會更快地完成資料庫的備份，但可能會影響其他操作。實際影響取決於整體系統使用率和`util_impact_lim`設定。您可以在參數群組中檢視和修改`util_impact_lim`設定。如需詳細資訊，請參閱[Amazon RDS for Db2 參數](db2-supported-parameters.md)。

*num\$1files*  
平行上傳至 Amazon S3 的串流數目。資料類型為 `integer`。有效值：`1`–`256`。  
建議您只在以 Amazon RDS 自動計算的預設值觀察備份效能之後，才設定此參數。較高的值可以改善大型備份的效能，尤其是高頻寬連線，但在特定時間點，較高的值會降低效能。此外，請務必考量可用的系統資源和網路容量。

*平行處理*  
備份公用程式可以平行讀取的資料表空間數目。資料類型為 `integer`。有效值：`1`–`256`。  
建議您在預設情況下觀察 Db2 引擎自動計算為最佳值的備份效能後，才設定此參數。如果您設定此參數，Amazon RDS 會根據可用的處理器進行驗證，如果處理能力不足，則不會執行備份請求。

*num\$1buffers*  
要使用的緩衝區數量。資料類型為 `integer`。有效值：`1`–`268435456`。  
建議您只在觀察預設 Amazon RDS 根據記憶體自動計算的備份效能之後，才設定此參數。如果您設定此參數，Amazon RDS 會根據可用的記憶體進行驗證，如果可用的記憶體不足，則不會執行備份請求。如果您要備份到多個位置 (`num_files` 設定為超過 `1`)，則更多緩衝區可能會改善效能。如果您未`compression_option`將 設定為 `NONE`，則可以透過增加 `num_buffers`和 來改善效能`parallelism`。

### 使用須知
<a name="db2-sp-backup-database-usage-notes"></a>

此預存程序會建立非同步備份任務，使用 Amazon S3 整合將資料庫備份直接串流至 Amazon S3 儲存貯體。您可以從本機伺服器或從 RDS for Db2 資料庫執行個體進行備份，將其串流至 Amazon S3，然後視需要還原。如需將資料庫還原至 RDS for Db2 資料庫執行個體的詳細資訊，請參閱 [rdsadmin.restore\$1database](#db2-sp-restore-database)。

呼叫預存程序之前，請檢閱下列考量事項：
+ 您一次只能備份一個資料庫。
+ 您無法在資料庫執行個體上執行備份和還原。
+ 不支援使用 AWS KMS (SSE-KMS) 的 Amazon S3 伺服器端加密。即使 S3 儲存貯體設定為 SSE-KMS，上傳至 S3 儲存貯體的檔案也不會使用 SSE-KMS 加密。
+ 若要將備份檔案串流至 Amazon S3，您必須已設定整合。如需詳細資訊，請參閱[整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。
+ 若要讓 RDS for Db2 資料庫執行個體能夠與 Amazon S3 互動，您必須擁有 VPC 和 Amazon S3 閘道端點，私有子網路才能使用。如需詳細資訊，請參閱[步驟 1：這會為 Amazon S3 建立 VPC 閘道端點](db2-troubleshooting.md#db2-creating-endpoint)及[步驟 2：確認 Amazon S3 的 VPC 閘道端點存在](db2-troubleshooting.md#db2-confirming-endpoint)。

呼叫 `rdsadmin.backup_database` 之前，您必須連線到 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的 RDS for Db2 資料庫執行個體資訊：

```
db2 connect to rdsadmin user master_username using master_password
```

備份資料庫之後，請務必終止連線。

```
terminate
```

如需有關檢查備份資料庫狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.backup_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-backup-database-examples"></a>

所有範例都會將名為 的資料庫備份`MYDB`至名為 的 Amazon S3 儲存貯體，`amzn-s3-demo-bucket`並將 *s3\$1prefix* 設定為 `backups/daily`。

**範例 \$11：指定資料庫離線，且無法使用中位數使用率和單一上傳串流**

在下列範例中，資料庫離線，速度更快，但表示資料庫在備份期間無法使用。此範例不會執行檔案壓縮、對系統資源造成中位數影響，並使用單一上傳串流至 Amazon S3。

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'OFFLINE',
    'NONE', 
    50, 
    1)"
```

**範例 2：指定線上資料庫，並提供增強壓縮、中位數使用率和少量平行上傳串流**

在下列範例中， 中的資料庫會上線，並在備份期間提供。此範例會執行增強型壓縮，這會導致較小的檔案大小，但 CPU 密集型。它對系統資源的影響略高於中位數，並使用五個上傳串流到 Amazon S3。

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'ONLINE',
    'ZLIB', 
    60, 
    5)"
```

**範例 \$13：指定離線資料庫，且無法使用預設值和系統計算**

在下列範例中，資料庫離線，速度更快，但表示資料庫在備份期間無法使用。此範例使用檔案的預設壓縮和對系統資源的影響。它還允許 RDS for Db2 計算 Amazon S3 平行上傳串流的數量、要平行讀取的資料表空間，以及要使用的緩衝區。

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket',
    'backups/daily', 
    'OFFLINE')"
```

**範例 4：在沒有壓縮、高使用率和自訂計算的情況下，指定離線和無法使用的資料庫**

在下列範例中，資料庫離線，速度更快，但表示資料庫在備份期間無法使用。此範例不會執行檔案壓縮，對系統資源有高度影響，並使用 20 個上傳串流至 Amazon S3。它會將資料表空間數目上限設定為平行讀取，如果處理能力不足，可能會導致備份請求失敗。它也會設定要使用的緩衝區數目上限，如果記憶體不足，可能會導致備份請求失敗。

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket', 
    'backups/daily', 
    'OFFLINE', 
    'NONE', 
    90, 
    20, 
    256, 
    268435456)"
```

## rdsadmin.restore\$1database
<a name="db2-sp-restore-database"></a>

將資料庫從 Amazon S3 儲存貯體還原至 RDS for Db2 資料庫執行個體。

### 語法
<a name="db2-sp-restore-database-syntax"></a>

```
db2 "call rdsadmin.restore_database(
    ?,
    'database_name', 
    's3_bucket_name', 
    's3_prefix', 
    restore_timestamp, 
    'backup_type')"
```

### Parameters
<a name="db2-sp-restore-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要在 RDS for Db2 中還原的目標資料庫之名稱。資料類型為 `varchar`。  
例如，如果來源資料庫名稱為 `TESTDB`，而您將 *database\$1name* 設定為 `NEWDB`，則 Amazon RDS 會將 `NEWDB` 還原為來源資料庫。

*s3\$1bucket\$1name*  
備份所在 Amazon S3 儲存貯體的名稱。資料類型為 `varchar`。

*s3\$1prefix*  
在下載期間用於檔案比對的字首。資料類型為 `varchar`。  
如果此參數為空，則會處理 Amazon S3 儲存貯體中的所有檔案。下列是範例字首：  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

*restore\$1timestamp*  
資料庫備份映像的時間戳記。資料類型為 `varchar`。  
時間戳記包含在備份檔案名稱中。例如，`20230615010101` 是檔案名稱 `SAMPLE.0.rdsdb.DBPART000.20230615010101.001` 的時間戳記。

*backup\$1type*  
備份的類型。資料類型為 `varchar`。有效值：`OFFLINE`、`ONLINE`。  
將 `ONLINE` 用於接近零的停機時間遷移。如需更多詳細資訊，請參閱 [Amazon RDS for Db2 接近零的停機時間從 Linux 遷移到 Linux](db2-near-zero-downtime-migration.md)。

### 使用須知
<a name="db2-sp-restore-database-usage-notes"></a>

您可以使用此預存程序將 Db2 資料庫遷移至 RDS for Db2 資料庫執行個體。如需詳細資訊，請參閱[使用 AWS 服務將資料從 Db2 遷移至 Amazon RDS for Db2](db2-migration-approaches.md)。您也可以使用此預存程序，以使用相同還原映像的不同資料庫名稱來建立相同資料庫的多個複本。

呼叫預存程序之前，請檢閱下列考量事項：
+ 還原資料庫之前，您必須為大於磁碟上原始 Db2 資料庫的 RDS for Db2 資料庫執行個體佈建儲存空間。 Db2 如果您啟用 `USE_STREAMING_RESTORE`，則當您還原備份時，Amazon RDS 會將備份檔案直接從 S3 儲存貯體串流至 RDS for Db2 資料庫執行個體。如果您未啟用 `USE_STREAMING_RESTORE`，則必須為 RDS for Db2 資料庫執行個體佈建儲存空間，該儲存空間等於或大於備份大小加磁碟上原始 Db2 資料庫的總和。如需詳細資訊，請參閱。
+ 當您還原備份時，Amazon RDS 會在 RDS for Db2 資料庫執行個體上擷取備份檔案。每個備份檔案都必須為 5 TB 或更小。如果備份檔案超過 5 TB，您必須將備份檔案分割為較小的檔案。
+ 若要使用 `rdsadmin.restore_database` 預存程序還原所有檔案，請勿包含檔案名稱中時間戳記後面的檔案編號尾碼。例如，*s3\$1prefix*`backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101` 會還原下列檔案：

  ```
  SAMPLE.0.rdsdb.DBPART000.20230615010101.001
  SAMPLE.0.rdsdb.DBPART000.20230615010101.002
  SAMPLE.0.rdsdb.DBPART000.20230615010101.003
  SAMPLE.0.rdsdb.DBPART000.20230615010101.004
  SAMPLE.0.rdsdb.DBPART000.20230615010101.005
  ```
+ RDS for Db2 不支援非自動儲存。如需詳細資訊，請參閱[Tablespaces not restored](db2-troubleshooting.md#restore-database-sp-tablespaces-not-restored)。
+ RDS for Db2 不支援非連接常式。如需詳細資訊，請參閱[Non-fenced routines not allowed](db2-troubleshooting.md#restore-database-sp-non-fenced-routines)。
+ 若要改善資料庫還原操作的效能，您可以設定緩衝區數目、緩衝區操縱器，以及 RDS 要使用的多個備份路徑數目。若要最佳化儲存體用量並可能改善效能，您也可以直接從 Amazon S3 串流備份。若要檢查目前的組態，請使用 [rdsadmin.show\$1configuration](#db2-sp-show-configuration)。若要變更組態，請使用 [rdsadmin.set\$1configuration](#db2-sp-set-configuration)。

若要讓資料庫上線，並在還原資料庫後套用其他交易日誌，請參閱 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)。

如需檢查資料庫還原狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫 `rdsadmin.restore_database` 時所傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-restore-database-examples"></a>

下列範例使用具有 *s3\$1prefix* `backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101` 的單一檔案或多個檔案來還原離線備份：

```
db2 "call rdsadmin.restore_database(
    ?,
    'SAMPLE',
    'amzn-s3-demo-bucket',
    'backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101',
    20230615010101,
    'OFFLINE')"
```

## rdsadmin.rollforward\$1database
<a name="db2-sp-rollforward-database"></a>

讓資料庫上線，並在透過呼叫 [rdsadmin.restore\$1database](#db2-sp-restore-database) 還原資料庫之後套用其他交易日誌。

### 語法
<a name="db2-sp-rollforward-database-syntax"></a>

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'database_name',
    's3_bucket_name', 
    s3_prefix, 
    'rollforward_to_option', 
    'complete_rollforward')"
```

### Parameters
<a name="db2-sp-rollforward-database-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要在其中執行作業的資料庫之名稱。資料類型為 `varchar`。

*s3\$1bucket\$1name*  
備份所在 Amazon S3 儲存貯體的名稱。資料類型為 `varchar`。

*s3\$1prefix*  
在下載期間用於檔案比對的字首。資料類型為 `varchar`。  
如果此參數為空，則會下載 S3 儲存貯體中的所有檔案。下列範例為範例字首：  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

下列是選用輸入參數：

*rollforward\$1to\$1option*  
您要向前捲動的目標點。資料類型為 `varchar`。有效值：`END_OF_LOGS`，`END_OF_BACKUP`時間戳記格式為 `YYYY-MM-DD-HH.MM.SS`。預設值為 `END_OF_LOGS`。

*complete\$1rollforward*  
指定是否完成向前捲動程序。資料類型為 `varchar`。預設值為 `TRUE`。  
如果為 `TRUE`，則完成後，資料庫會上線並可存取。如果為 `FALSE`，則資料庫會保持 `ROLL-FORWARD PENDING` 狀態。

### 使用須知
<a name="db2-sp-rollforward-database-usage-notes"></a>

您可以使用 `rds.rollforward_database` 進行線上備份，其中包含在許多不同情況下內部部署產生的日誌。

**案例 1：還原資料庫、向前捲動包含的日誌，以及將資料庫上線**

`rdsadmin.restore_database()` 完成之後，請使用[範例 1](#db2-sp-rollforward-database-examples) 中的語法，將含有交易日誌的資料庫上線。

**案例 2：將資料庫上線，但不向前捲動包含的日誌。**

`rdsadmin.restore_database()` 完成之後，請使用[範例 2](#db2-sp-rollforward-database-examples) 中的語法，將不含交易日誌的資料庫上線。

**案例 3：向前捲動備份中包含的日誌，並在內部部署產生其他交易日誌時套用這些交易日誌**

`rdsadmin.restore_database()` 完成後，使用[範例 3 或範例 4](#db2-sp-rollforward-database-examples) 中的語法來向前捲動日誌，而不將資料庫上線。

如果您將 `complete_rollforward` 設定為 `FALSE`，則資料庫處於 `ROLL-FORWARD PENDING` 狀態且離線。若要將資料庫上線，您必須呼叫 [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)。

如需檢查向前捲動資料庫狀態的相關資訊，請參閱 [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)。

### 範例
<a name="db2-sp-rollforward-database-examples"></a>

**範例 1：將含有交易日誌的資料庫上線**

下列範例會向前捲動至含有交易日誌的資料庫之線上備份，然後將資料庫上線：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    null,
    null,
    'END_OF_LOGS',
    'TRUE')"
```

**範例 2：將不含交易日誌的資料庫上線**

下列範例會向前捲動至不含交易日誌的資料庫之線上備份，然後將資料庫上線：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/,
    'END_OF_BACKUP',
    'TRUE')"
```

**範例 1：不將含有交易日誌的資料庫上線**

下列範例會向前捲動至含有交易日誌的資料庫之線上備份，然後不將資料庫上線：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    null,
    'onlinebackup/TESTDB',
    'END_OF_LOGS',
    'FALSE')"
```

**範例 4：不將含有其他交易日誌的資料庫上線**

下列範例會向前捲動至含有其他交易日誌的資料庫之線上備份，然後不將資料庫上線：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/S0000155.LOG',
    'END_OF_LOGS',
    'FALSE')"
```

## rdsadmin.rollforward\$1status
<a name="db2-sp-rollforward-status"></a>

傳回 `ROLLFORWARD DATABASE database_name QUERY STATUS` 的輸出。

### 語法
<a name="db2-sp-rollforward-status-syntax"></a>

```
db2 "call rdsadmin.rollforward_status(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-rollforward-status-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要在其中執行作業的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-rollforward-status-usage-notes"></a>

呼叫 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database) 之後，您可以呼叫 `rdsadmin.rollforward_status` 來檢查資料庫中向前捲動的狀態。

如需檢查此預存程序狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.complete\$1rollforward
<a name="db2-sp-complete-rollforward"></a>

從 `ROLL-FORWARD PENDING` 狀態將資料庫上線。

### 語法
<a name="db2-sp-complete-rollforward-syntax"></a>

```
db2 "call rdsadmin.complete_rollforward(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-complete-rollforward-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
欲上線的資料庫之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-complete-rollforward-usage-notes"></a>

如果您呼叫 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database) 並將 `complete_rollforward` 設定為 `FALSE`，則您的資料庫處於 `ROLL-FORWARD PENDING` 狀態且離線。若要完成向前捲動程序並將資料庫上線，請呼叫 `rdsadmin.complete_rollforward`。

如需檢查完成向前捲動程序狀態的相關資訊，請參閱 [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)。

### 範例
<a name="db2-sp-complete-rollforward-examples"></a>

下列範例可將 TESTDB 資料庫上線：

```
db2 "call rdsadmin.complete_rollforward(
    ?,
    'TESTDB')"
```

## rdsadmin.db2pd\$1command
<a name="db2-sp-db2pd-command"></a>

收集 RDS for Db2 資料庫的相關資訊。

### 語法
<a name="db2-sp-db2pd-command-syntax"></a>

```
db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
```

### Parameters
<a name="db2-sp-db2pd-command-parameters"></a>

以下是必要輸入參數：

*db2pd\$1cmd*  
欲執行的 `db2pd` 命令之名稱。資料類型為 `varchar`。  
參數必須以連字號開頭。如需參數清單，請參閱 IBM Db2 文件中的 [db2pd - 監控及故障診斷 Db2 資料庫命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)。  
不支援下列選項：  
+ `-addnode`
+ `-alldatabases`
+ `-alldbp`
+ `-alldbs`
+ `-allmembers`
+ `-alm_in_memory`
+ `-cfinfo`
+ `-cfpool`
+ `-command`
+ `-dbpartitionnum`
+ `-debug`
+ `-dump`
+ `-everything`
+ `-file | -o`
+ `-ha`
+ `-interactive`
+ `-member`
+ `-pages`
**注意**  
系統支援 `-pages summary`。
+ `-pdcollection`
+ `-repeat`
+ `-stack`
+ `-totalmem`
不支援 `file` 子選項，例如 `db2pd -db testdb -tcbstats file=tcbstat.out`。  
不支援使用 `stacks` 選項，例如 `db2pd -edus interval=5 top=10 stacks`。

### 使用須知
<a name="db2-sp-db2pd-command-usage-notes"></a>

此預存程序會收集有助於監控及故障診斷 RDS for Db2 資料庫的資訊。

預存程序會使用 IBM `db2pd` 公用程式來執行各種命令。`db2pd` 公用程式需要 `SYSADM` 授權，RDS for Db2 主要使用者並沒有該授權。不過，透過 Amazon RDS 預存程序，主要使用者可以使用公用程式來執行各種命令。如需關於公用程式的詳細資訊，請參閱 IBM Db2 文件中的 [db2pd - 監控 Db2 資料庫命令並進行故障診斷](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)。

輸出上限為 2 GB。

如需檢查收集資料庫相關資訊狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-db2pd-command-examples"></a>

**範例 1：傳回資料庫執行個體的運行時間**

下列範例會傳回 RDS for Db2 資料庫執行個體的運行時間：

```
db2 "call rdsadmin.db2pd_command('-')"
```

**範例 2：傳回資料庫的運行時間**

下列範例會傳回名為 `TESTDB` 之資料庫的運行時間：

```
db2 "call rdsadmin.db2pd_command('-db TESTDB -')"
```

**範例 3：傳回資料庫執行個體的記憶體用量**

下列範例會傳回 RDS for Db2 資料庫執行個體的記憶體用量：

```
db2 "call rdsadmin.db2pd_command('-dbptnmem')"
```

**範例 4：傳回資料庫執行個體和資料庫的記憶體集**

下列範例會傳回 RDS for Db2 資料庫執行個體的記憶體集以及名為 `TESTDB` 的資料庫：

```
db2 "call rdsadmin.db2pd_command('-inst -db TESTDB -memsets')"
```

## rdsadmin.force\$1application
<a name="db2-sp-force-application"></a>

強制應用程式退出 RDS for Db2 資料庫。

### 語法
<a name="db2-sp-force-application-syntax"></a>

```
db2 "call rdsadmin.force_application(
    ?,
    'applications')"
```

### Parameters
<a name="db2-sp-force-application-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*應用程式*  
欲強制退出 RDS for Db2 資料庫的應用程式。資料類型為 `varchar`。有效值：`ALL` 或 *application\$1handle*。  
使用逗號分隔多個應用程式的名稱。範例：'*application\$1handle\$11*, *application\$1handle\$12*'。

### 使用須知
<a name="db2-sp-force-application-usage-notes"></a>

此預存程序會強制所有應用程式退出資料庫，讓您可以執行維護。

預存程序使用 IBM `FORCE APPLICATION` 命令。`FORCE APPLICATION` 命令需要 `SYSADM`、`SYSMAINT` 或 `SYSCTRL` 授權，RDS for Db2 主要使用者並沒有該授權。不過，透過 Amazon RDS 預存程序，主要使用者即可以使用命令。如需詳細資訊，請參閱 IBM Db2 文件中的 [FORCE APPLICATION 命令](https://www.ibm.com/docs/en/db2/11.1?topic=commands-force-application)。

如需檢查強制應用程式退出資料庫狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-force-application-examples"></a>

**範例 1：指定所有應用程式**

下列範例會強制所有應用程式退出 RDS for Db2 資料庫：

```
db2 "call rdsadmin.force_application(
    ?,
    'ALL')"
```

**範例 2：指定多個應用程式**

下列範例會強制應用程式處理 `9991`、`8891` 和 `1192` 退出 RDS for Db2 資料庫：

```
db2 "call rdsadmin.force_application(
    ?,
    '9991, 8891, 1192')"
```

## rdsadmin.set\$1archive\$1log\$1retention
<a name="db2-sp-set-archive-log-retention"></a>

設定保留指定 RDS for Db2 資料庫封存日誌檔案的時間量 (以小時為單位)。

### 語法
<a name="db2-sp-set-archive-log-retention-syntax"></a>

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,            
    'database_name',  
    'archive_log_retention_hours')"
```

### Parameters
<a name="db2-sp-set-archive-log-retention-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要設定封存日誌保留的資料庫之名稱。資料類型為 `varchar`。

*archive\$1log\$1retention\$1hours*  
保留封存日誌檔案的時數。資料類型為 `smallint`。預設值為 `0`，上限為 `840`(35 天）。  
如果值為 `0`，則 Amazon RDS 不會保留封存日誌檔案。

### 使用須知
<a name="db2-sp-set-archive-log-retention-usage-notes"></a>

根據預設，RDS for Db2 會保留日誌 5 分鐘。如果您使用 等複寫工具 AWS DMS 進行變更資料擷取 (CDC) 或 IBM Q Replication，建議您在這些工具中設定超過 5 分鐘的日誌保留。

您可以呼叫 [rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention) 來檢視目前的封存日誌保留設定。

您無法在 `rdsadmin` 資料庫上設定封存日誌保留設定。

### 範例
<a name="db2-sp-set-archive-log-retention-examples"></a>

**範例 1：設定保留時間**

下列範例會將名為 `TESTDB` 之資料庫的封存日誌保留時間設定為 24 小時。

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '24')"
```

**範例 2：停用保留時間**

下列範例會停用名為 `TESTDB` 之資料庫的封存日誌保留。

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '0')"
```

## rdsadmin.show\$1archive\$1log\$1retention
<a name="db2-sp-show-archive-log-retention"></a>

傳回指定資料庫目前的封存日誌保留設定。

### 語法
<a name="db2-sp-show-archive-log-retention-syntax"></a>

```
db2 "call rdsadmin.show_archive_log_retention(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-show-archive-log-retention-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要顯示封存日誌保留設定的資料庫之名稱。資料類型為 `varchar`。

### 範例
<a name="db2-sp-show-archive-log-retention-examples"></a>

下列範例會顯示名為 `TESTDB` 之資料庫的封存日誌保留設定。

```
db2 "call rdsadmin.show_archive_log_retention(?,'TESTDB')"
```

## rdsadmin.list\$1archive\$1log\$1information
<a name="db2-sp-list-archive-log-information"></a>

傳回封存日誌檔案的詳細資訊，例如大小、建立日期和時間，以及指定資料庫的個別日誌檔案之名稱。其也會傳回資料庫中日誌檔案所使用的總儲存量。

### 語法
<a name="db2-sp-list-archive-log-information-syntax"></a>

```
db2 "call rdsadmin.list_archive_log_information(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-list-archive-log-information-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要列出封存日誌資訊的資料庫之名稱。資料類型為 `varchar`。

### 範例
<a name="db2-sp-list-archive-log-information-examples"></a>

下列範例會傳回名為 `TESTDB` 之資料庫的封存日誌資訊。

```
db2 "call rdsadmin.list_archive_log_information(
    ?,
    'TESTDB')"
```

## rdsadmin.enable\$1archive\$1log\$1copy
<a name="db2-sp-enable_archive_log_copy"></a>

啟用 RDS Db2 資料庫封存日誌複製到 Amazon S3。

### 語法
<a name="db2-sp-enable_archive_log_copy-syntax"></a>

```
db2 "call rdsadmin.enable_archive_log_copy(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-enable_archive_log_copy-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要啟用封存日誌複製到 Amazon S3 的資料庫名稱。資料類型為 `varchar`。

### 範例
<a name="db2-sp-enable_archive_log_copy-examples"></a>

下列範例會啟用名為 之資料庫的封存日誌副本`TESTDB`。

```
db2 "call rdsadmin.enable_archive_log_copy(
    ?,
    'TESTDB')"
```

## rdsadmin.disable\$1archive\$1log\$1copy
<a name="db2-sp-disable_archive_log_copy"></a>

停用 RDS Db2 資料庫封存日誌複製到 Amazon S3。

### 語法
<a name="db2-sp-disable_archive_log_copy-syntax"></a>

```
db2 "call rdsadmin.disable_archive_log_copy(
    ?,
    'database_name')"
```

### Parameters
<a name="db2-sp-disable_archive_log_copy-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要停用封存日誌複製到 Amazon S3 的資料庫名稱。資料類型為 `varchar`。

### 範例
<a name="db2-sp-disable_archive_log_copy-examples"></a>

下列範例會停用名為 之資料庫的封存日誌副本`TESTDB`。

```
db2 "call rdsadmin.disable_archive_log_copy(
    ?,
    'TESTDB')"
```

## rdsadmin.fgac\$1command
<a name="db2-sp-fgac-command"></a>

執行精細存取控制 (FGAC) 命令。

### 語法
<a name="db2-sp-fgac-command-syntax"></a>

```
db2 "call rdsadmin.fgac_command(
    ?,
    'database_name',
    'fgac_cmd')"
```

### Parameters
<a name="db2-sp-fgac-command-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
您要在其上執行 FGAC 命令的資料庫名稱。資料類型為 `varchar`。

*fgac\$1cmd*  
您要執行的精細存取控制命令。資料類型為 `varchar`。  
下列命令有效：  
+ `ALTER MASK` – 修改資料列和資料欄存取控制 (RCAC) 中的現有資料欄遮罩。
+ `ALTER PERMISSION` – 修改 RCAC 中現有資料列許可的屬性。
+ `ALTER SECURITY POLICY` – 修改 RCAC 的現有安全政策。
+ `ALTER SECURITY LABEL` – 修改標籤型存取控制 (LBAC) 中現有安全標籤的屬性。
+ `ALTER TABLE` – 修改資料表結構，包括新增 RCAC 或 LBAC 控制項。
+ `CREATE MASK` – 為 RCAC 建立新的資料欄遮罩。
+ `CREATE PERMISSION` – 為 RCAC 建立新的資料列許可。
+ `CREATE SECURITY LABEL` – 為 LBAC 建立新的安全標籤。
+ `CREATE SECURITY POLICY` – 為 RCAC 建立新的安全政策。
+ `DROP MASK` – 捨棄現有的資料欄遮罩。
+ `DROP PERMISSION` – 捨棄現有的資料列許可。
+ `DROP SECURITY LABEL` – 從 LBAC 捨棄安全標籤。
+ `DROP SECURITY POLICY` – 捨棄現有的 RCAC 安全政策。
+ `GRANT EXEMPTION ON RULE` – 允許使用者略過特定 LBAC 規則。
+ `GRANT SECURITY LABEL` – 將 LBAC 安全標籤指派給使用者。
+ `REVOKE EXEMPTION ON RULE` – 從 LBAC 規則中移除使用者的豁免。
+ `REVOKE SECURITY LABEL` – 從使用者移除 LBAC 安全標籤。

### 使用須知
<a name="db2-sp-fgac-command-usage-notes"></a>

此預存程序會在資料列或資料欄層級控制對 RDS for Db2 資料庫執行個體上資料庫中資料表資料的存取。RDS for Db2 支援資料庫上的兩種 FGAC 類型：
+ 標籤型存取控制 (LBAC)
+ 資料列和資料欄存取控制 (RCAC)

呼叫預存程序之前，請檢閱下列考量事項：
+ 若要逸出單引號 (')，請使用額外的單引號。下列範例示範如何逸出 `'apple'`、 `'banana'`和 `'fruit'`。

  ```
  db2 "call rdsadmin.fgac_command(
      ?,
      'testdb',
      'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
  ```

  ```
  db2 "call rdsadmin.fgac_command(
      ?, 
      'testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITTREE TREE(''fruit'' ROOT, ''apple'' UNDER ''fruit'', ''banana'' UNDER ''fruit'')')"
  ```
+ 若要逸出括號 (【 】)，請使用反斜線 (\$1)。下列範例示範如何逸出 `[''apple'',''banana'']`。

  ```
  db2 "call rdsadmin.fgac_command(
      ?, '
      testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"
  ```

### 範例
<a name="db2-sp-fgac-command-examples"></a>

下列範例會在名為 的資料庫上執行 FGAC 命令`testdb`。

**範例 1：建立新的安全標籤，稱為 `FRUITSET`** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
```

**範例 2：為當 `EMP_ID` 設定為少於三個 時啟用的資料`EMP_ID`欄建立新的遮罩**

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK id_MASK ON EMPLOYEE FOR COLUMN EMP_ID RETURN CASE WHEN (EMP_ID < 3) THEN EMP_ID ELSE NULL END ENABLE')"
```

**範例 3：為`SESSION_USER`設定為 時啟用的資料`DEPARTMENT`欄建立新的遮罩 `security_user`** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK DEPARTMENT_MASK ON EMPLOYEE FOR COLUMN DEPARTMENT RETURN CASE  WHEN SESSION_USER = ''security_user'' THEN DEPARTMENT ELSE NULL END ENABLE')"
```

**範例 4：建立新的安全標籤，稱為 `treelabel`** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT treelabel  TREE(''COMPANY'' ROOT, ''HR'' UNDER ''COMPANY'', ''FINANCE'' UNDER ''COMPANY'', ''IT'' UNDER ''COMPANY'')')"
```

## rdsadmin.db2support\$1command
<a name="db2-sp-db2support-command"></a>

收集 RDS for Db2 資料庫的診斷資訊，並將其上傳至 Amazon S3 儲存貯體。

### 語法
<a name="db2-sp-db2support-command-syntax"></a>

```
db2 "call rdsadmin.db2support_command(
    ?,
    'database_name',
    's3_bucket_name',
    's3_prefix')"
```

### Parameters
<a name="db2-sp-db2support-command-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。此參數僅接受 `?`。

以下是必要輸入參數：

*database\$1name*  
要收集診斷資訊的資料庫名稱。資料類型為 `varchar`。

*s3\$1bucket\$1name*  
您要上傳診斷資訊的 Amazon S3 儲存貯體名稱。資料類型為 `varchar`。

*s3\$1prefix*  
Amazon S3 路徑的字首，其中 RDS for Db2 會上傳診斷檔案。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-db2support-command-usage-notes"></a>

此預存程序會收集診斷資訊，以協助對 Db2 資料庫的 RDS 進行故障診斷，並將資訊上傳至 Amazon S3 儲存貯體。

預存程序會使用 IBM`db2support`公用程式來收集診斷資料。如需 公用程式的詳細資訊，請參閱 IBM Db2 文件中的 [db2support - 問題分析和環境收集工具命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2support-problem-analysis-environment-collection-tool)。

呼叫預存程序之前，請檢閱下列考量事項：
+ 若要將診斷檔案上傳至 Amazon S3，您必須已設定整合。如需詳細資訊，請參閱[整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3](db2-s3-integration.md)。
+ 若要讓 RDS for Db2 資料庫執行個體能夠與 Amazon S3 互動，您必須擁有 VPC 和 Amazon S3 閘道端點，私有子網路才能使用。如需詳細資訊，請參閱[步驟 1：這會為 Amazon S3 建立 VPC 閘道端點](db2-troubleshooting.md#db2-creating-endpoint)及[步驟 2：確認 Amazon S3 的 VPC 閘道端點存在](db2-troubleshooting.md#db2-confirming-endpoint)。

呼叫 `rdsadmin.db2support_command` 之前，您必須連線到 `rdsadmin` 資料庫。在下列範例中，將 *master\$1username* 和 *master\$1password* 取代為您的 RDS for Db2 資料庫執行個體資訊：

```
db2 connect to rdsadmin user master_username using master_password
```

如需檢查收集診斷資訊狀態的資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-db2support-command-examples"></a>

**範例 1：收集資料庫的診斷資訊**

下列範例會收集名為 之資料庫的診斷資訊，`TESTDB`並將其上傳至名為 `amzn-s3-demo-bucket`且字首為 的 Amazon S3 儲存貯體`diagnostics/testdb`：

```
db2 "call rdsadmin.db2support_command(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'diagnostics/testdb')"
```

**範例 2：使用以日期為基礎的字首收集診斷資訊**

下列範例會收集名為 之資料庫的診斷資訊，`MYDB`並將其上傳至名為 `amzn-s3-demo-bucket`且具有日期型字首的 Amazon S3 儲存貯體：

```
db2 "call rdsadmin.db2support_command(
    ?,
    'MYDB',
    'amzn-s3-demo-bucket',
    'support/2024/01/15')"
```

# RDS for Db2 儲存體存取的預存程序
<a name="db2-sp-managing-storage-access"></a>

本主題中所述的內建預存程序會管理使用 Amazon S3 遷移資料的 RDS for Db2 資料庫的儲存體存取。如需更多詳細資訊，請參閱 [透過 Amazon S3 將 Db2 資料遷移至 Amazon RDS for Db2](db2-migration-load-from-s3.md)。

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.catalog\$1storage\$1access](#db2-sp-catalog-storage-access)
+ [rdsadmin.uncatalog\$1storage\$1access](#db2-sp-uncatalog-storage-access)

## rdsadmin.catalog\$1storage\$1access
<a name="db2-sp-catalog-storage-access"></a>

使用 Db2 資料檔案為存取 Amazon S3 儲存貯體的儲存體別名編製目錄。

### 語法
<a name="db2-sp-catalog-storage-access-syntax"></a>

```
db2 "call rdsadmin.catalog_storage_access(
    ?,
    'alias',
    's3_bucket_name',
    'grantee_type',
    'grantee'
    )"
```

### 參數
<a name="db2-sp-catalog-storage-access-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。資料類型為 `varchar`。

以下是必要輸入參數：

*alias*  
用於存取 Amazon S3 儲存貯體中遠端儲存體的別名。資料類型為 `varchar`。

*s3\$1bucket\$1name*  
存放資料的 Amazon S3 儲存貯體之名稱。資料類型為 `varchar`。

*grantee\$1type*  
要接收授權的承授者之類型。資料類型為 `varchar`。有效值：`USER`、`GROUP`。

*grantee*  
要接收授權的使用者或群組。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-catalog-storage-access-usage-notes"></a>

Amazon RDS 會在您新增至 RDS for Db2 資料庫執行個體的 IAM 角色中包含目錄化別名。如果您從資料庫執行個體中移除 IAM 角色，則 Amazon RDS 會刪除別名。如需更多詳細資訊，請參閱 [透過 Amazon S3 將 Db2 資料遷移至 Amazon RDS for Db2](db2-migration-load-from-s3.md)。

如需檢查編目別名狀態的詳細資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-catalog-storage-access-examples"></a>

下列範例會註冊名為 `SAMPLE` 的別名。使用者 `jorge_souza` 有權存取名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體。

```
db2 "call rdsadmin.catalog_storage_access(
    ?,
    'SAMPLE', 
    'amzn-s3-demo-bucket', 
    'USER', 
    'jorge_souza')"
```

## rdsadmin.uncatalog\$1storage\$1access
<a name="db2-sp-uncatalog-storage-access"></a>

移除儲存體存取別名。

### 語法
<a name="db2-sp-uncatalog-storage-access-syntax"></a>

```
db2 "call rdsadmin.uncatalog_storage_access(
    ?,
    'alias')"
```

### 參數
<a name="db2-sp-uncatalog-storage-access-parameters"></a>

以下是必要輸出參數：

?  
輸出錯誤訊息的參數標記。資料類型為 `varchar`。

以下是必要輸入參數：

*alias*  
要移除的儲存體別名之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-uncatalog-storage-access-usage-notes"></a>

如需檢查移除別名狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-uncatalog-storage-access-examples"></a>

下列範例會移除名為 `SAMPLE` 的別名。此別名不再提供與其相關聯之 Amazon S3 儲存貯體的存取權。

```
db2 "call rdsadmin.uncatalog_storage_access(
    ?,
    'SAMPLE')"
```

# RDS for Db2 資料表空間的預存程序
<a name="db2-sp-managing-tablespaces"></a>

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 資料庫的資料表空間。若要執行這些程序，主要使用者必須先連線到 `rdsadmin` 資料庫。

這些預存程序用於各種任務。這不是完整清單。
+ [資料表空間的常見任務](db2-managing-tablespaces.md)
+ [產生效能報告](db2-managing-databases.md#db2-generating-performance-reports)
+ [使用 db2look 複製資料庫中繼資料](db2-native-db2-tools-db2look.md)
+ [為 IBM Db2 Data Management Console 建立儲存庫資料庫](db2-connecting-with-ibm-data-management-console.md#db2-creating-repo-db-monitoring-dmc)

如需語法、參數、用量備註和範例的相關資訊，請參閱下列內建預存程序。

**Topics**
+ [rdsadmin.create\$1tablespace](#db2-sp-create-tablespace)
+ [rdsadmin.alter\$1tablespace](#db2-sp-alter-tablespace)
+ [rdsadmin.rename\$1tablespace](#db2-sp-rename-tablespace)
+ [rdsadmin.drop\$1tablespace](#db2-sp-drop-tablespace)

## rdsadmin.create\$1tablespace
<a name="db2-sp-create-tablespace"></a>

建立資料表空間。

### 語法
<a name="db2-sp-create-tablespace-syntax"></a>

```
db2 "call rdsadmin.create_tablespace(
    'database_name', 
    'tablespace_name',
    'buffer_pool_name', 
    tablespace_page_size,
    tablespace_initial_size, 
    tablespace_increase_size, 
    'tablespace_type',
    'tablespace_prefetch_size')"
```

### Parameters
<a name="db2-sp-create-tablespace.parameters"></a>

下列是必要參數：

*database\$1name*  
用於建立資料表空間的資料庫之名稱。資料類型為 `varchar`。

*tablespace\$1name*  
要建立的資料表空間之名稱。資料類型為 `varchar`。  
資料表空間名稱有下列限制：  
+ 該名稱不能與此資料庫中現有資料表空間的名稱相同。
+ 該名稱只能包含字元 `_$#@a-zA-Z0-9`。
+ 該名稱不能以 `_` 或 `$` 開頭。
+ 該名稱不能以 `SYS` 開頭。

下列是選用參數：

*buffer\$1pool\$1name*  
要指派資料表空間的緩衝集區之名稱。資料類型為 `varchar`。預設為空字串。  
您必須已有相同頁面大小的緩衝集區，才能與資料表空間建立關聯。

*tablespace\$1page\$1size*  
資料表空間的頁面大小 (以位元組為單位)。資料類型為 `integer`。有效值：`4096`、`8192`、`16384`、`32768`。預設值是當您呼叫 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 來建立資料庫時所使用的頁面大小。  
Amazon RDS 支援 4 KiB、8 KiB 和 16 KiB 頁面的寫入原子性。相反地，32 KiB 頁面則有未完成寫入，或部分資料寫入桌面的風險。如果您使用 32 KiB 頁面，則建議您啟用 point-in-time 復原和自動備份。否則，您會面臨無法從未完成頁面復原的風險。如需詳細資訊，請參閱[備份簡介](USER_WorkingWithAutomatedBackups.md)及[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

*tablespace\$1initial\$1size*  
資料表空間的初始大小 (以 KB (KB) 為單位)。資料類型為 `integer`。有效值：`48` 或更高。預設值為空。  
如果您未設定值，則 Db2 會為您設定適當的值。  
此參數不適用於暫存資料表空間，因為系統會管理暫存資料表空間。

*tablespace\$1increase\$1size*  
資料表空間變滿時要增加的百分比。資料類型為 `integer`。有效值：`1`–`100`。預設值為空。  
如果您未設定值，則 Db2 會為您設定適當的值。  
此參數不適用於暫存資料表空間，因為系統會管理暫存資料表空間。

*tablespace\$1type*  
資料表空間的類型。資料類型為 `char`。有效值：`U` (適用於使用者資料)、`T` (適用於使用者暫存資料) 或 `S` (適用於系統暫存資料)。預設值為 `U`。

*tablespace\$1prefetch\$1size*  
資料表空間的預先擷取頁面大小。資料類型為 `char`。有效值：`AUTOMATIC` (不區分大小寫)，或是小於或等於 32767 的非零正整數。

### 使用須知
<a name="db2-sp-create-tablespace-usage-notes"></a>

RDS for Db2 一律會為資料建立大型資料庫。

如需檢查建立資料表空間狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-create-tablespace-examples"></a>

**範例 1：建立資料表空間並指派緩衝集區**

下列範例會建立名為 `SP8` 的資料表空間，並為名為 `TESTDB` 的資料庫指派名為 `BP8` 的緩衝集區。資料表空間的初始資料表空間頁面大小為 4,096 個位元組，初始資料表空間為 1,000 KB，資料表大小增加設定為 50%。

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    'BP8',
    4096,
    1000,
    50)"
```

**範例 2：建立暫存資料表空間並指派緩衝集區**

下列範例會建立名為 `SP8` 的暫存資料表空間。它會為名為 `TESTDB` 的資料庫指派名為 `BP8` 的緩衝集區 (大小為 8 KiB)。

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    'BP8', 
    8192, 
    NULL, 
    NULL, 
    'T')"
```

**範例 3：建立資料表空間並指派預先擷取頁面大小**

下列範例會為名為 `TESTDB` 的資料庫建立名為 `SP8` 的資料表空間。資料表空間的初始資料表空間會增加 `50` 的大小，以及增加預先擷取頁面 `800` 的大小。

```
db2 "call rdsadmin.create_tablespace(
    'TESTDB',
    'SP8',
    NULL,
    NULL,
    NULL,
    50,
    NULL,
    '800')"
```

## rdsadmin.alter\$1tablespace
<a name="db2-sp-alter-tablespace"></a>

修改資料表空間。

### 語法
<a name="db2-sp-alter-tablespace-syntax"></a>

```
db2 "call rdsadmin.alter_tablespace(
    'database_name', 
    'tablespace_name', 
    'buffer_pool_name', 
    tablespace_increase_size, 
    'max_size', 
    'reduce_max', 
    'reduce_stop', 
    'reduce_value', 
    'lower_high_water', 
    'lower_high_water_stop', 
    'switch_online',
    'tablespace_prefetch_size')"
```

### Parameters
<a name="db2-sp-alter-tablespace-parameters"></a>

下列是必要參數：

*database\$1name*  
使用資料表空間的資料庫之名稱。資料類型為 `varchar`。

*tablespace\$1name*  
要修改的資料表空間之名稱。資料類型為 `varchar`。

下列是選用參數：

*buffer\$1pool\$1name*   
要指派資料表空間的緩衝集區之名稱。資料類型為 `varchar`。預設為空字串。  
您必須已有相同頁面大小的緩衝集區，才能與資料表空間建立關聯。

*tablespace\$1increase\$1size*  
資料表空間變滿時要增加的百分比。資料類型為 `integer`。有效值：`1`–`100`。預設值為 `0`。

*max\$1size*  
資料表空間的大小上限。資料類型為 `varchar`。有效值：*整數* `K` \$1 `M` \$1 `G` 或 `NONE`。預設值為 `NONE`。

*reduce\$1max*  
指定是否將高浮水印減少至其上限。資料類型為 `char`。預設值為 `N`。

*reduce\$1stop*  
指定是否要中斷先前的 `reduce_max` 或 `reduce_value` 命令。資料類型為 `char`。預設值為 `N`。

*reduce\$1value*  
要減少資料表空間高水位的數量或百分比。資料類型為 `varchar`。有效值：*整數* `K`\$1 `M` \$1 `G` 或 `1`–`100`。預設值為 `N`。

*lower\$1high\$1water*  
指定是否執行 `ALTER TABLESPACE LOWER HIGH WATER MARK` 命令。資料類型為 `char`。預設值為 `N`。

*lower\$1high\$1water\$1stop*  
指定是否執行 `ALTER TABLESPACE LOWER HIGH WATER MARK STOP` 命令。資料類型為 `char`。預設值為 `N`。

*switch\$1online*  
指定是否執行 `ALTER TABLESPACE SWITCH ONLINE` 命令。資料類型為 `char`。預設值為 `N`。

*tablespace\$1prefetch\$1size*  
資料表空間的預先擷取頁面大小。資料類型為 `char`。有效值：`AUTOMATIC` (不區分大小寫)，或是小於或等於 32767 的非零正整數。  
此參數僅適用於 `buffer_pool_name`、`table_increase_size`、`max_size` 和 `switch_online`。它不適用於 `reduce_max`、`reduce_stop`、`reduce_value`、`lower_high_water` 和 `lower_high_water_stop`。

### 使用須知
<a name="db2-sp-alter-tablespace-usage-notes"></a>

呼叫預存程序之前，請檢閱下列考量事項：
+ `rdsadmin.alter_tablespace` 預存程序無法在資料表空間上運作，並將使用者暫存資料的 `tablespace_type` 設定為 `T`。
+ 選用參數 `reduce_max`、`reduce_stop`、`reduce_value`、`lower_high_water`、`lower_high_water_stop` 和 `switch_online` 互斥。您無法在 `rdsadmin.alter_tablespace` 命令中將它們與任何其他選用參數 (例如 `buffer_pool_name`) 結合。如需詳細資訊，請參閱[Statement not valid](db2-troubleshooting.md#alter-tablespace-sp-statement-not-valid)。

如需檢查修改資料表空間狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

如需呼叫預存程序時傳回的錯誤訊息，請參閱 [預存程序錯誤](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 範例
<a name="db2-sp-alter-tablespace-examples"></a>

**範例 1：降低高浮水印**

下列範例會變更名為 `SP8` 的資料表空間，並指派名為 `BP8` 的緩衝集區，供名為 `TESTDB` 的資料庫使用，以降低高浮水印。

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'SP8',
    'BP8', 
    NULL, 
    NULL, 
    'Y')"
```

**範例 2：減少高浮水印**

下列範例會在資料庫 `TESTDB` 中名為 `TBSP_TEST` 的資料表空間上執行 `REDUCE MAX` 命令。

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    'Y')"
```

**範例 3：中斷命令以減少高浮水印**

下列範例會在資料庫 `TESTDB` 中名為 `TBSP_TEST` 的資料表空間上執行 `REDUCE STOP` 命令。

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    NULL,
    'Y')"
```

**範例 4：變更現有的預先擷取頁面大小**

下列範例會在名為 `TSBP_TEST` 的資料表空間上執行 `ALTER TABLESPACE SWITCH ONLINE` 命令，並將現有的預先擷取頁面大小變更為 `64`。

```
db2 "call rdsadmin.alter_tablespace(
    'TESTDB',
    'TBSP_TEST',
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    ‘Y’,
    ‘64’)"
```

## rdsadmin.rename\$1tablespace
<a name="db2-sp-rename-tablespace"></a>

重新命名資料表空間。

### 語法
<a name="db2-sp-rename-tablespace-syntax"></a>

```
db2 "call rdsadmin.rename_tablespace(
    ?,
    'database_name', 
    'source_tablespace_name',
    'target_tablespace_name')"
```

### Parameters
<a name="db2-sp-rename-tablespace-parameters"></a>

下列是必要參數：

?  
輸出錯誤訊息的參數標記。此參數只接受 ?。

*database\$1name*  
包含資料表空間所屬資料庫的名稱。資料類型為 `varchar`。

*source\$1tablespace\$1name*  
要重新命名的資料表空間之名稱。資料類型為 `varchar`。

*target\$1tablespace\$1name*  
資料表空間的新名稱。資料類型為 `varchar`。  
新名稱具有下列限制：  
+ 它不能與現有資料表空間的名稱相同。
+ 該名稱只能包含字元 `_$#@a-zA-Z0-9`。
+ 該名稱不能以 `_` 或 `$` 開頭。
+ 該名稱不能以 `SYS` 開頭。

### 使用須知
<a name="db2-sp-rename-tablespace-usage-notes"></a>

如需檢查重新命名資料表空間狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

您無法重新命名屬於 `rdsadmin` 資料庫的資料表空間。

### 範例
<a name="db2-sp-rename-tablespace-examples"></a>

下列範例會在名為 `TESTDB` 的資料庫中將名為 `SP8` 的資料表空間重新命名為 `SP9`。

```
db2 "call rdsadmin.rename_tablespace(
    ?,
    'TESTDB',
    'SP8',
    'SP9')"
```

## rdsadmin.drop\$1tablespace
<a name="db2-sp-drop-tablespace"></a>

捨棄資料表空間。

### 語法
<a name="db2-sp-drop-tablespace-syntax"></a>

```
db2 "call rdsadmin.drop_tablespace(
    'database_name', 
    'tablespace_name')"
```

### Parameters
<a name="db2-sp-drop-tablespace-parameters"></a>

下列是必要參數：

*database\$1name*  
包含資料表空間所屬資料庫的名稱。資料類型為 `varchar`。

*tablespace\$1name*  
要捨棄的資料表空間之名稱。資料類型為 `varchar`。

### 使用須知
<a name="db2-sp-drop-tablespace-usage-notes"></a>

如需檢查捨棄資料表空間狀態的相關資訊，請參閱 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 範例
<a name="db2-sp-drop-tablespace-examples"></a>

下列範例會從名為 `TESTDB` 的資料庫捨棄名為 `SP8` 的資料表空間。

```
db2 "call rdsadmin.drop_tablespace(
    'TESTDB',
    'SP8')"
```

# Amazon RDS for Db2 使用者定義函數參考
<a name="db2-user-defined-functions"></a>

下列使用者定義的函數適用於執行 Db2 引擎的 Amazon RDS 資料庫執行個體。

**Topics**
+ [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status)
+ [rdsadmin.list\$1databases](#db2-udf-list-databases)
+ [rdsadmin.list\$1modifiable\$1db\$1params](#db2-udf-list-modi-db-params)

## rdsadmin.get\$1task\$1status
<a name="db2-udf-get-task-status"></a>

傳回任務的狀態。

### 語法
<a name="db2-udf-get-task-status-syntax"></a>

```
db2 "select task_id, task_type, database_name, lifecycle,
    varchar(bson_to_json(task_input_params), 500) as task_params,
    cast(task_output as varchar(500)) as task_output
    from table(rdsadmin.get_task_status(task_id,'database_name','task_type'))"
```

### Parameters
<a name="db2-udf-get-task-status-parameters"></a>

下列是選用參數。如果您未提供任何參數，則使用者定義的函數會傳回所有資料庫之所有任務的狀態。Amazon RDS 會保留任務歷史記錄 35 天。

*task\$1id*  
正在執行的任務之 ID。當您執行任務時，會傳回此 ID。預設：`0`。

*database\$1name*  
正在執行任務的資料庫之名稱。

*task\$1type*  
要查詢的任務之類型。有效值：`ADD_GROUPS`、`ADD_USER`、`ALTER_BUFFERPOOL`、`ALTER_TABLESPACE`、`CHANGE_PASSWORD`、`COMPLETE_ROLLFORWARD`、`CREATE_BUFFERPOOL`、`CREATE_DATABASE`、`CREATE_ROLE`、`CREATE_TABLESPACE`、`DROP_BUFFERPOOL`、`DROP_DATABASE`、`DROP_TABLESPACE`、`LIST_USERS`、`REMOVE_GROUPS`、`REMOVE_USER`、`RESTORE_DB`、`ROLLFORWARD_DB_LOG`、`ROLLFORWARD_STATUS`、`UPDATE_DB_PARAM`。

### 使用須知
<a name="db2-udf-get-task-status-usage-notes"></a>

您可以使用 `rdsadmin.get_task_status` 使用者定義的函數，檢查 Amazon RDS for Db2 的下列任務狀態。此清單並不詳盡。
+ 建立、變更或捨棄緩衝集區
+ 建立、變更或捨棄資料表空間
+ 建立或捨棄資料庫
+ 從 Amazon S3 還原資料庫備份
+ 從 Amazon S3 轉傳資料庫日誌

### 範例
<a name="db2-udf-get-task-status-examples"></a>

下列範例顯示呼叫 `rdsadmin.get_task_status` 時所傳回的資料欄。

```
db2 "describe select * from table(rdsadmin.get_task_status())"
```

下列範例列出所有任務的狀態。

```
db2 "select task_id, task_type, database_name, lifecycle, 
    varchar(bson_to_json(task_input_params), 500) as task_params, 
    cast(task_output as varchar(500)) as task_output 
    from table(rdsadmin.get_task_status(null,null,null))"
```

下列範例列出特定任務的狀態。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(1,null,null))"
```

下列範例列出特定任務和資料庫的狀態。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(2,'SAMPLE',null))"
```

下列範例列出所有 `ADD_GROUPS` 任務的狀態。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,null,'add_groups'))"
```

下列範例列出特定資料庫所有任務的狀態。

```
db2 "select task_id, task_type, database_name, 
    varchar(bson_to_json(task_input_params), 500) as task_params 
    from table(rdsadmin.get_task_status(null,'testdb', null))"
```

下列範例會將 JSON 值輸出為資料欄。

```
db2 "select varchar(r.task_type,25) as task_type, varchar(r.lifecycle,10) as lifecycle, r.created_at, u.* from 
    table(rdsadmin.get_task_status(null,null,'restore_db')) as r, json_table(r.task_input_params, 'strict $' columns(s3_prefix varchar(500) 
    null on empty, s3_bucket_name varchar(500) null on empty) error on error ) as U"
```

### 回應
<a name="db2-udf-get-task-status-response"></a>

`rdsadmin.get_task_status` 使用者定義的函數會傳回下列資料欄：

`TASK_ID`  
任務的 ID。

`TASK_TYPE`  
取決於輸入參數。  
+ `ADD_GROUPS` – 新增群組。
+ `ADD_USER` – 新增使用者。
+ `ALTER_BUFFERPOOL` – 修改緩衝集區。
+ `ALTER_TABLESPACE` – 修改資料表空間。
+ `CHANGE_PASSWORD `– 變更使用者的密碼。
+ `COMPLETE_ROLLFORWARD` – 完成 `rdsadmin.rollforward_database` 任務並啟用資料庫。
+ `CREATE_BUFFERPOOL` – 建立緩衝集區。
+ `CREATE_DATABASE` – 建立資料庫。
+ `CREATE_ROLE` – 為使用者建立 Db2 角色。
+ `CREATE_TABLESPACE` – 建立資料表空間。
+ `DROP_BUFFERPOOL` – 捨棄緩衝集區。
+ `DROP_DATABASE` – 捨棄資料庫。
+ `DROP_TABLESPACE` – 捨棄資料表空間。
+ `LIST_USERS` – 列出所有使用者。
+ `REMOVE_GROUPS` – 移除群組。
+ `REMOVE_USER` – 移除使用者。
+ `RESTORE_DB` – 還原完整資料庫。
+ `ROLLFORWARD_DB_LOG` – 在資料庫日誌上執行 `rdsadmin.rollforward_database` 任務。
+ `ROLLFORWARD_STATUS `– 傳回 `rdsadmin.rollforward_database` 任務的狀態。
+ `UPDATE_DB_PARAM` – 更新資料參數。

`DATABASE_NAME`  
與任務相關聯之資料庫的名稱。

`COMPLETED_WORK_BYTES`  
任務還原的位元組數。

`DURATION_MINS`  
完成任務所需的時間。

`LIFECYCLE`  
任務的狀態。可能的狀態：  
+ `CREATED` – 將任務提交至 Amazon RDS 後，Amazon RDS 會將狀態設定為 `CREATED`。
+ `IN_PROGRESS` – 任務開始之後，Amazon RDS 會將狀態設定為 `IN_PROGRESS`。最多可能需要 5 分鐘，狀態才會從 `CREATED` 變成 `IN_PROGRESS`。
+ `SUCCESS` – 任務完成之後，Amazon RDS 會將狀態設定為 `SUCCESS`。
+ `ERROR` – 如果還原任務失敗，則 Amazon RDS 會將狀態設定為 `ERROR`。如需關於錯誤的詳細資訊，請參閱 `TASK_OUPUT`。

`CREATED_BY`  
建立命令的 `authid`。

`CREATED_AT`  
建立任務的日期和時間。

`LAST_UPDATED_AT`  
任務最後更新的日期和時間。

`TASK_INPUT_PARAMS`  
參數會根據任務類型而有所不同。所有輸入參數都會以 JSON 物件表示。例如，`RESTORE_DB` 任務的 JSON 金鑰如下：  
+ `DBNAME`
+ `RESTORE_TIMESTAMP`
+ `S3_BUCKET_NAME`
+ `S3_PREFIX`

`TASK_OUTPUT`  
任務的其他資訊。如果在原生還原期間發生錯誤，此欄會包含錯誤的相關資訊。

### 回應範例
<a name="db2-udf-get-task-status-response-examples"></a>

下列回應範例顯示已成功建立名為 `TESTJP` 的資料庫。如需詳細資訊，請參閱 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序。

```
`1 SUCCESS CREATE_DATABASE RDSDB 2023-10-24-18.32.44.962689 2023-10-24-18.34.50.038523 1 TESTJP { "CODESET" : "IBM-437", "TERRITORY" : "JP", "COLLATION" : "SYSTEM", "AUTOCONFIGURE_CMD" : "", "PAGESIZE" : 4096 } 
2023-10-24-18.33.30.079048 Task execution has started.

2023-10-24-18.34.50.038523 Task execution has completed successfully`.
```

下列回應範例說明捨棄資料庫失敗的原因。如需詳細資訊，請參閱 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 預存程序。

```
1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started.
2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. 
Reason Dropping database created via rds CreateDBInstance api is not allowed. 
Only database created using rdsadmin.create_database can be dropped
```

下列回應範例顯示成功還原資料庫。如需詳細資訊，請參閱 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 預存程序。

```
1 RESTORE_DB  SAMPLE  SUCCESS   
                                         
{ "S3_BUCKET_NAME" : "amzn-s3-demo-bucket", "S3_PREFIX" : "SAMPLE.0.rdsdb3.DBPART000.20230413183211.001", "RESTORE_TIMESTAMP" : "20230413183211", "BACKUP_TYPE" : "offline" }                                                                                                                                                                                                                                                                                                                                                   

2023-11-06-18.31.03.115795 Task execution has started.
2023-11-06-18.31.04.300231 Preparing to download
2023-11-06-18.31.08.368827 Download complete. Starting Restore
2023-11-06-18.33.13.891356 Task Completed Successfully
```

## rdsadmin.list\$1databases
<a name="db2-udf-list-databases"></a>

傳回在 RDS for Db2 資料庫執行個體上執行的所有資料庫之清單。

### 語法
<a name="db2-udf-list-databases-syntax"></a>

```
db2 "select * from table(rdsadmin.list_databases())"
```

### 使用須知
<a name="db2-udf-list-databases-usage-notes"></a>

此使用者定義的函數不會指定資料庫是處於啟用或停用狀態。

如果您在清單中看不到資料庫，請呼叫 [rdsadmin.get\$1task\$1status](#db2-udf-get-task-status) 使用者定義的函數，並尋找錯誤訊息。

### 回應
<a name="db2-udf-list-databases-response"></a>

`rdsadmin.list_databases` 使用者定義的函數會傳回下列資料欄：

`DATABASE_NAME`  
資料庫的名稱。

`CREATE_TIME`  
建立資料庫的時間和日期。

`DATABASE_UNIQUE_ID`  
RDS 建立 GUID 以唯一識別 Db2 資料庫。

`ARCHIVE_LOG_RETENTION_HOUR`  
保留封存日誌檔案的時數。

`ARCHIVE_LOG_COPY`  
顯示資料庫的功能是 ENABLED 還是 DISABLED。

`ARCHIVE_LOG_LAST_UPLOAD_FILE `  
指出上次上傳至 S3 的封存日誌。

`ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME`  
指出封存日誌檔案的時間。

`ARCHIVE_LOG_COPY_STATUS`  
顯示封存日誌副本的狀態。  
上傳 ：表示封存日誌檔案正在上傳到 S3。  
CONFIGURATION\$1ERROR：表示有組態問題需要您注意。  
若要檢視詳細錯誤，請參閱 Db 執行個體的 RDS 事件訊息。您可以在檢視 [Amazon RDS 事件中檢視事件訊息。](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html)

### 回應範例
<a name="db2-udf-list-databases-response-examples"></a>

下列回應範例顯示資料庫的清單以及建立資料庫的時間。`rdsadmin` 是 Amazon RDS 管理並一律顯示在輸出中的資料庫。

```
DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
--------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         0 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
...
```

## rdsadmin.list\$1modifiable\$1db\$1params
<a name="db2-udf-list-modi-db-params"></a>

傳回所有可修改資料庫組態參數的清單。

### 語法
<a name="db2-udf-list-modi-db-params-syntax"></a>

```
db2 "select * from table(rdsadmin.list_modifiable_db_params())"
```

### 使用須知
<a name="db2-udf-list-modi-db-params-usage-notes"></a>

此使用者定義的函數會顯示可修改資料庫參數的所選清單。您可以使用預存程序 來更新這些參數[rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)。

此清單中未包含的任何資料庫參數都受到限制，無法修改。

### 回應
<a name="db2-udf-list-modi-db-params-response"></a>

`rdsadmin.list_modifiable_db_params` 使用者定義的函數會傳回下列資料欄：

`PARAM_NAME`  
可修改的參數名稱。

`DEFAULT_VALUE`  
資料庫建立時的預設參數值。

`RESTART_REQUIRED`  
如果需要資料庫資源回收，則不需要。  
 Y = 是，需要重新啟動資料庫。  
 N = 否，不需要重新啟動資料庫。

### 回應範例
<a name="db2-udf-list-modi-db-params-response-examples"></a>

以下是預期輸出的範例 （截斷） 清單。

```
PARAM_NAME             DEFAULT_VALUE RESTART_REQUIRED
---------------------- ------------- ----------------
ACT_SORTMEM_LIMIT      NONE          N
ARCHRETRYDELAY         20            N
AUTHN_CACHE_DURATION   3             N
AUTHN_CACHE_USERS      0             N
AUTO_CG_STATS          OFF           N
...
```

# Amazon RDS for Db2 故障診斷
<a name="db2-troubleshooting"></a>

下列內容可協助您故障診斷您會遇到的 RDS for Db2 問題。

如需一般 Amazon RDS 故障診斷問題的詳細資訊，請參閱 [Amazon RDS 故障診斷](CHAP_Troubleshooting.md)。

**Topics**
+ [資料庫連線錯誤](#db2-database-connection-error)
+ [檔案 I/O 錯誤](#db2-file-input-output-error)
+ [預存程序錯誤](#db2-troubleshooting-stored-procedures)

## 資料庫連線錯誤
<a name="db2-database-connection-error"></a>

下列錯誤訊息表示資料庫無法連線，因為伺服器沒有足夠的記憶體。

```
SQL1643C The database manager failed to allocate shared memory because the
database manager instance memory limit has been reached.
```

增加資料庫執行個體的記憶體，然後嘗試再次連線至資料庫。如需資料庫的記憶體用量和建議的相關資訊，請參閱 [Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。如需如何更新 RDS for Db2 資料庫的記憶體相關資訊，請參閱 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param)。

## 檔案 I/O 錯誤
<a name="db2-file-input-output-error"></a>

您可能會因為不同的原因而遇到檔案 I/O 錯誤，例如當您使用 `LOAD` 命令或呼叫 `rdsadmin.restore_database` 預存程序時。

在此範例中，您要執行下列 `LOAD` 命令。

```
db2 "call sysproc.admin_cmd('load from "DB2REMOTE://s3test//public/datapump/t6.del" of del lobs from "DB2REMOTE://s3test/public/datapump/" modified by lobsinfile MESSAGES ON SERVER insert INTO RDSDB.t6 nonrecoverable ')"
```

`LOAD` 命令會傳回下列訊息：

```
  Result set 1
  --------------

  ROWS_READ            ROWS_SKIPPED         ROWS_LOADED          ROWS_REJECTED        ROWS_DELETED         ROWS_COMMITTED       ROWS_PARTITIONED     NUM_AGENTINFO_ENTRIES MSG_RETRIEVAL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    MSG_REMOVAL
  -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                     -                    -                    -                    -                    -                    -                    -                     - SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG                                                                                                                                                                                                                                                                                                                                                                                                                                            CALL SYSPROC.ADMIN_REMOVE_MSGS('1594987316_285548770')

  1 record(s) selected.

  Return Status = 0

SQL20397W  Routine "SYSPROC.ADMIN_CMD" execution has completed, but at least
one error, "SQL1652", was encountered during the execution. More information
is available.  SQLSTATE=01H52
```

若要檢視錯誤訊息，請依照上一個回應中的建議執行 SQL 命令。`SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG` 會傳回下列訊息：

```
SQLCODE   MSG
--------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL2025N  An I/O error occurred. Error code “438”. Media on which this error occurred: “DB2REMOTE://s3test//public/datapump/t6.del”

SQL3500W The utility is beginning the LOAD phase at time “07/05/2024 21:21:48.082954”

SQL1652N File I/O error occurred
```

Db2 診斷日誌包含類似以下的日誌檔案：

```
2024-07-05-21.20.09.440609+000 I1191321E864          LEVEL: Error
PID     : 2710                 TID : 139619509200640 PROC : db2sysc 0
INSTANCE: rdsdb                NODE : 000            DB   : NTP
APPHDL  : 0-12180              APPID: xxx.xx.x.xxx.xxxxx.xxxxxxxxxxxx
UOWID   : 5                    ACTID: 1
AUTHID  : ADMIN                HOSTNAME: ip-xx-xx-x-xx
EDUID   : 147                  EDUNAME: db2lmr 0
FUNCTION: DB2 UDB, oper system services, sqloS3Client_GetObjectInfo, probe:219
MESSAGE : ZRC=0x870F01B6=-2029059658=SQLO_FAILED
          "An unexpected error is encountered"
DATA #1 : String, 29 bytes
S3:HeadObject request failed.
DATA #2 : signed integer, 4 bytes
99
DATA #3 : String, 0 bytes
Object not dumped: Address: 0x00007EFC08A9AE38 Size: 0 Reason: Zero-length data
DATA #4 : String, 33 bytes
curlCode: 28, Timeout was reached
```

此檔案 I/O 錯誤可能由許多不同的案例所造成。例如，與用來建立 RDS for Db2 資料庫執行個體之安全群組相關聯的 VPC 可能缺少 Amazon S3 閘道端點。此端點對於啟用 RDS for Db2 存取 Amazon S3 至關重要。如果您的 RDS for Db2 資料庫執行個體位於私有子網路中，則需要 Amazon S3 閘道端點。您可以透過設定 Amazon RDS 子網路群組，指定資料庫執行個體使用私有還是公有子網路。如需詳細資訊，請參閱[使用資料庫子網路群組](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Subnets)。

**Topics**
+ [步驟 1：這會為 Amazon S3 建立 VPC 閘道端點](#db2-creating-endpoint)
+ [步驟 2：確認 Amazon S3 的 VPC 閘道端點存在](#db2-confirming-endpoint)

### 步驟 1：這會為 Amazon S3 建立 VPC 閘道端點
<a name="db2-creating-endpoint"></a>

若要讓您的 RDS for Db2 資料庫執行個體與 Amazon S3 互動，請建立 VPC，然後為要使用的私有子網路建立 Amazon S3 閘道端點。

**建立 S3 的 VPC 閘道端點**

1. 建立 VPC。如需詳細資訊，請參閱《Amazon 虛擬私有雲使用者指南》**中的[建立 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)。

1. 為要使用的私有子網路建立 Amazon S3 閘道端點。如需詳細資訊，請參閱《AWS PrivateLink 指南》**中的[閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。

### 步驟 2：確認 Amazon S3 的 VPC 閘道端點存在
<a name="db2-confirming-endpoint"></a>

使用 AWS 管理主控台 或 AWS CLI確認您已成功建立 Amazon S3 閘道端點。

#### 主控台
<a name="db2-confirming-endpoing-console"></a>

**確認 Amazon S3 閘道端點**

1. 登入 AWS 管理主控台 ，並在 開啟 Amazon VPC 主控台[https://console.aws.amazon.com/vpc](https://console.aws.amazon.com/vpc)。

1.  在主控台的右上角，選擇 VPC 的 AWS 區域 。

1. 選擇您建立的 VPC 機器人。

1. 在**資源映射**索引標籤的**網路連線**下，確認已列出 Amazon S3 閘道端點。

#### AWS CLI
<a name="db2-confirming-endpoint-cli"></a>

若要確認 Amazon S3 閘道端點，請執行 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) 命令。在下列範例中，將 *vpc\$1id* 取代為 VPC ID、將*區域*取代為 AWS 區域，並將*設定檔*取代為設定檔名稱。

針對 Linux、macOS 或 Unix：

```
aws ec2 describe-vpc-endpoints \
    --filters "Name=vpc-id,Values=$vpc_id" \
    "Name=service-name,\
    Values=com.amazonaws.${region}.s3" \
    --region $region --profile=$profile \
    --query "VpcEndpoints[*].VpcEndpointId" --output text
```

在 Windows 中：

```
aws ec2 describe-vpc-endpoints ^
    --filters "Name=vpc-id,Values=$vpc_id" ^
    "Name=service-name,^
    Values=com.amazonaws.${region}.s3" ^
    --region $region --profile=$profile ^
    --query "VpcEndpoints[*].VpcEndpointId" --output text
```

如果 Amazon S3 閘道端點存在，此命令就會產生類似下列範例的輸出。

```
[
    "vpce-0ea810434ff0b97e4"
]
```

如果 Amazon S3 閘道端點不存在，此命令就會產生類似下列範例的輸出。

```
[]
```

如果您沒有看到列出的 Amazon S3 閘道端點，則 [步驟 1：這會為 Amazon S3 建立 VPC 閘道端點](#db2-creating-endpoint)。

## 預存程序錯誤
<a name="db2-troubleshooting-stored-procedures"></a>

本節說明呼叫預存程序時傳回的各種錯誤，以及如何解決這些錯誤。


| Category | 預存程序錯誤 | 
| --- | --- | 
|  資料庫  |  [rdsadmin.activate\$1database 錯誤](#db2-troubleshooting-activate-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.backup\$1database 錯誤](#db2-troubleshooting-backup-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.create\$1database 錯誤](#db2-troubleshooting-create-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.deactivate\$1database 錯誤](#db2-troubleshooting-deactivate-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.drop\$1database 錯誤](#db2-troubleshooting-drop-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.reactivate\$1database 錯誤](#db2-troubleshooting-reactivate-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.restore\$1database 錯誤](#db2-troubleshooting-restore-database-sp-errors)  | 
|  資料庫  |  [rdsadmin.update\$1db\$1param 錯誤](#db2-troubleshooting-update-db-param-sp-errors)  | 
|  資料表空間  |  [rdsadmin.alter\$1tablespace 錯誤](#db2-troubleshooting-alter-tablespace-sp-errors)  | 

### rdsadmin.activate\$1database 錯誤
<a name="db2-troubleshooting-activate-database-sp-errors"></a>

當您呼叫 [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Failed to allocate shared memory](#activate-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 
|  [Unable to activate because of running processes](#activate-database-sp-unable-to-activate-processes)  |  `The database can’t be activated because it's in the process of being created or restored.`  | 

**無法配置共用記憶體**

下列錯誤訊息表示預存程序無法啟用資料庫，因為資料庫執行個體沒有足夠的記憶體。

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

增加資料庫執行個體的記憶體，然後再次呼叫 `rdsadmin.activate_database` 預存程序。如需資料庫的記憶體用量和建議的相關資訊，請參閱 [Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。

**由於執行中的程序而無法啟用**

下列錯誤訊息表示預存程序無法啟用資料庫，因為 `rdsadmin.create_database` 或 `rdsadmin.restore_database` 預存程序正在執行中。

```
The database can’t be activated because it's in the process of being created or restored.
```

稍候幾分鐘，然後重新呼叫 `rdsadmin.activate_database` 預存程序。

### rdsadmin.alter\$1tablespace 錯誤
<a name="db2-troubleshooting-alter-tablespace-sp-errors"></a>

當您呼叫 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Statement not valid](#alter-tablespace-sp-statement-not-valid)  |  `DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: ` `SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"`  | 
|  [tablespace_prefetch_size value not valid](#alter-tablespace-sp-prefetch-value-not-valid)  |  `Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.`  | 
|  [tablespace_prefetch_size numerical value not valid](#alter-tablespace-sp-prefetch-numerical-value-not-valid)  |  `Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.`  | 
|  [Parameter can't be used with tablespace_prefetch_size](#alter-tablespace-sp-prefetch-incompatible-parameter)  |  `You can't use tablespace_prefetch_size with {parameter}.`  | 
|  [Tablespace change failed](#alter-tablespace-sp-tablespace-change-failed)  |  `The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.`  | 

**陳述式無效**

下列錯誤訊息表示預存程序結合了互斥選用參數和其他選用參數。`rdsadmin.alter_tablespace` 預存程序的選用參數 `reduce_max, reduce_stop`、`reduce_value`、`lower_high_water`、`lower_high_water_stop` 和 `switch_online` 是互斥的。您無法在 `rdsadmin.alter_tablespace` 預存程序中將它們與任何其他選用參數 (例如 `buffer_pool_name`) 結合。如果您合併它們，則當您呼叫 `rdsadmin.get_task_status` 使用者定義的函數時，Db2 會傳回此錯誤訊息。

```
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: 
SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"
```

再次呼叫 `rdsadmin.alter_tablespace` 預存程序，而不將互斥選用參數與其他選用參數結合。然後呼叫 `rdsadmin.get_task_status` 使用者定義的函數。如需詳細資訊，請參閱 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace) 和 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

**tablespace\$1prefetch\$1size 值無效**

下列錯誤訊息表示您未將 `tablespace_prefetch_size` 設定為 `AUTOMATIC` 或非正數值。例如，您嘗試將其設定為 `testinput`。

```
Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.
```

再次呼叫 `rdsadmin.alter_tablespace` 預存程序，並將 `tablespace_prefetch_size` 設定為 `AUTOMATIC` 或非正數值。

**tablespace\$1prefetch\$1size 數值無效**

下列錯誤訊息表示您將 `tablespace_prefetch_size` 設定為大於 32767 的數值。

```
Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.
```

再次呼叫 `rdsadmin.alter_tablespace` 預存程序，並將 `tablespace_prefetch_size` 設定為小於或等於 32767 的非零正數值。

**參數無法與 tablespace\$1prefetch\$1size 搭配使用**

下列錯誤訊息表示您嘗試搭配不相容的參數使用 `tablespace_prefetch_size`。

```
You can't use tablespace_prefetch_size with {parameter}.
```

再次呼叫 `rdsadmin.alter_tablespace` 預存程序，並僅搭配相容的參數使用 `tablespace_prefetch_size`。如需您可以搭配 `tablespace_prefetch_size` 使用之參數的相關資訊，請參閱 [rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-alter-tablespace)。

**資料表空間變更失敗**

下列錯誤訊息表示您嘗試修改資料表空間。

```
The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.
```

### rdsadmin.backup\$1database 錯誤
<a name="db2-troubleshooting-backup-database-sp-errors"></a>

當您呼叫 [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|    |  `Aborting task. Reason Backing up your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.backup_database stored procedure.`  | 
|  [Internal error](#backup-database-sp-internal-error)  |  `Caught exception during executing task id 104, Aborting task. Reason Internal Error`  | 

磁碟空間不足

下列錯誤訊息指出您的資料庫執行個體沒有足夠的磁碟空間來備份資料庫：

```
Aborting task. Reason Backing up your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.backup_database stored procedure.
```

將資料庫備份至遠端儲存體時，請確定您有足夠的可用磁碟空間可供備份工作階段和工作檔案使用。每個備份工作階段最多可處理 5 GB 的資料，但交易日誌、暫存檔案和持續資料庫操作需要額外的空間。

根據資料庫大小，我們建議您有下列可用的備份磁碟空間：
+ 對於 5 GB 以下的資料庫 – 資料庫大小 \$1 3 GB 緩衝區
+ 對於 5 GB 和更大的資料庫 – 至少 10 GB 的可用空間

如果已設定，此可用磁碟空間數量適用於備份工作階段處理、備份期間的交易日誌累積、臨時工作檔案和平行備份串流。如需詳細資訊，請參閱[增加資料庫執行個體的儲存容量](USER_PIOPS.ModifyingExisting.md)。

增加您的磁碟空間，然後再次呼叫 [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database) 預存程序。若要確認資料庫已正確備份，請使用 檢查任務狀態[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。您也可以驗證備份檔案存在於 *s3\$1prefix/dbi\$1resource\$1id/db\$1name* 下的 Amazon S3 儲存貯體中。

**內部錯誤**

下列錯誤訊息表示預存程序發生內部錯誤：

```
Caught exception during executing task id 104, Aborting task. Reason Internal Error
```

聯絡 [AWS 支援](https://aws.amazon.com/premiumsupport/)。

### rdsadmin.create\$1database 錯誤
<a name="db2-troubleshooting-create-database-sp-errors"></a>

當您呼叫 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Failed to allocate shared memory](#create-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 

**無法配置共用記憶體**

下列錯誤訊息表示預存程序無法建立資料庫，因為資料庫執行個體沒有足夠的記憶體。

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

增加資料庫執行個體的記憶體，然後再次呼叫 `rdsadmin.create_database` 預存程序。如需資料庫的記憶體用量和建議的相關資訊，請參閱 [Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。

若要確認已建立資料庫，請呼叫 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 使用者定義的函數，並檢查是否已列出新的資料庫。

### rdsadmin.deactivate\$1database 錯誤
<a name="db2-troubleshooting-deactivate-database-sp-errors"></a>

當您呼叫 [rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Unable to deactivate because of running processes](#deactivate-database-sp-unable-to-deactivate-processes)  |  `The database can’t be deactivated because it's in the process of being created or restored.`  | 

**由於執行中的程序而無法停用**

下列錯誤訊息表示預存程序無法停用資料庫，因為 `rdsadmin.create_database` 或 `rdsadmin.restore_database` 預存程序正在執行中。

```
The database can’t be deactivated because it's in the process of being created or restored.
```

稍候幾分鐘，然後重新呼叫 `rdsadmin.deactivate_database` 預存程序。

### rdsadmin.drop\$1database 錯誤
<a name="db2-troubleshooting-drop-database-sp-errors"></a>

當您呼叫 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Database name doesn't exist](#drop-database-sp-database-name-not-exist)  |  `SQL0438N Application raised error or warning with diagnostic text: "Cannot drop database. Database with provided name does not exist". SQLSTATE=99993`  | 
|  [Return status = 0](#drop-database-sp-return-status-zero)  |  `Return Status = 0`  | 
|  [Dropping database not allowed](#drop-database-sp-not-allowed)  |  `1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started. 2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. Reason Dropping database created via rds CreateDBInstance api is not allowed. Only database created using rdsadmin.create_database can be dropped`  | 

**資料庫名稱不存在**

下列錯誤訊息表示您在 `rdsadmin.drop_database` 預存程序中傳遞了不正確的資料庫名稱。

```
SQL0438N Application raised error or warning with diagnostic text: "Cannot
drop database. Database with provided name does not exist". SQLSTATE=99993
```

使用正確的資料庫名稱再次呼叫 `rdsadmin.drop_database` 預存程序。若要確認已捨棄資料庫，請呼叫 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 使用者定義的函數，並檢查未列出已捨棄的資料庫。

**傳回狀態 = 0**

下列錯誤訊息表示無法完成預存程序。

```
Return Status = 0
```

收到 `Return Status = 0` 後，請呼叫 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 使用者定義的函數。

**不允許捨棄資料庫**

下列錯誤訊息表示您使用 Amazon RDS 主控台或 AWS CLI來建立資料庫。只有在您透過呼叫 `rdsadmin.drop_database` 預存程序建立資料庫時，才能使用 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 預存程序。

```
1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started.
2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. 
Reason Dropping database created via rds CreateDBInstance api is not allowed. 
Only database created using rdsadmin.create_database can be dropped
```

若要捨棄透過使用 Amazon RDS 主控台或 AWS CLI建立的資料庫，請使用用戶端來連線到資料庫，然後執行適當的命令。

### rdsadmin.reactivate\$1database 錯誤
<a name="db2-troubleshooting-reactivate-database-sp-errors"></a>

當您呼叫 [rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Failed to allocate shared memory](#reactivate-database-sp-failed-to-allocate-shared-memory)  |  `SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.`  | 
|  [Unable to reactivate because of running processes](#reactivate-database-sp-unable-to-reactivate-processes)  |  `The database can’t be reactivated because it's in the process of being created or restored.`  | 

**無法配置共用記憶體**

下列錯誤訊息表示預存程序無法啟用資料庫，因為資料庫執行個體沒有足夠的記憶體。

```
SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.
```

增加資料庫執行個體的記憶體，然後再次呼叫 `rdsadmin.activate_database` 預存程序。如需資料庫的記憶體用量和建議的相關資訊，請參閱 [Amazon RDS for Db2 資料庫執行個體上的多個資料庫](db2-multiple-databases.md)。

**由於執行中的程序而無法停用**

下列錯誤訊息表示預存程序無法重新啟用資料庫，因為 `rdsadmin.create_database` 或 `rdsadmin.restore_database` 預存程序正在執行中。

```
The database can’t be reactivated because it's in the process of being created or restored.
```

稍候幾分鐘，然後重新呼叫 `rdsadmin.reactivate_database` 預存程序。

### rdsadmin.restore\$1database 錯誤
<a name="db2-troubleshooting-restore-database-sp-errors"></a>

當您呼叫 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 預存程序時，可能會發生下列錯誤：


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|    |  `Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.`  | 
|  [Internal error](#restore-database-sp-internal-error)  |  `Caught exception during executing task id 104, Aborting task. Reason Internal Error`  | 
|  [Non-fenced routines not allowed](#restore-database-sp-non-fenced-routines)  |  `Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.`  | 
| [Tablespaces not restored](#restore-database-sp-tablespaces-not-restored) |  `Reason SQL0970N The system attempted to write to a read-only file. Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.`  | 

磁碟空間不足

下列錯誤訊息表示您的資料庫執行個體磁碟空間不足，無法還原資料庫：

```
Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.
```

資料庫執行個體上的可用空間必須大於備份映像大小的兩倍。如果已壓縮備份映像，則資料庫執行個體上的可用空間必須大於備份映像大小的三倍。如需詳細資訊，請參閱[增加資料庫執行個體的儲存容量](USER_PIOPS.ModifyingExisting.md)。

增加您的磁碟空間，然後再次呼叫 `rdsadmin.restore_database` 預存程序。若要確認已還原資料庫，請呼叫 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 使用者定義的函數，並檢查是否已列出還原的資料庫。

**內部錯誤**

下列錯誤訊息表示預存程序發生內部錯誤：

```
Caught exception during executing task id 104, Aborting task. Reason Internal Error
```

聯絡 [AWS 支援](https://aws.amazon.com/premiumsupport/)。

**不允許非連接常式**

下列錯誤訊息表示您的資料庫包含非連接常式：

```
Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.
```

RDS for Db2 不支援非連接常式。從來源資料庫中移除非連接常式，然後再次呼叫 `rdsadmin.restore_database`。若要確認已還原資料庫，請呼叫 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases) 使用者定義的函數，並檢查是否已列出還原的資料庫。如需詳細資訊，請參閱[非連接常式](db2-known-issues-limitations.md#db2-known-issues-limitations-non-fenced-routines)。

**資料表空間未還原**

下列錯誤訊息表示 RDS for Db2 已成功還原您的資料庫，但無法還原一或多個資料表空間：

```
Reason SQL0970N The system attempted to write to a read-only file.
Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.
```

RDS for Db2 不支援非自動儲存。將非自動儲存轉換為自動儲存，然後再次呼叫 `rdsadmin.restore_database`。如需詳細資訊，請參閱 IBM Db2 文件中的[將非自動儲存資料庫轉換為使用自動儲存](https://www.ibm.com/docs/en/db2/11.5?topic=databases-converting-nonautomatic-storage-database-use-automatic-storage)。

具有非自動 SMS 儲存的資料庫需要手動還原。如果您的資料庫具有非自動 SMS 儲存，請聯絡 [AWS 支援](https://aws.amazon.com/premiumsupport/)。

如需非自動儲存和一次性遷移的相關資訊，請參閱 [遷移期間的非自動儲存資料表空間](db2-known-issues-limitations.md#db2-known-issues-limitations-non-automatic-storage-tablespaces)。

### rdsadmin.update\$1db\$1param 錯誤
<a name="db2-troubleshooting-update-db-param-sp-errors"></a>

當您呼叫 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 預存程序時，可能會發生下列錯誤。


| 錯誤 | 錯誤訊息 | 
| --- | --- | 
|  [Parameter not supported or modifiable](#update-db-param-sp-parameter-not-supported-modifiable)  | SQL0438N Application raised error or warning with diagnostic text: "Parameter is either not supported or not modifiable to customers". SQLSTATE=99993 | 

**不支援或可修改的參數**

下列錯誤訊息表示您嘗試修改不支援或無法修改的資料庫組態參數。

```
SQL0438N Application raised error or warning with diagnostic text: "Parameter
is either not supported or not modifiable to customers". SQLSTATE=99993
```

您可以檢視參數群組來查看可修改的參數。如需詳細資訊，請參閱[在 Amazon RDS 中檢視資料庫參數群組的參數值](USER_WorkingWithParamGroups.Viewing.md)。