RDS for Db2 資料庫的預存程序 - Amazon Relational Database Service

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

RDS for Db2 資料庫的預存程序

本主題中所述的內建預存程序會管理 Amazon RDS for Db2 的資料庫。若要執行這些程序,主要使用者必須先連線到 rdsadmin 資料庫。

這些預存程序用於各種任務。這不是完整清單。

如需語法、參數、用量備註和範例的相關資訊,請參閱下列內建預存程序。

rdsadmin.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')"

參數

注意

此預存程序不會驗證必要參數的組合。當您呼叫 rdsadmin.get_task_status 時,使用者定義的函數可能會傳回錯誤,因為 database_codesetdatabase_territorydatabase_collation 的組合無效。如需詳細資訊,請參閱 IBM Db2 文件中的選擇資料庫的程式碼頁面、區域和定序

以下是必要參數:

database_name

要建立之資料庫的名稱。資料類型為 varchar

下列是選用參數:

database_page_size

資料庫的預設頁面大小。有效值:409681921638432768。資料類型為 integer。預設值為 8192

重要

Amazon RDS 支援 4 KiB、8 KiB 和 16 KiB 頁面的寫入原子性。相反地,32 KiB 頁面會有扭曲寫入的風險,或寫入磁碟的部分資料。如果您使用 32 KiB 頁面,則建議您啟用時間點復原和自動備份。否則,您會面臨無法從未完成頁面復原的風險。如需詳細資訊,請參閱備份簡介將 Amazon RDS 的資料庫執行個體還原至指定時間

database_code_set

資料庫的程式碼集。資料類型為 varchar。預設值為 UTF-8

database_territory

資料庫的雙字母國家/地區代碼。資料類型為 varchar。預設值為 US

database_collation

定序序列會決定存放在資料庫中字元字串的排序和比較方式。資料類型為 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 技術報告 #26

  • NLSCHAR – 僅適用於 Thai 程式碼頁面 (CP874)。

  • SYSTEM – 如果您使用 SYSTEM,則資料庫會自動使用 database_codesetdatabase_territory 的定序序列。

預設值為 IDENTITY

此外,RDS for Db2 支援下列定序群組:language-aware-collationlocale-sensitive-collation。如需詳細資訊,請參閱 IBM Db2 文件中的選擇 Unicode 資料庫的定序

database_autoconfigure_str

AUTOCONFIGURE 命令語法,例如 'AUTOCONFIGURE APPLY DB'。資料類型為 varchar。預設為空字串或 null。

如需詳細資訊,請參閱 IBM Db2 文件中的 AUTOCONFIGURE 命令

database_non-restrictive

在資料庫中授予預設授權單位和權限。資料類型為 varchar。預設值為 N

有效值:

  • N – 建立的資料庫具有限制性,不會授予授權單位或權限。

  • Y – 建立的資料庫是非限制性的,並將一組許可授予特殊群組 PUBLIC。如需詳細資訊,請參閱 IBM Db2 文件中建立資料庫時授予的預設權限

使用須知

如果您打算修改 db2_compatibility_vector 參數,在建立資料庫之前,請修改參數。如需詳細資訊,請參閱設定 db2_compatibility_vector 參數

特別考量:

  • 傳送至 Db2 執行個體的 CREATE DATABASE 命令使用 RESTRICTIVE 選項。

  • RDS for Db2 僅使用 AUTOMATIC STORAGE 資料表空間。

  • RDS for Db2 使用 NUMSEGSDFT_EXTENT_SZ 的預設值。

  • RDS for Db2 使用儲存加密,且不支援資料庫加密。

如需這些考量的詳細資訊,請參閱 IBM Db2 文件中的 CREATE DATABASE 命令

呼叫 rdsadmin.create_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_usernamemaster_password 取代為您的 RDS for Db2 資料庫執行個體資訊:

db2 connect to rdsadmin user master_username using master_password

如需檢查建立資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.create_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例會建立名為 TESTJP 的資料庫,其中包含日本的 database_code_setdatabase_territorydatabase_collation 參數的正確組合:

db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"

rdsadmin.deactivate_database

停用資料庫。

語法

