SRCDB1/SRCDB2,數百表、索引、外鍵、觸發器、存儲過程、自增列(GENERATED ALWAYS AS IDENTITY)。
# 需 DB2 V8.2 客戶端編目源庫才能提取存儲過程
db2 catalog db SRCDB1 as SRCDB1 at node <aix_node>;
db2look -d SRCDB1 -e -a -o srcdb1.ddl -i user_srcdb1 -w pw_srcdb1;
關鍵:V8.1 db2look 不支持存儲過程提取,必須從 V8.2 客戶端遠程編目執行。
| 文件 | 包含對象 | 執行順序 |
|---|---|---|
| srcdb1_tables.ddl | SEQUENCE、UDF、TABLE、VIEW、INDEX | 1 |
| srcdb1_foreignkeys.ddl | ALTER TABLE ... ADD CONSTRAINT FOREIGN KEY | 2(數據導入後) |
| srcdb1_triggers.ddl | CREATE TRIGGER | 3 |
| srcdb1_procedures.ddl | CREATE PROCEDURE (SQL/Java) | 4 |
原則:先建表/索引 → 再導數據 → 最後建外鍵/觸發器/過程,避免導數據時觸發器重複執行產生髒數據。
# export 腳本
db2 "SELECT 'EXPORT TO '||RTRIM(TABNAME)||'.ixf OF IXF SELECT * FROM '||RTRIM(TABNAME)||';'
FROM SYSCAT.TABLES WHERE TABSCHEMA IN ('SRCDB1','ASN','SQLDBA','DB2DBG')" > srcdb1_export.sql
# load 腳本(含自增列覆蓋模式)
db2 "SELECT 'LOAD FROM '||RTRIM(TABNAME)||'.ixf OF IXF MODIFIED BY IDENTITYOVERRIDE INSERT INTO '||RTRIM(TABNAME)||';'
FROM SYSCAT.TABLES WHERE TABSCHEMA IN ('SRCDB1','ASN','SQLDBA','DB2DBG')" > srcdb1_load.sql
編輯腳本刪除頭尾統計信息,保留純命令。自增列三模式:IDENTITYIGNORE(忽略文件值)、IDENTITYMISSING(自動生成)、IDENTITYOVERRIDE(使用文件值,保持一致性首選)。
db2 -tvf srcdb1_export.sql # 生成 *.ixf 文件
db2icrt SRCDB1 創建實例;db2 create database SRCDB1 + 必需表空間/緩衝池/參數;db2 -tvf srcdb1_tables.ddl 建表/索引/視圖/序列/UDF;db2 -tvf srcdb1_load.sql 批量載入數據(.ixf 文件置於當前目錄);foreignkeys、triggers、procedures 腳本;RUNSTATS 收集統計信息,驗證行數、約束、觸發器、過程調用。
./configure --prefix=/usr/local/apache2 --enable-module=so
make && make install
ln -s /usr/local/apache2/bin/apachectl /sbin/apachectl
apachectl start
檢查 httpd -l 輸出含 mod_so.c 確認 DSO 支持。
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/sbin/apxs \
--without-mysql \
--with-ibm-db2=/home/reportdb/sqllib
make && make install
cp php.ini-dist /usr/local/lib/php.ini
--with-ibm-db2 指定實例 sqllib 路徑,啟用 Unified ODBC 驅動(兼容 DB2 V8.1)。
DocumentRoot "/home/web/www"
DirectoryIndex index.php index.html
AddType application/x-httpd-php .php .inc
LoadModule php4_module modules/libphp4.so
if [ -f /home/reportdb/sqllib/db2profile ]; then
. /home/reportdb/sqllib/db2profile
fi
重啟 apachectl restart,瀏覽 test.php 驗證 phpinfo() 顯示 IBM_DB2/ODBC 模組載入成功。
SYSCAT.COLUMNS.IDENTITY_VAL)與源端一致;「db2look 分類 DDL → export/load 腳本化 → 依賴順序重建 → Apache/PHP 環境複刻」形成可復用的跨平台遷移模板,適用於 AIX→Linux、Solaris→Linux 等同版本異平台場景。