本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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_codeset、database_territory 和 database_collation 的組合無效。如需詳細資訊,請參閱 IBM Db2 文件中的選擇資料庫的程式碼頁面、區域和定序
以下是必要參數:
database_name-
要建立之資料庫的名稱。資料類型為
varchar。
下列是選用參數:
database_page_size-
資料庫的預設頁面大小。有效值:
4096、8192、16384、32768。資料類型為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_codeset和database_territory的定序序列。
預設值為
IDENTITY。此外,RDS for Db2 支援下列定序群組:
language-aware-collation和locale-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 使用
NUMSEGS和DFT_EXTENT_SZ的預設值。 -
RDS for Db2 使用儲存加密,且不支援資料庫加密。
如需這些考量的詳細資訊,請參閱 IBM Db2 文件中的 CREATE DATABASE 命令
呼叫 rdsadmin.create_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_username 和 master_password 取代為您的 RDS for Db2 資料庫執行個體資訊:
db2 connect to rdsadmin usermaster_usernameusingmaster_password
如需檢查建立資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status。
如需呼叫 rdsadmin.create_database 時所傳回的錯誤訊息,請參閱 預存程序錯誤。
範例
下列範例會建立名為 TESTJP 的資料庫,其中包含日本的 database_code_set、database_territory 和 database_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_database 和 rdsadmin.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_database 與 rdsadmin.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 來捨棄資料庫:
-
當您使用 Amazon RDS 主控台或 AWS CLI來建立 RDS for Db2 資料庫執行個體時,並未指定資料庫的名稱。如需詳細資訊,請參閱建立資料庫執行個體。
-
您已透過呼叫 rdsadmin.create_database 預存程序來建立資料庫。
-
您已透過呼叫 rdsadmin.restore_database 預存程序,從離線或備份映像還原資料庫。
呼叫 rdsadmin.drop_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_username 和 master_password 取代為您的 RDS for Db2 資料庫執行個體資訊:
db2 connect to rdsadmin usermaster_usernameusingmaster_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。若要修改logprimary和logfilsiz,請將此參數設為'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 控制的組態設定。
| 名稱 | 描述 |
|---|---|
|
|
在還原作業期間所要建立緩衝區的數目。此值必須小於資料庫執行個體類別的總記憶體大小。如果未設定此設定,則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊,請參閱 IBM Db2 文件中的 RESTORE DATABASE 命令 |
|
|
在還原作業期間所要建立緩衝區操縱器的數目。此值必須小於資料庫執行個體 vCPU 數目的兩倍。如果未設定此設定,則 Db2 會決定在還原作業期間要使用的值。如需詳細資訊,請參閱 IBM Db2 文件中的 RESTORE DATABASE 命令 |
|
|
從 Amazon S3 操作還原期間要使用的路徑 (或 I/O 串流) 數目。若要使用此組態設定,您必須有多個備份檔案。此值可以改善使用大量資料還原資料庫時的效能,因為它會平行還原多個資料庫備份檔案。我們建議您設定此值以符合資料庫備份檔案的數目。如需詳細資訊,請參閱 IBM Db2 文件中的 BACKUP DATABASE 命令 |
|
|
指定是否要在還原期間直接串流備份資料,而不是先將整個備份下載到您的 RDS for 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設定為高於1,db_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。有效值:1–100(從低到高)。預設值為50。較低的值可減少備份對系統資源的影響,但可能會增加備份資料庫所需的時間。較高的值可能會更快地完成資料庫的備份,但可能會影響其他操作。實際影響取決於整體系統使用率和
util_impact_lim設定。您可以在參數群組中檢視和修改util_impact_lim設定。如需詳細資訊,請參閱Amazon RDS for Db2 參數。 num_files-
平行上傳至 Amazon S3 的串流數目。資料類型為
integer。有效值:1–256。建議您只在以 Amazon RDS 自動計算的預設值觀察備份效能之後,才設定此參數。較高的值可以改善大型備份的效能,尤其是高頻寬連線,但在特定時間點,較高的值會降低效能。此外,請務必考量可用的系統資源和網路容量。
平行處理-
備份公用程式可以平行讀取的資料表空間數目。資料類型為
integer。有效值:1–256。我們建議您在預設情況下觀察 Db2 引擎自動計算為最佳值的備份效能後,才設定此參數。如果您設定此參數,Amazon RDS 會根據可用的處理器進行驗證,如果處理能力不足,則不會執行備份請求。
num_buffers-
要使用的緩衝區數量。資料類型為
integer。有效值:1–268435456。我們建議您只在觀察 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。
呼叫預存程序之前,請檢閱下列考量事項:
-
您一次只能備份一個資料庫。
-
您無法在資料庫執行個體上執行備份和還原。
-
不支援使用 AWS KMS (SSE-KMS) 的 Amazon S3 伺服器端加密。即使 S3 儲存貯體設定為 SSE-KMS,上傳至 S3 儲存貯體的檔案也不會使用 SSE-KMS 加密。
-
若要將備份檔案串流至 Amazon S3,您必須已設定整合。如需詳細資訊,請參閱整合 Amazon RDS for Db2 資料庫執行個體和 Amazon S3。
-
若要讓 RDS for Db2 資料庫執行個體能夠與 Amazon S3 互動,您必須擁有 VPC 和 Amazon S3 閘道端點,私有子網路才能使用。如需詳細資訊,請參閱步驟 1:這會為 Amazon S3 建立 VPC 閘道端點及步驟 2:確認 Amazon S3 的 VPC 閘道端點存在。
呼叫 rdsadmin.backup_database 之前,您必須連線到 rdsadmin 資料庫。在下列範例中,將 master_username 和 master_password 取代為您的 RDS for Db2 資料庫執行個體資訊:
db2 connect to rdsadmin usermaster_usernameusingmaster_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。有效值:OFFLINE、ONLINE。將
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_LOGS,END_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。有效值:ALL或application_handle。使用逗號分隔多個應用程式的名稱。範例:'
application_handle_1,application_handle_2'。
使用須知
此預存程序會強制所有應用程式退出資料庫,讓您可以執行維護。
預存程序使用 IBM FORCE APPLICATION 命令。FORCE APPLICATION 命令需要 SYSADM、SYSMAINT 或 SYSCTRL 授權,RDS for Db2 主要使用者並沒有該授權。不過,透過 Amazon RDS 預存程序,主要使用者即可以使用命令。如需詳細資訊,請參閱 IBM Db2 文件中的 FORCE APPLICATION 命令
如需檢查強制應用程式退出資料庫狀態的相關資訊,請參閱 rdsadmin.get_task_status。
範例
範例 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_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'')')"