db2 "call rdsadmin.deactivate_database( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要停用的資料庫之名稱。資料類型為 varchar

使用須知

您可以停用資料庫以節省記憶體資源,或進行其他資料庫組態變更。若要讓已停用的資料庫恢復連線,請呼叫 rdsadmin.activate_database 預存程序。

您無法在複寫期間透過呼叫 rdsadmin.deactivate_database 預存程序來停用來源資料庫執行個體上的資料庫。

如需檢查停用資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.deactivate_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例會停用名為 TESTDB 的資料庫。

db2 "call rdsadmin.deactivate_database(?, 'TESTDB')"

rdsadmin.activate_database

啟用資料庫。

如需有關 rdsadmin.reactivate_databaserdsadmin.activate_database 之間的差異的資訊,請參閱 使用須知

語法

db2 "call rdsadmin.activate_database( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要啟用的資料庫之名稱。資料類型為 varchar

使用須知

所有資料庫預設都會在建立時啟用。如果您停用獨立資料庫執行個體上的資料庫來節省記憶體資源或進行其他資料庫組態變更,請呼叫 rdsadmin.activate_database 預存程序,以再次啟用資料庫。

此預存程序只會啟用位於獨立資料庫執行個體上的資料庫,且該資料庫是透過呼叫 rdsadmin.deactivate_database 預存程序來停用。若要在複本來源資料庫執行個體上啟用資料庫,您必須呼叫 rdsadmin.reactivate_database 預存程序。

如需檢查啟用資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.activate_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例會啟用名為 TESTDB 的資料庫。

db2 "call rdsadmin.activate_database(?, 'TESTDB')"

rdsadmin.reactivate_database

重新啟用資料庫。

如需 rdsadmin.activate_databaserdsadmin.reactivate_database 之間差異的相關資訊,請參閱 使用須知

語法

db2 "call rdsadmin.reactivate_database( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要重新啟用的資料庫之名稱。資料類型為 varchar

使用須知

當您呼叫 rdsadmin.reactivate_database 預存程序時,預存程序會先呼叫 rdsadmin.deactivate_database 預存程序來停用資料庫,然後再呼叫 rdsadmin.activate_database 預存程序來啟用資料庫。

變更資料庫組態之後,您可能需要在 RDS for Db2 資料庫執行個體上重新啟用資料庫。若要判斷是否需要重新啟用資料庫,請連線至資料庫並執行 db2 get db cfg show detail

針對獨立資料庫執行個體上的資料庫,您可以使用 rdsadmin.reactivate_database 儲存程序來重新啟用資料庫。或者,如果您已呼叫 rdsadmin.deactivate_database 預存程序,則可以改為呼叫 rdsadmin.activate_database 預存程序。

針對複本來源資料庫執行個體上的資料庫,您必須使用 rdsadmin.reactivate_database 儲存程序來重新啟用資料庫。

如需檢查重新啟用資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.reactivate_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例會重新啟用名為 TESTDB 的資料庫。

db2 "call rdsadmin.reactivate_database(?, 'TESTDB')"

rdsadmin.drop_database

捨棄資料庫。

語法

db2 "call rdsadmin.drop_database('database_name')"

參數

以下是必要參數:

database_name

要捨棄的資料庫之名稱。資料類型為 varchar

使用須知

只有在符合下列條件時,您才能呼叫 rdsadmin.drop_database 來捨棄資料庫:

呼叫 rdsadmin.drop_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_usernamemaster_password 取代為您的 RDS for Db2 資料庫執行個體資訊:

db2 connect to rdsadmin user master_username using master_password

如需檢查捨棄資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.drop_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例會捨棄名為 TESTDB 的資料庫:

db2 "call rdsadmin.drop_database('TESTDB')"

rdsadmin.update_db_param

更新資料庫參數。

語法

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

參數

下列是必要參數:

database_name

要執行任務之資料庫的名稱。資料類型為 varchar

parameter_to_modify

要修改之參數的名稱。資料類型為 varchar。如需詳細資訊,請參閱Amazon RDS for Db2 參數

changed_value

要變更參數值的目標值。資料類型為 varchar

