文章詳情頁(yè)
IBM DB2 的數(shù)據(jù)復(fù)制、遷移方法
瀏覽:7日期:2023-11-10 15:52:13
以下方法經(jīng)測(cè)試,在環(huán)境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空間中,數(shù)據(jù)的load速度在60-100萬(wàn)條/min左右。背景:需要更改數(shù)據(jù)庫(kù)表空間,或者需要將數(shù)據(jù)庫(kù)中所有表的數(shù)據(jù)遷移到一個(gè)新的數(shù)據(jù)庫(kù)中。步驟:1.通過(guò)db2控制臺(tái)(db2cc)選中源數(shù)據(jù)庫(kù)中的所有表,將其導(dǎo)出成DDL腳本;2.根據(jù)需要對(duì)腳本進(jìn)行必要的修改,譬如更改表空間為GATHER;3.新建數(shù)據(jù)庫(kù),新建DMS表空間:GATHER;4.將DDL腳本在此數(shù)據(jù)庫(kù)中執(zhí)行;5.編寫(xiě)代碼查詢?cè)磾?shù)據(jù)庫(kù)中的所有表,自動(dòng)生成export腳本;6.編寫(xiě)代碼查詢?cè)磾?shù)據(jù)庫(kù)中的所有表,自動(dòng)生成import腳本;7.連接源數(shù)據(jù)庫(kù)執(zhí)行export腳本;8.連接目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行import腳本;附錄1:生成export腳本代碼示例:/*** 創(chuàng)建導(dǎo)出腳本* @param conn* @param creator 表創(chuàng)建者* @param filePath*/public void createExportFile(Connection conn,String creator,String filePath) throws Exception {DBBase dbBase = new DBBase(conn);String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";try {dbBase.executeQuery(selectTableSql);} catch (Exception ex) {throw ex;} finally {dbBase.close();}DBResult result = dbBase.getSelectDBResult();List list = new ArrayList();while (result.next()) {String table = result.getString(1);list.add(table);}StringBuffer sb = new StringBuffer();String enterFlag = "";for (int i = 0; i < list.size();i++) {String tableName = (String)list.get(i);sb.append("db2 "export to aa" + String.valueOf(i+1)+ ".ixf of ixf select * from " + tableName + """);sb.append(enterFlag);}String str = sb.toString();FileUtility.saveStringToFile(filePath, str, false);}附錄2:生成import腳本代碼示例:/*** 創(chuàng)建裝載腳本* @param conn* @param creator 表創(chuàng)建者* @param filePath*/public void createLoadFile(Connection conn,String creator,String filePath) throws Exception {DBBase dbBase = new DBBase(conn);String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";try {dbBase.executeQuery(selectTableSql);} catch (Exception ex) {throw ex;} finally {dbBase.close();}DBResult result = dbBase.getSelectDBResult();List list = new ArrayList();while (result.next()) {String table = result.getString(1);list.add(table);}StringBuffer sb = new StringBuffer();String enterFlag = "";for (int i = 0; i < list.size();i++) {String tableName = (String)list.get(i);sb.append("db2 "load from aa" + String.valueOf(i+1)+ ".ixf of ixf into " + tableName + " COPY NO without prompting "");sb.append(enterFlag);}String str = sb.toString();FileUtility.saveStringToFile(filePath, str, false);}附錄3:export腳本示例db2 connect to testdb user test password testdb2 "export to aa1.ixf of ixf select * from table1"db2 "export to aa2.ixf of ixf select * from table2"db2 connect reset附錄4:import腳本示例db2 connect to testdb user test password testdb2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "db2 connect reset
標(biāo)簽:
DB2
數(shù)據(jù)庫(kù)
排行榜
