IBM DB2跨平臺資料庫遷移步驟和注意事項
db2是個有著廣泛商業應用的關聯式資料庫軟體。作為一個資料庫管理員時常面臨著資料庫系統的遷移工作,這是一個複雜而艱鉅的過程。網際網路和 db2 的幫助文件中有許多關於 db2 資料庫遷移的介紹,但是對於 db2 資料庫的跨平臺遷移卻很少談及。本文將基於筆者的成功實踐,總結一下跨平臺資料庫遷移的步驟和注意事項。
簡介
遷移步驟
經過筆者的實踐,總結 db2 資料庫的跨平臺遷移步驟如下:
記錄源資料庫管理系統配置引數,以備遷移過後資料庫系統效能調優;
檢查源資料庫系統物件,明確要遷移哪些資料庫系統物件;
匯出源資料庫系統的資料集;
生成源資料庫系統的資料物件定義語句;
在目標平臺建立新的資料庫,參照源系統進行設定;
匯入源資料集;
檢查資料集匯入過程日誌,排除可能的錯誤;
執行資料物件定義語句;
檢查資料物件語句執行日誌,排除可能的錯誤;
檢查更新的定義;
連線應用系統,測試資料庫遷移是否成功。
下面給出一個遵循上述步驟的具體例子,其中將給出執行這些步驟的具體 db2 命令以供參考。
1. 記錄源資料庫管理系統配置引數。這些是很重要的資料環境設定,其中的一些設定關係到遷移能否成功。
清單 1. 顯示資料庫管理系統配置引數的命令
以下是引用片段:
db2 get dbm cfg
清單 2. 顯示資料庫配置引數的命令
以下是引用片段:
db2 get db cfg for source_db_name
注意:Italic part should be replaced by your settings.
注意:對於比較複雜的源資料庫,要注意它的應用程式組記憶體大小引數(appgroup_memo_sz)。如果它的大小不夠,後面生成資料物件定義的時候會有問題。
清單3. 顯示資料庫變數的命令
以下是引用片段:
db2set -all
清單 4. 顯示資料庫表空間的命令
以下是引用片段:
db2 list tablespaces show detail
清單 5. 顯示資料庫程式包的命令
以下是引用片段:
db2 list packages
上述顯示錶空間和程式包的命令都需要先建立到源資料庫的連線。
2. 檢查源資料庫系統物件,明確要遷移哪些資料庫系統物件
如何檢查源資料庫系統物件?一個最直觀的方法就是使用DB2控制中心(db2cc)瀏覽檢視錶,檢視,觸發器,使用者定義的函式,儲存過程等資料庫物件。尤其要注意有無大的表,比如一行資料的表定義可能大於8K的表。 這樣的表需要在目標資料庫上建立具有足夠頁大小的表空間。下面的步驟中將會給出列子。還需要注意的是有無外部定義的儲存過程,這些儲存過程所關聯的外部程式包需要手工重新關聯。
3. 匯出源資料庫系統的資料集
db2 提供了一個工具叫作 db2move,使用者透過它可以把所有使用者定義的表中的資料匯出到 IXF(整合交換格式)的檔案中。同時,在匯入資料的時候,它還可以生成表上的所定義的索引。具體的匯出執行命令如下:
清單 6. 匯出源資料集
以下是引用片段:
db2move dbname
export -u
username
-p
password
根據資料庫大小,機器效能的不同,這個匯出過程可能耗時幾分鐘到幾個小時不等。在筆者的經歷中,這個匯出過程就長達 2 個多小時。
4. 生成源資料庫系統的資料物件定義語句
在匯出了資料之後,要做的就是匯出資料物件定義。DB2提供了一個工具叫db2look,使用者可以透過它來生成資料庫中的資料物件定義,包括別名,表,索引,檢視,觸發器,使用者定義函式,儲存過程等。具體的命令如下:
清單 7. 生成資料物件定義語句
以下是引用片段:
db2look -d dbname
-e -o
ddlfile
-i
username
-w
password
如果資料庫非常複雜,包含很多的資料物件定義,那麼在執行上述命令前,使用者有可能要先調整引數appgroup_memo_sz,才能夠順利的生成資料物件定義檔案。下面是筆者修改這個引數的命令示例:
清單 8. 調整源資料庫引數
以下是引用片段:
db2 update db cfg for dbname using appgroup_mem_sz 51368
5. 在目標平臺建立新的資料庫,參照源系統設定引數
在源平臺上完成了資料匯出和資料物件定義語句生成之後,下面就是要在目標平臺建立目標資料庫了。參考源資料庫的設定為新建立的資料庫配置適當的引數,通常需要調整的引數有:
dbheap - 資料堆大小
catalogcache_sz - 目錄快取記憶體大小
logbufsz - 日誌緩衝區大小
util_heap_sz - 實用程式堆大小
buffpage - 緩衝池大小
sortheap - 排序列表堆
stmtheap - sql 語句堆
applheapsz - 預設應用程式堆
筆者使用的調整語句如下:
清單 9. 調整語句
以下是引用片段:
db2 update db cfg for dbname using dbheap 41599
db2 update db cfg for dbname using catalogcache_sz 38049
db2 update db cfg for dbname using logbufsz 256
db2 update db cfg for dbname using util_heap_sz 20000
db2 update db cfg for dbname using buffpage 1000
db2 update db cfg for dbname using sortheap 4096
db2 update db cfg for dbname using stmtheap 16384
db2 update db cfg for dbname using applheapsz 10242
對於非常複雜的資料庫,目標資料庫的日誌引數還需要做出調整,以便在匯入資料和生成資料物件時,系統不至於日誌溢位。由於筆者要遷移的資料庫比較複雜,所以使用了較大的日誌配置,命令示例如下:
清單 10. 命令示例
db2 update db cfg for dbname using logfilsiz 8192
db2 update db cfg for dbname using mincommit 1
db2 update db cfg for dbname using logprimary 24
db2 update db cfg for dbname using logsecond 108
6. 匯入源資料集
細心的讀者可能會發現,這裡總結的步驟6和8看似不太符合一般的邏輯順序。對於資料庫系統,通常都是先生成資料系統物件,如表,檢視,觸發器等,然後再匯入資料集。而上述步驟中卻是先匯入資料集,然後再生成資料物件定義。 這能行的通嗎?對於DB2來說,這完全行得通,因為db2move命令在匯入資料集時,會自動生成表和索引。這樣的順序對於複雜資料物件定義的資料庫遷移是唯一可行的順序,因為複雜資料庫中往往包含諸多複雜的資料約束語句, 它們會造成資料集匯入時的種種問題。
清單 11. 匯入源資料集的命令示例
以下是引用片段:
db2move targetdbname
import -u
username
-p
password
如果資料量非常大,這個過程將會非常耗時。
7. 檢查資料集匯入過程日誌,排除可能的錯誤。
匯入完成後,你需要檢查匯入過程日誌,檢視有無錯誤發生。如果有錯誤,你需要找出解決方法,然後從步驟 5 重新開始。
8. 在目標系統執行資料系統物件定義語句
修改步驟 4 生成的 ddl 語句檔案,去除檔案前端的資料庫連線語句,儲存後執行如下命令:
清單12. 命令示例
以下是引用片段:
db2 connect to targetdbname
user
username
using
password
db2 -tvf ddlfile > createSchema.log
db2 connect reset
9.檢查資料物件生成日誌,排除可能的錯誤
通常你會發現有很多建立表的語句執行失敗的記錄,不要緊張,這是正常的,因為前面的步驟中已經生成了所有的使用者表。所以檢查的焦點應該放在其他資料庫物件(如檢視和觸發器等)的生成語句上。 如果資料庫非常複雜,可能需要非常細緻的檢查日誌,以確保所有資料物件都正確建立。
10. 執行後期檢查
通常,使用者可能碰到兩種需要處理的情況。其一,如果資料庫系統中有用 編寫的儲存過程,那麼需要註冊儲存過程的外部程式包。命令示例如下:
清單 13. 命令示例
以下是引用片段:
db2 call sqlj.install_jar ('jar_url','jar_id')
db2 drop procedure procedurename
db2 create procedure procedurename
external name '
jar_id:
db2 grant execute on procedure procedurename to public
其二,如果表定義中有資料庫管理的自動增長列,比如表定義語句含有 "GENERATED BY DEFAULT AS IDENTITY"。那麼你需要更新這些列的起始計數。命令示例如下:
清單 14. 命令示例
以下是引用片段:
db2 alter table
tabname
alter column
colname
restart with
newstartnumber
這個 newstartnumber 的多少是要根據目前表中該列的最大值來定的,具體公式是 newstartnumber = currentmaxnumber + 1。
11. 配置應用程式,連線資料庫,測試遷移是否成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199667/viewspace-1022802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mongodb資料遷移步驟MongoDB
- PG 資料庫 DTS 遷移需要注意的事項:資料庫
- MySQL 資料庫設計和注意事項MySql資料庫
- Git 倉庫程式碼遷移步驟記錄Git
- MySQL 資料庫-索引注意事項MySql資料庫索引
- 【odoo】[經驗分享]資料遷移注意事項Odoo
- MySQL 8.0.20 MGR資料遷移過程以及注意事項MySql
- MAVEN新增本地倉庫和注意事項!Maven
- Oracle資料庫表設計時的注意事項Oracle資料庫
- 安裝 Nuxt.js 的步驟和注意事項UXJS
- 跨平臺資料庫 Realm 整合實踐資料庫
- 用傳輸表空間跨平臺遷移資料
- 大資料學習注意事項大資料
- Oracle 資料匯出注意事項Oracle
- 低程式碼開發平臺選型注意事項
- JetBrains DataGrip 2024.2 (macOS, Linux, Windows) - 資料庫和 SQL 跨平臺 IDEAIMacLinuxWindows資料庫SQLIDE
- 信創伺服器遷移注意事項伺服器
- 資料網格的注意事項 - Kineret
- db2匯出資料庫定義及遷移資料DB2資料庫
- uni-app 跨端開發注意事項APP跨端
- oracle資料庫跨平臺(AIX)從RAC恢復至(linux)下的單例項Oracle資料庫AILinux單例
- netcore後臺任務注意事項NetCore
- 企業遷移到公有云之前的注意事項
- weblogic版本升級遷移需要注意事項Web
- 低程式碼開發平臺選型的注意事項(上)
- 低程式碼開發平臺選型的注意事項(下)
- 搭建交易所平臺要注意的事項 | 交易所平臺如何搭建
- 敏捷企業的資料管理注意事項敏捷
- 使用docker建立和執行跨平臺的容器化的mssql資料庫DockerSQL資料庫
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 使用無程式碼開發平臺需要重點注意的事項
- XtraBackup 搭建從庫的一般步驟及 XtraBackup 8.0 的注意事項
- Taro原理分析、遷移指南及開發注意事項
- 資料庫平臺資料庫
- db2 資料庫DB2資料庫
- 購買低程式碼平臺,必須考慮的關鍵指標和注意事項指標
- 某行XX系統DB2資料庫遷移實施方案DB2資料庫
- @Lombok注意事項Lombok
- RandomAccessFile注意事項randomMac