以下為選用參數:

restart_database

指定 RDS 在需要重新啟動時是否會重新啟動資料庫。資料類型為 varchar。若要修改 logprimarylogfilsiz,請將此參數設為 'YES'

使用須知

如需檢查更新資料庫參數的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.update_db_param 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

範例 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_configuration

設定資料庫的特定設定。

語法

db2 "call rdsadmin.set_configuration( 'name', 'value')"

參數

下列是必要參數:

name

組態設定的名稱。資料類型為 varchar

value

組態設定的值。資料類型為 varchar

使用須知

下表顯示您可以使用 rdsadmin.set_configuration 控制的組態設定。

名稱 描述

RESTORE_DATABASE_NUM_BUFFERS

在還原作業期間所要建立緩衝區的數目。此值必須小於資料庫執行個體類別的總記憶體大小。如果未設定此設定,則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊,請參閱 IBM Db2 文件中的 RESTORE DATABASE 命令

RESTORE_DATABASE_PARALLELISM

在還原作業期間所要建立緩衝區操縱器的數目。此值必須小於資料庫執行個體 vCPU 數目的兩倍。如果未設定此設定,則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊,請參閱 IBM Db2 文件中的 RESTORE DATABASE 命令

RESTORE_DATABASE_NUM_MULTI_PATHS

從 Amazon S3 操作還原期間要使用的路徑 (或 I/O 串流) 數目。若要使用此組態設定,您必須有多個備份檔案。此值可以改善使用大量資料還原資料庫時的效能,因為它會平行還原多個資料庫備份檔案。我們建議您設定此值以符合資料庫備份檔案的數目。如需詳細資訊,請參閱 IBM Db2 文件中的 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 文件中的遠端儲存

範例

範例 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_configuration

傳回您可以使用預存程序 rdsadmin.set_configuration 設定的目前設定。

語法

db2 "call rdsadmin.show_configuration( 'name')"

參數

以下為選用參數:

name

要傳回相關資訊的組態設定之名稱。資料類型為 varchar

下列組態名稱為有效:

  • RESTORE_DATABASE_NUM_BUFFERS – 在還原操作期間要建立的緩衝區數目。

  • RESTORE_DATABASE_PARALLELISM – 在還原操作期間要建立的緩衝區操縱器數目。

  • RESTORE_DATABASE_NUM_MULTI_PATHS – 從 Amazon S3 操作還原期間要使用的路徑 (或 I/O 串流) 數目。

  • USE_STREAMING_RESTORE – 指定是否要在還原期間直接串流備份資料,而不是先將整個備份資料下載到您的 RDS for Db2 資料庫執行個體,然後解壓縮。

使用須知

如果您未指定組態設定的名稱,則 rdsadmin.show_configuration 會傳回您可以使用預存程序 rdsadmin.set_configuration 設定之所有組態設定的資訊。

範例

下列範例會傳回目前 RESTORE_DATABASE_PARALLELISM 組態的相關資訊。

db2 "call rdsadmin.show_configuration( 'RESTORE_DATABASE_PARALLELISM')"

rdsadmin.backup_database

將資料庫從 RDS for Db2 資料庫執行個體備份到 Amazon S3 儲存貯體。

語法

db2 "call rdsadmin.backup_database( ?, 'database_name', 's3_bucket_name', 's3_prefix', 'backup_type', 'compression_option', 'util_impact_priority', 'num_files', 'parallelism', 'num_buffers')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

RDS for Db2 資料庫執行個體上要備份的目標資料庫名稱。資料類型為 varchar

資料庫必須存在於資料庫執行個體中。您無法備份rdsadmin資料庫。

s3_bucket_name

您希望備份所在的 Amazon S3 儲存貯體名稱。資料類型為 varchar

在呼叫 之前,S3 儲存貯體必須存在rdsadmin.backup_database,與您要備份的 RDS for Db2 資料庫執行個體中的目標資料庫位於相同 AWS 區域 位置,並且可以透過連接至資料庫執行個體的 IAM 角色存取。

s3_prefix

Amazon S3 路徑的字首,其中 RDS for Db2 會上傳備份檔案。資料類型為 varchar

