大型機 → 文件 → FTP → AIX → LOAD,涉及兩套環境、多次人工干預,耗時易錯。
在 AIX 端編寫 KornShell 腳本,利用 DB2 Connect 直連大型機完成 EXPORT,隨即 LOAD 入本地庫,全程無需登錄大型機。
#!/bin/ksh
# 用法: extract_load.ksh
export LOADFILE="/udb/db2aix01/file/file1/$1"
export USERID=$2
export PSWD=$3
export CurrentPWD=$PWD
echo `date`
# 1. 連接大型機並導出 IXF
db2 CONNECT TO DB2S390 USER $USERID USING $PSWD
echo "Extracting data from mainframe..."
db2 "EXPORT TO $LOADFILE.ixf OF IXF SELECT * FROM DBDEV.$1"
echo `date`
echo "Extract completed"
# 2. 斷開大型機,連接 AIX 目標庫
db2 DISCONNECT DB2S390
db2 CONNECT TO DDHAP00 USER xxxxx USING xxxxxx
# 3. 清理舊日誌並 LOAD
cp /dev/null /udb/db2aix01/file/file1/Load_$1.msg
echo `date`
echo "Loading data..."
db2 "LOAD FROM $LOADFILE.ixf OF IXF MODIFIED BY pagefreespace=0 totalfreespace=0 \
ROWCOUNT 999999999 WARNINGCOUNT 9 MESSAGES Load_$1.msg \
REPLACE INTO DBO.$1 STATISTICS NO INDEXING MODE AUTOSELECT"
echo `date`
echo "End of Load"
db2 DISCONNECT DDHAP00
cd $CurrentPWD
pagefreespace=0 totalfreespace=0:最大化頁填充,減少空間浪費。ROWCOUNT 999999999 WARNINGCOUNT 9:允許大量數據與少量警告。REPLACE:截斷表重載,適合全量刷新。STATISTICS NO INDEXING MODE AUTOSELECT:載入後自動收集統計、延後建索引,提速。db2look -d DB2S390 -t $1 -e -o ddl.sql 從大型機反向生成 DDL,先建表再 LOAD。EXPORT 讀負載,AIX 承擔 LOAD 寫負載,雙邊壓力可控。