字首限制為 1024 個字元。它不得包含正斜線或尾斜線 (/)。由於IBM 串流至 Amazon S3 的限制,我們建議字首包含子目錄。

為了更好地管理檔案,RDS for Db2 會在 s3_prefix 之後建立額外的目錄。RDS for Db2 將所有備份檔案上傳至 s3_prefix/dbi_resource_id/db_name。如果您將 num_files 設定為高於 1db_name 目錄將包含多個備份檔案。

以下是備份檔案的 Amazon S3 位置範例。在此範例中, backups/daily是為 s3_prefix 參數設定的值。

backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB
backup_type

決定資料庫是否在備份期間保持可用的備份類型。資料類型為 varchar

有效值:

  • OFFLINE – 資料庫在備份期間無法使用。此類型較快,但會導致停機時間。

  • ONLINE – 資料庫在備份期間仍然可用。根據預設,ONLINE 會設定為 INCLUDE LOGS

下列是選用參數:

compression_option

使用的壓縮演算法類型,會影響備份時間、CPU 用量和儲存成本。資料類型為 varchar。預設值為 NONE

有效值:

  • NONE – 最大的檔案大小、最低的 CPU 使用量,以及最便宜的儲存成本。

  • STANDARD – 標準 Db2 壓縮。使用 libdb2compr.so

  • ZLIB – 增強型 Db2 壓縮。使用 libdb2zcompr.so,但更耗用 CPU 且最昂貴的儲存成本。

util_impact_priority

控制備份對系統資源影響的設定。資料類型為 integer。有效值: 1100 (從低到高)。預設值為 50

較低的值可減少備份對系統資源的影響,但可能會增加備份資料庫所需的時間。較高的值可能會更快地完成資料庫的備份,但可能會影響其他操作。實際影響取決於整體系統使用率和util_impact_lim設定。您可以在參數群組中檢視和修改util_impact_lim設定。如需詳細資訊,請參閱Amazon RDS for Db2 參數

num_files

平行上傳至 Amazon S3 的串流數目。資料類型為 integer。有效值:1256

建議您只在以 Amazon RDS 自動計算的預設值觀察備份效能之後,才設定此參數。較高的值可以改善大型備份的效能,尤其是高頻寬連線,但在特定時間點,較高的值會降低效能。此外,請務必考量可用的系統資源和網路容量。

平行處理

備份公用程式可以平行讀取的資料表空間數目。資料類型為 integer。有效值:1256

我們建議您在預設情況下觀察 Db2 引擎自動計算為最佳值的備份效能後,才設定此參數。如果您設定此參數,Amazon RDS 會根據可用的處理器進行驗證,如果處理能力不足,則不會執行備份請求。

num_buffers

要使用的緩衝區數量。資料類型為 integer。有效值:1268435456

我們建議您只在觀察 Amazon RDS 根據記憶體自動計算的備份效能後,才設定此參數。如果您設定此參數,Amazon RDS 會根據可用的記憶體進行驗證,如果可用的記憶體不足,則不會執行備份請求。如果您要備份到多個位置 (num_files 設定為超過 1),則更多緩衝區可能會改善效能。如果您未compression_option將 設定為 NONE,則可以透過增加 num_buffers和 來改善效能parallelism

使用須知

此預存程序會建立非同步備份任務,使用 Amazon S3 整合將資料庫備份直接串流至 Amazon S3 儲存貯體。您可以從本機伺服器或從 RDS for Db2 資料庫執行個體進行備份,將其串流至 Amazon S3,然後視需要還原。如需將資料庫還原至 RDS for Db2 資料庫執行個體的詳細資訊,請參閱 rdsadmin.restore_database

呼叫預存程序之前,請檢閱下列考量事項:

呼叫 rdsadmin.backup_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_usernamemaster_password 取代為您的 RDS for Db2 資料庫執行個體資訊:

db2 connect to rdsadmin user master_username using master_password

備份資料庫之後,請務必終止連線。

terminate

如需有關檢查備份資料庫狀態的資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.backup_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

所有範例都會將名為 的資料庫備份MYDB至名為 的 Amazon S3 儲存貯體,amzn-s3-demo-bucket並將 s3_prefix 設定為 backups/daily

範例 #1:指定資料庫離線,且無法使用中位數使用率和單一上傳串流

在下列範例中,資料庫離線,速度更快,但表示資料庫在備份期間無法使用。此範例不會執行檔案壓縮、對系統資源造成中位數影響,並使用單一上傳串流至 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)"

範例 #3:指定離線資料庫,且無法使用預設值和系統計算

在下列範例中,資料庫離線,速度更快,但表示資料庫在備份期間無法使用。此範例使用檔案的預設壓縮和對系統資源的影響。它還允許 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_database

將資料庫從 Amazon S3 儲存貯體還原至 RDS for Db2 資料庫執行個體。

語法

db2 "call rdsadmin.restore_database( ?, 'database_name', 's3_bucket_name', 's3_prefix', restore_timestamp, 'backup_type')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要在 RDS for Db2 中還原的目標資料庫之名稱。資料類型為 varchar

例如,如果來源資料庫名稱為 TESTDB,而您將 database_name 設定為 NEWDB,則 Amazon RDS 會將 NEWDB 還原為來源資料庫。

s3_bucket_name

備份所在 Amazon S3 儲存貯體的名稱。資料類型為 varchar

s3_prefix

在下載期間用於檔案比對的字首。資料類型為 varchar

如果此參數為空,則會處理 Amazon S3 儲存貯體中的所有檔案。下列是範例字首:

backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
restore_timestamp

資料庫備份映像的時間戳記。資料類型為 varchar

時間戳記包含在備份檔案名稱中。例如,20230615010101 是檔案名稱 SAMPLE.0.rdsdb.DBPART000.20230615010101.001 的時間戳記。

backup_type

備份的類型。資料類型為 varchar。有效值:OFFLINEONLINE

ONLINE 用於接近零的停機時間遷移。如需更多詳細資訊,請參閱 Amazon RDS for Db2 接近零的停機時間從 Linux 遷移到 Linux

使用須知

您可以使用此預存程序將 Db2 資料庫遷移至 RDS for Db2 資料庫執行個體。如需詳細資訊,請參閱使用 AWS 服務將資料從 Db2 遷移至 Amazon RDS for Db2。您也可以使用此預存程序,以使用相同還原映像的不同資料庫名稱來建立相同資料庫的多個複本。

呼叫預存程序之前,請檢閱下列考量事項:

  • 在還原資料庫之前,您必須為大於磁碟上原始 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_prefixbackupfolder/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

  • RDS for Db2 不支援非連接常式。如需詳細資訊,請參閱Non-fenced routines not allowed

  • 若要改善資料庫還原操作的效能,您可以設定緩衝區數量、緩衝區操縱器,以及 RDS 要使用的多個備份路徑數量。若要最佳化儲存體用量並可能改善效能,您也可以直接從 Amazon S3 串流備份。若要檢查目前的組態,請使用 rdsadmin.show_configuration。若要變更組態,請使用 rdsadmin.set_configuration

若要讓資料庫上線,並在還原資料庫後套用其他交易日誌,請參閱 rdsadmin.rollforward_database

如需檢查資料庫還原狀態的相關資訊,請參閱 rdsadmin.get_task_status

如需呼叫 rdsadmin.restore_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤

範例

下列範例使用具有 s3_prefix 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_database

讓資料庫上線,並在透過呼叫 rdsadmin.restore_database 還原資料庫之後套用其他交易日誌。

語法

db2 "call rdsadmin.rollforward_database( ?, 'database_name', 's3_bucket_name', s3_prefix, 'rollforward_to_option', 'complete_rollforward')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要在其中執行作業的資料庫之名稱。資料類型為 varchar

s3_bucket_name

備份所在 Amazon S3 儲存貯體的名稱。資料類型為 varchar

s3_prefix

在下載期間用於檔案比對的字首。資料類型為 varchar

如果此參數為空,則會下載 S3 儲存貯體中的所有檔案。下列範例為範例字首:

backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101

下列是選用輸入參數:

rollforward_to_option

您要向前捲動的目標點。資料類型為 varchar。有效值:END_OF_LOGSEND_OF_BACKUP時間戳記格式為 YYYY-MM-DD-HH.MM.SS。預設值為 END_OF_LOGS

complete_rollforward

指定是否完成向前捲動程序。資料類型為 varchar。預設值為 TRUE

如果為 TRUE,則完成後,資料庫會上線並可存取。如果為 FALSE,則資料庫會保持 ROLL-FORWARD PENDING 狀態。

使用須知

您可以使用 rds.rollforward_database 進行線上備份,其中包含在許多不同情況下內部部署產生的日誌。

案例 1:還原資料庫、向前捲動包含的日誌,以及將資料庫上線

rdsadmin.restore_database() 完成之後,請使用範例 1 中的語法,將含有交易日誌的資料庫上線。

案例 2:將資料庫上線,但不向前捲動包含的日誌。

rdsadmin.restore_database() 完成之後,請使用範例 2 中的語法,將不含交易日誌的資料庫上線。

案例 3:向前捲動備份中包含的日誌,並在內部部署產生其他交易日誌時套用這些交易日誌

rdsadmin.restore_database() 完成後,使用範例 3 或範例 4 中的語法來向前捲動日誌,而不將資料庫上線。

如果您將 complete_rollforward 設定為 FALSE,則資料庫處於 ROLL-FORWARD PENDING 狀態且離線。若要將資料庫上線,您必須呼叫 rdsadmin.complete_rollforward

如需檢查向前捲動資料庫狀態的相關資訊,請參閱 rdsadmin.rollforward_status

範例

範例 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_status

傳回 ROLLFORWARD DATABASE database_name QUERY STATUS 的輸出。

語法

db2 "call rdsadmin.rollforward_status( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要在其中執行作業的資料庫之名稱。資料類型為 varchar

使用須知

呼叫 rdsadmin.rollforward_database 之後,您可以呼叫 rdsadmin.rollforward_status 來檢查資料庫中向前捲動的狀態。

如需檢查此預存程序狀態的相關資訊,請參閱 rdsadmin.get_task_status

rdsadmin.complete_rollforward

ROLL-FORWARD PENDING 狀態將資料庫上線。

語法

db2 "call rdsadmin.complete_rollforward( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

欲上線的資料庫之名稱。資料類型為 varchar

使用須知

如果您呼叫 rdsadmin.rollforward_database 並將 complete_rollforward 設定為 FALSE,則您的資料庫處於 ROLL-FORWARD PENDING 狀態且離線。若要完成向前捲動程序並將資料庫上線,請呼叫 rdsadmin.complete_rollforward

如需檢查完成向前捲動程序狀態的相關資訊,請參閱 rdsadmin.rollforward_status

範例

下列範例可將 TESTDB 資料庫上線:

db2 "call rdsadmin.complete_rollforward( ?, 'TESTDB')"

rdsadmin.db2pd_command

收集 RDS for Db2 資料庫的相關資訊。

語法

db2 "call rdsadmin.db2pd_command('db2pd_cmd')"

參數

以下是必要輸入參數:

db2pd_cmd

欲執行的 db2pd 命令之名稱。資料類型為 varchar

參數必須以連字號開頭。如需參數清單,請參閱 IBM Db2 文件中的 db2pd - 監控及故障診斷 Db2 資料庫命令

不支援下列選項:

  • -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

使用須知

此預存程序會收集有助於監控及故障診斷 RDS for Db2 資料庫的資訊。

預存程序會使用 IBM db2pd 公用程式來執行各種命令。db2pd 公用程式需要 SYSADM 授權,RDS for Db2 主要使用者並沒有該授權。不過,透過 Amazon RDS 預存程序,主要使用者可以使用公用程式來執行各種命令。如需關於公用程式的詳細資訊,請參閱 IBM Db2 文件中的 db2pd - 監控 Db2 資料庫命令並進行故障診斷

輸出上限為 2 GB。

如需檢查收集資料庫相關資訊狀態的相關資訊,請參閱 rdsadmin.get_task_status

範例

範例 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_application

強制應用程式退出 RDS for Db2 資料庫。

語法

db2 "call rdsadmin.force_application( ?, 'applications')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

應用程式

欲強制退出 RDS for Db2 資料庫的應用程式。資料類型為 varchar。有效值:ALLapplication_handle

使用逗號分隔多個應用程式的名稱。範例:'application_handle_1, application_handle_2'。

使用須知

此預存程序會強制所有應用程式退出資料庫,讓您可以執行維護。

預存程序使用 IBM FORCE APPLICATION 命令。FORCE APPLICATION 命令需要 SYSADMSYSMAINTSYSCTRL 授權,RDS for Db2 主要使用者並沒有該授權。不過,透過 Amazon RDS 預存程序,主要使用者即可以使用命令。如需詳細資訊,請參閱 IBM Db2 文件中的 FORCE APPLICATION 命令

如需檢查強制應用程式退出資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status

範例

範例 1:指定所有應用程式

下列範例會強制所有應用程式退出 RDS for Db2 資料庫:

db2 "call rdsadmin.force_application( ?, 'ALL')"

範例 2:指定多個應用程式

下列範例會強制應用程式處理 999188911192 退出 RDS for Db2 資料庫:

db2 "call rdsadmin.force_application( ?, '9991, 8891, 1192')"

rdsadmin.set_archive_log_retention

設定保留指定 RDS for Db2 資料庫封存日誌檔案的時間量 (以小時為單位)。

語法

db2 "call rdsadmin.set_archive_log_retention( ?, 'database_name', 'archive_log_retention_hours')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要設定封存日誌保留的資料庫之名稱。資料類型為 varchar

archive_log_retention_hours

保留封存日誌檔案的時數。資料類型為 smallint。預設值為 0,最大值為 168 (7 天)。

如果值為 0,則 Amazon RDS 不會保留封存日誌檔案。

使用須知

根據預設,RDS for Db2 會保留日誌 5 分鐘。如果您使用 等複寫工具 AWS DMS 進行變更資料擷取 (CDC) 或 IBM Q Replication,建議您在這些工具中設定超過 5 分鐘的日誌保留。

您可以呼叫 rdsadmin.show_archive_log_retention 來檢視目前的封存日誌保留設定。

您無法在 rdsadmin 資料庫上設定封存日誌保留設定。

範例

範例 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_archive_log_retention

傳回指定資料庫目前的封存日誌保留設定。

語法

db2 "call rdsadmin.show_archive_log_retention( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要顯示封存日誌保留設定的資料庫之名稱。資料類型為 varchar

範例

下列範例會顯示名為 TESTDB 之資料庫的封存日誌保留設定。

db2 "call rdsadmin.show_archive_log_retention( ?, 'TESTDB')"

rdsadmin.list_archive_log_information

傳回封存日誌檔案的詳細資訊,例如大小、建立日期和時間,以及指定資料庫的個別日誌檔案之名稱。其也會傳回資料庫中日誌檔案所使用的總儲存量。

語法

db2 "call rdsadmin.list_archive_log_information( ?, 'database_name')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

要列出封存日誌資訊的資料庫之名稱。資料類型為 varchar

範例

下列範例會傳回名為 TESTDB 之資料庫的封存日誌資訊。

db2 "call rdsadmin.list_archive_log_information( ?, 'TESTDB')"

rdsadmin.fgac_command

執行精細存取控制 (FGAC) 命令。

語法

db2 "call rdsadmin.fgac_command( ?, 'database_name', 'fgac_cmd')"

參數

以下是必要輸出參數:

?

輸出錯誤訊息的參數標記。此參數僅接受 ?

以下是必要輸入參數:

database_name

您要在其上執行 FGAC 命令的資料庫名稱。資料類型為 varchar

fgac_cmd

您要執行的精細存取控制命令。資料類型為 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 安全標籤。

使用須知

此預存程序可在資料列或資料欄層級控制對 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'')')"
  • 若要逸出括號 (【 】),請使用反斜線 (\)。下列範例顯示如何逸出 [''apple'',''banana'']

    db2 "call rdsadmin.fgac_command( ?, ' testdb', 'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"

範例

下列範例會在名為 的資料庫上執行 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'')')"