| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> php >> 基于DB2及PHP的应用系统跨平台迁移详细步骤(一) ji yu DB2 ji PHP de ying yong xi tong kua ping tai qian yi xiang xi bu zhou ( yi )
 

基于DB2及PHP的应用系统跨平台迁移详细步骤(一)

2008-12-22 08:07:42 编辑來源:互联网 繁體版 评论
 
 
本文为【基于DB2及PHP的应用系统跨平台迁移详细步骤(一)】的汉字拼音对照版显示拼音
  benwenzhuyaojieshaoruhewanchengjiyu DB2 de PHP yingyongxitongcong AIX pingtaidao Linux pingtaideyizhiguochengwenzhongbaohanledicengde DB2 shujukuyizhishangcengde PHP yingyongxitongyizhidexiangxibuzhouyijiyizhiguochengzhongkenengyudaodewentihejiejuefangfa

  renwugaishu

  xitongqianyidegongzuozhuyaofenweiyixiajigefangmian

  1.DB2 shujukuxitongdekuapingtaiqianyi

  2.Apache fuwuqiyu php yingyongxitongdeanzhuanghepeizhi

  xiamianwomenjiufen 2 gefangmianfenbiejieshaoqianyihepeizhidejutibuzhou

  DB2 shujukuxitongdekuapingtaiqianyi

  shujukuhuanjing

  yuanhuanjingAIXDB2 v8.1

  mubiaohuanjingLinuxDB2 v8.1

  qizhongyuanshujukuzhongbaohanle 2 geshujuku InstanceSRCDB1 yu SRCDB2zai SRCDB1/SRCDB2 shujukuzhongyunbaohanleshangbaizhangshujukubiaobingyouhenduodesuoyinwaijianyueshuchufaqicunchuguochengyijiyixiehanyouzizengziduandebiaohanyou GENERATED ALWAYS AS IDENTITY dingyiziduandebiaogengweikunnandeshiwomenbingmeiyouguanyuzhexieshujukuduixiangdezhunquechuangjianjiaoben

  qianyifangandexuanze

  ruguoqianyideyuanxitongyumudexitongshuyutongyileixingcaozuoxitongliru Linux zhijiandeqianyihuozhe AIX xitongzhijiandeqianyizeqingkuangxiangduijiandanDB2 benshenyijingtigongxiangguandeshiyonggongjulaishixianzhezhongtongleixingpingtaizhijiandeshujukuyizhiru BACKUP he RESTORE minglingdangrangenjubutongdeqingkuanghuanxuyaoduishiyonggongjusuotigongdeshenshuyoubijiaoqingchudelejiepiruyuanxitongyumubiaoxitong使shiyongbutongdebiaokongjianjiuhuishejidaobiaokongjianchongdingxiangdewentiyouyubenwendechongdianzaiyukuapingtaideyizhizhezhongfanganxianranwufamanzuxuqiuzaicibuzaiaoshu

  nameruhechulikuapingtaideshujukuqianyiwentishibushikeyi使shiyongshiyonggongju db2move ne db2move zhinengqianyibiaozhongdeshujuerwufaduisuoyinwaijianyueshuchufaqihecunchuguochengdengshujukuduixiangyeshixianqianyicaozuoerqieduiyubaohanzizengziduanshujudebiaolaishuodb2move yeyouyidingdexianzhibingqie db2move zhinengbashujudaorudaoyicunzaideshujukudebiaozhongwufaxianshizhidingbiaokongjiandeweizhiyouyuzaishujukudexitongqianyiguochengzhongbujinxuyaoqianyibiaozhongdeshujuhuanyousuoyinwaijianyueshuchufaqihecunchuguochengdengshujukuduixiangyubenwensuoxuanfanganxiangbihuanshihouzhegengjuyoushikeyijiang db2move jinzuoweiqianyibiaoshujudeyizhongbeiyongfangan

  erduiyu export he import laishuoyicizhinengzhenduiyizhangbiaojinxingdaochudaorucaozuobingqiexuyaoshoudongshuru export he import deminglingyijixuyaodaorudaochudeshujubiaomingzaishujukubiaodeshuliangbuduodeqingkuangxiazhezhongfanganyexuhuankeyikaolvdanyebubingshizuijiadefanganerzaishujukuzhongbiaoshuliangzhongduodeqingkuangxiazhezhongzuofazeshijibenbuxianshideerqie import minglingbingbunengbaozhengzizengziduandeshujuyuyuanlaidebiaoshujubaochiyizhi

  benwengenju DB2 duishujukuduixiangdechulijizhicaiyongjiang db2look yu DDLDML jiaobenxiangjiehedefangshibingzhenduiyuanshujukuzhongdechufaqicunchuguochengyijiwaijianyueshudengfenbiechuligeichuleyizhongkuapingtai DB2 shujukuxitongyizhidekexingfangan

  xiamianwomenyi SRCDB1 weilijieshaoyixiazhezhongqingkuangxiadeshujukuzhengtiqianyiguochengSRCDB1 shujukuzhongyou SRCDB1ASNDB2DBG he SQLDBA zhesigeshujukumoshijiashe SRCDB1 shujukudeyonghumingwei user_srcdb1mimapw_srcdb1

  zaiyuanxitong (AIX) shangdexiangguancaozuo

  1使shiyong db2look minglingchouqushengchengshujukuduixiangde DDL jiaoben

  qingdan 1. db2look minglingjishenshu

  # db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1

  db2look shengcheng DDL yi便bianchongxinchuangjianzaishujukuzhongdingyideduixiang

  yufa: db2look -d DBname [-e] [-u Creator] [-z Schema]

  [-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a]

  [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x]

  [-noview] [-i userID] [-w password]

  [-v Vname1 Vname2 ... VnameN] [-wrapper WrapperName]

  [-server ServerName] [-nofed]

  -d : shujukumingchengbixuanshenshu

  -e : chouqufuzhishujukusuoxuyaode DDL wenjiancixuanxiangjiangshengchengbaohan DDL yujudejiaoben

  -o : jiangshuchuchongdingxiangdaogeidingdewenjianmingruguoweizhiding -o xuanxiangzeshuchumorenzhuandao stdout

  -a : weisuoyouchuangjianchengxushengchengtongjixinxiruguozhidinglecixuanxiangzejianghulue -u xuanxiang

  -i : zhidingdengludaoshujukusuozaifuwuqishisuo使shiyongdeyonghubiaoshi

  -w : zhidingdengludaoshujukusuozaifuwuqishisuo使shiyongdemima

  2genjubutongleixingduixiangfenhuashujukuduixiang DDL jiaoben

  youyuyuanshujukuzhongdegegebiaoshujuyijingshijingguochufaqicunchuguochengdengshujukuduixiangchuliguodeshujuweibaozhengshujukuzhongshujudeyizhixinghewanzhengxingzhexieshujukuduixiangyinggaizaidaorushujuhouzaichuangjianyifangzhizaidaorubiaoshujushichongfuzhixingchufaqihecunchuguochengdengshujukuduixiangshengchengcuowushuju使shiyongwenbenbianjiqibianjiyou db2look shengchengde srcdb1.ddljiangchuangjianbiaojisuoyinde DDL yujuchuangjianwaijianyueshude DDL yujuyijichuangjianchufaqihechuangjiancunchuguochengdeyujufenweisizufenbiebaocunweixiamiansige DDL jiaoben

  srcdb1_tables.ddl srcdb1_foriegnkeys.ddl

  srcdb1_triggers.ddl srcdb1_procedures.ddl

  srcdb1_tables.ddl baohanchuangjian SEQUENCEUDFTABLEVIEW dengshujukuduixiangde ddl yuju

  qingdan2. srcdb1_tables.ddl yuju

  CREATE SEQUENCE "SRCDB1"."SAMPLE_SEQ_1" AS INTEGER

  MINVALUE 1 MAXVALUE 9999999999

  START WITH 1 INCREMENT BY 1;

  CREATE FUNCTION " SRCDB1"." SAMPLE _FUNC_1" (

  VARCHAR(254),

  VARCHAR(254),

  VARCHAR(254)

  ) RETURNS VARCHAR(254)

  SPECIFIC SAMPLE _FUNC_1 ;

  CREATE TABLE " SRCDB1"." SAMPLE _TAB_1" (

  "TAB_COL1" CHAR(20) NOT NULL ,

  "TAB_COL2" VARCHAR(70) NOT NULL ) ;

  CREATE TABLE " SRCDB1"." SAMPLE _TAB_2" ();

  

  CREATE TABLE " SRCDB1"." SAMPLE _TAB_N" ();

  CREATE VIEW SRCDB1.SAMPLE_VIEW_1 (VIEW_COL1,VIEW_COL2) AS SELECT distinct

  COL1 , COL2 FROM SAMPLE_TAB WHERE ;

  CREATE VIEW SRCDB1.SAMPLE_VIEW_2 ;

  

  CREATE VIEW SRCDB1.SAMPLE_VIEW_N ;

  srcdb1_foriegnkeys.ddl baohanchuangjianwaijianyueshude ddl yuju

  qingdan3. srcdb1_foriegnkeys.ddl yuju

  ALTER TABLE " SRCDB1"."SAMPLE_FK_1"

  ADD CONSTRAINT "SQL030903143850120" FOREIGN KEY

  ("FK_COL1")

  REFERENCES " SRCDB1"."SAMPLE_TABLE"

  ("COL1")

  ALTER TABLE " SRCDB1"."SAMPLE_FK_2" ADD ;

  

  ALTER TABLE " SRCDB1"."SAMPLE_FK_N" ADD ;

  srcdb1_triggers.ddl baohanchuangjianchufaqide ddl yuju

  qingdan 4. srcdb1_triggers.ddl yuju

  CREATE TRIGGER SRCDB1.SAMPLE_TRIG_1 AFTER UPDATE OF col1 ON SRCDB1.SAMPLE_TAB

  REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL WHEN ( n.col1 > 3)

  BEGIN ATOMIC

  update SAMPLE_TAB

  set(col2) = 'anotherValue' where col1 = n.col1 ;--

  END;

  CREATE TRIGGER SRCDB1. SAMPLE_TRIG_2 ;

  

  CREATE TRIGGER SRCDB1. SAMPLE_TRIG_N ;

  srcdb1_procedures.ddl baohanchuangjian SQL cunchuguochengyiji java cunchuguochengde ddl yuju

  qingdan 5. srcdb1_procedures.ddlyuju

  CREATE PROCEDURE " SRCDB1"." JAVA_PROCEDURE_1" (

  OUT SQLSTATE CHARACTER(5),

  OUT ROWS_SUBMITED INTEGER,

  IN BATCH_ID INTEGER,

  IN LEVEL VARCHAR(4000)

  )

  DYNAMIC RESULT SETS 0

  SPECIFIC SUBMIT_BATCH

  EXTERNAL NAME 'Submit_batch!submit_batch'

  LANGUAGE JAVA

  PARAMETER STYLE JAVA

  NOT DETERMINISTIC

  FENCED THREADSAFE

  MODIFIES SQL DATA

  NO DBINFO;

  CREATE PROCEDURE " SRCDB1"."JAVA_PROCEDURE_2" ;

  

  CREATE PROCEDURE " SRCDB1"."JAVA_PROCEDURE_N" ;

  SET CURRENT SCHEMA = " SRCDB1";

  SET CURRENT PATH = "SYSIBM","SYSFUN"," SRCDB1";

  CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_1 (

  IN hostname varchar(4000),

  IN username varchar(4000),

  OUT SQLCODE_OUT int )

  SPECIFIC SRCDB1.SQL_PROCEDURE_1

  LANGUAGE SQL

  -------------------------------------------------

  -- SQL Stored Procedure

  -------------------------------------------------

  P1: BEGIN

  

  END P1 ;

  CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_2 ;

  

  CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_N ;

  xuyaozhuyideshidb2 v6 banbende db2look shangweishixianchouquru UDFTRIGGERUserSpaceNodeGroupBufferPool dengshujukuduixiangde ddl yujucong db2 v7 kaishidb2look keyichouqushangshuduixiangde DDLdanshiyiranwufachouquchuangjiancunchuguochengduixiangde ddl yujucong db2 v8.2 kaishiwanshanledui db2look gongnengdezhichishixianlecunchuguocheng ddl yujudechouqugongnengyouyubenwensuoshejideyuanshujukuxitongdebanbenjiaodiDB2 v8.1yincixuyaocaiqushangshufanganhuoqusuoyoushujukuduixiangde DDL xinxi

  1. congmouge DB2 v8.2 xitongdui SRCDB1DB2 v8.1 banbenzhixing CATALOG caozuo

  db2 catalog db SRCDB1 as SRCDB1;

  2. cong DB2 v8.2 xitongdui SRCDB1 jinxing db2look chouquguocheng

  db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1;

  zheyangjiukeyihuoquwanzhengdeshujukuduixiang DDL xinxi

  3shengchengshujudaochuexportjiaoben

  使shiyong shell jiaobenshengchengbingdaochusuoyoushujude DML jiaobenbingjiangqichongdingxiangdao srcdb1_export.sql wenjianzhongduiyushuxi DB2 deyonghulaishuoyinggaizhidaoshujukuzhongchuangjiandemeigebiaoshitubiemingyunduiying SYSCAT.TABLES zhongyixingjiluyincikeyitongguoxiangyingdeshujuku select yujujiukeyihuoqusuoyouxuyaodeshujukubiaoxinxigenjuxuyaoxiashu shell jiaobenjiangcongxitongbiao SYSCAT.TABLES zhonggenju tabname ziduanxuanchu SRCDB1 zhongsuoyou tabschema biaomoshishi SRCDB1ASNSQLDBADB2DBG debiaomingzibinggenjutamendemingzishengchengxiangyingde export daochuyujudaodapiliangdaochudemudertrim hanshuyongyuquchu tabname ziduanshujudeyoubiandekongge

  qingdan6. shengchengexportjiaoben

  # 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 ;

  bianjishengchengde srcdb1_export.sqlshanchutoubuheyibusuoxianshidetongjixinxizhibaoliubiyaode export yujutongguoxiugaishangshujiaobenzhongsuobaohande tabschema xinxikeyizhidingxuyaodaochudebiaodefanweiyejiqianyiguochengzhongxuyaodesuoyoubiaomingsuoshengchengde export daochuyujujuyouruxiademinglingxingshi

  db2 export to tablename.ixf of ixf select * from tablename;

  4shengchengshujudaoru load jiaoben

  使shiyong shell jiaobenshengcheng load jiaobenyongyujiangshujudaorumubiaoxitongsrcdb1_load.sql

  qingdan7. shengcheng load jiaoben

  # db2 "select 'load from ' rtrim(tabname) '.ixf of ixf insert into '

  rtrim(tabname) ';' from syscat.tables

  where tabschema in ('SRCDB1', 'ASN', 'SQLDBA', 'DB2DBG')" > srcdb1_load.sql;

  bianjishengchengde srcdb1_load.sqlshanchutoubuheyibudetongjixinxizhibaoliubiyaode load yujuyu export daochuyujuleisishangshu shell jiaobencongxitongbiaozhongxuanchu SRCDB1 zhongsuoyoubiaodemingzibinggenjutamendemingzishengchengxiangyingde import daoruyujudaodapiliangdaorudemudesuoshengchengde import daoruyujuminglingxingshiruxia

  db2 load from tablename.ixf of ixf insert into tablename;原文】【拼音
 
 
 
 
上一篇《PHP程序开发的原则汇总》
下一篇《基于DB2及PHP的应用系统跨平台迁移详细步骤(二)》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
本文主要介绍如何完成基于 DB2 的 PHP 应用系统从 AIX 平台到 Linux 平台的移植过程。文中包含了底层的 DB2 数据库移植、上层的 PHP 应用系统移植的详细步骤以及移植过程中可能遇到的问题和解决方法。 任务概述 系统迁移的工作主要分为以下几个方面: 1.DB2 数据库系统的跨平台迁移 2.Apache 服务器与 php 应用系统的安装和配置 下面我们就分 2 个方面分别介绍迁移和配置的具体步骤。 DB2 数据库系统的跨平台迁移 数据库环境 源环境:AIX+DB2 v8.1 目标环境:Linux+DB2 v8.1 其中源数据库中包含了 2 个数据库 Instance:SRCDB1 与 SRCDB2。在 SRCDB1/SRCDB2 数据库中,均包含了上百张数据库表,并有很多的索引、外键约束、触发器、存储过程以及一些含有自增字段的表(含有 GENERATED ALWAYS AS IDENTITY 定义字段的表)。更为困难的是,我们并没有关于这些数据库对象的准确创建脚本。 迁移方案的选择 如果迁移的源系统与目的系统属于同一类型操作系统,例如 Linux 之间的迁移,或者 AIX 系统之间的迁移,则情况相对简单,DB2 本身已经提供相关的实用工具来实现这种同类型平台之间的数据库移植,如: BACKUP 和 RESTORE 命令。当然,根据不同的情况还需要对实用工具所提供的参数有比较清楚的了解,譬如源系统与目标系统使用不同的表空间,就会涉及到表空间重定向的问题。由于本文的重点在于跨平台的移植,这种方案显然无法满足需求,在此不再熬述。 那么,如何处理跨平台的数据库迁移问题?是不是可以使用实用工具 db2move 呢? db2move 只能迁移表中的数据,而无法对索引、外键约束、触发器和存储过程等数据库对象也实现迁移操作,而且对于包含自增字段数据的表来说,db2move 也有一定的限制。并且 db2move 只能把数据导入到已存在的数据库的表中,无法显示指定表空间的位置。由于在数据库的系统迁移过程中,不仅需要迁移表中的数据,还有索引、外键约束、触发器和存储过程等数据库对象,与本文所选方案相比,还是后者更具优势。可以将 db2move 仅作为迁移表数据的一种备用方案。 而对于 export 和 import 来说,一次只能针对一张表进行导出导入操作,并且需要手动输入 export 和 import 的命令以及需要导入导出的数据表名,在数据库表的数量不多的情况下,这种方案也许还可以考虑,但也不并是最佳的方案。而在数据库中表数量众多的情况下,这种做法则是基本不现实的,而且 import 命令并不能保证自增字段的数据与原来的表数据保持一致。 本文根据 DB2 对数据库对象的处理机制,采用将 db2look 与 DDL、DML 脚本相结合的方式,并针对原数据库中的触发器、存储过程以及外键约束等分别处理,给出了一种跨平台 DB2 数据库系统移植的可行方案。 下面我们以 SRCDB1 为例介绍一下这种情况下的数据库整体迁移过程。SRCDB1 数据库中有 SRCDB1、ASN、DB2DBG 和 SQLDBA 这四个数据库模式。假设 SRCDB1 数据库的用户名为 user_srcdb1,密码:pw_srcdb1。 在源系统 (AIX) 上的相关操作 1.使用 db2look 命令抽取生成数据库对象的 DDL 脚本 清单 1. db2look 命令及参数 # db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1 db2look :生成 DDL 以便重新创建在数据库中定义的对象 语法: db2look -d DBname [-e] [-u Creator] [-z Schema] [-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a] [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x] [-noview] [-i userID] [-w password] [-v Vname1 Vname2 ... VnameN] [-wrapper WrapperName] [-server ServerName] [-nofed] -d : 数据库名称,必选参数 -e : 抽取复制数据库所需要的 DDL 文件,此选项将生成包含 DDL 语句的脚本 -o : 将输出重定向到给定的文件名,如果未指定 -o 选项,则输出默认转到 stdout -a : 为所有创建程序生成统计信息,如果指定了此选项,则将忽略 -u 选项 -i : 指定登录到数据库所在服务器时所使用的用户标识 -w : 指定登录到数据库所在服务器时所使用的密码 2.根据不同类型对象,分化数据库对象 DDL 脚本 由于源数据库中的各个表数据已经是经过触发器、存储过程等数据库对象处理过的数据,为保证数据库中数据的一致性和完整性,这些数据库对象应该在导入数据后再创建,以防止在导入表数据时重复执行触发器和存储过程等数据库对象生成错误数据。使用文本编辑器编辑由 db2look 生成的 srcdb1.ddl,将创建表及索引的 DDL 语句,创建外键约束的 DDL 语句以及创建触发器和创建存储过程的语句分为四组,分别保存为下面四个 DDL 脚本: srcdb1_tables.ddl srcdb1_foriegnkeys.ddl srcdb1_triggers.ddl srcdb1_procedures.ddl srcdb1_tables.ddl :包含创建 SEQUENCE,UDF,TABLE,VIEW 等数据库对象的 ddl 语句。 清单2. srcdb1_tables.ddl 语句 CREATE SEQUENCE "SRCDB1"."SAMPLE_SEQ_1" AS INTEGER MINVALUE 1 MAXVALUE 9999999999 START WITH 1 INCREMENT BY 1; CREATE FUNCTION " SRCDB1"." SAMPLE _FUNC_1" ( VARCHAR(254), VARCHAR(254), VARCHAR(254) ) RETURNS VARCHAR(254) SPECIFIC SAMPLE _FUNC_1 ……; CREATE TABLE " SRCDB1"." SAMPLE _TAB_1" ( "TAB_COL1" CHAR(20) NOT NULL , "TAB_COL2" VARCHAR(70) NOT NULL ) ; CREATE TABLE " SRCDB1"." SAMPLE _TAB_2" (……); …… CREATE TABLE " SRCDB1"." SAMPLE _TAB_N" (……); CREATE VIEW SRCDB1.SAMPLE_VIEW_1 (VIEW_COL1,VIEW_COL2) AS SELECT distinct COL1 , COL2 FROM SAMPLE_TAB WHERE ……; CREATE VIEW SRCDB1.SAMPLE_VIEW_2 ……; …… CREATE VIEW SRCDB1.SAMPLE_VIEW_N ……; srcdb1_foriegnkeys.ddl :包含创建外键约束的 ddl 语句。 清单3. srcdb1_foriegnkeys.ddl 语句 ALTER TABLE " SRCDB1"."SAMPLE_FK_1" ADD CONSTRAINT "SQL030903143850120" FOREIGN KEY ("FK_COL1") REFERENCES " SRCDB1"."SAMPLE_TABLE" ("COL1"); ALTER TABLE " SRCDB1"."SAMPLE_FK_2" ADD ……; …… ALTER TABLE " SRCDB1"."SAMPLE_FK_N" ADD ……; srcdb1_triggers.ddl :包含创建触发器的 ddl 语句。 清单 4. srcdb1_triggers.ddl 语句 CREATE TRIGGER SRCDB1.SAMPLE_TRIG_1 AFTER UPDATE OF col1 ON SRCDB1.SAMPLE_TAB REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL WHEN ( n.col1 > 3) BEGIN ATOMIC update SAMPLE_TAB set(col2) = 'anotherValue' where col1 = n.col1 ;-- END; CREATE TRIGGER SRCDB1. SAMPLE_TRIG_2 ……; …… CREATE TRIGGER SRCDB1. SAMPLE_TRIG_N ……; srcdb1_procedures.ddl :包含创建 SQL 存储过程以及 java 存储过程的 ddl 语句。 清单 5. srcdb1_procedures.ddl语句 CREATE PROCEDURE " SRCDB1"." JAVA_PROCEDURE_1" ( OUT SQLSTATE CHARACTER(5), OUT ROWS_SUBMITED INTEGER, IN BATCH_ID INTEGER, IN LEVEL VARCHAR(4000) ) DYNAMIC RESULT SETS 0 SPECIFIC SUBMIT_BATCH EXTERNAL NAME 'Submit_batch!submit_batch' LANGUAGE JAVA PARAMETER STYLE JAVA NOT DETERMINISTIC FENCED THREADSAFE MODIFIES SQL DATA NO DBINFO; CREATE PROCEDURE " SRCDB1"."JAVA_PROCEDURE_2" ……; …… CREATE PROCEDURE " SRCDB1"."JAVA_PROCEDURE_N" ……; SET CURRENT SCHEMA = " SRCDB1"; SET CURRENT PATH = "SYSIBM","SYSFUN"," SRCDB1"; CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_1 ( IN hostname varchar(4000), IN username varchar(4000), OUT SQLCODE_OUT int ) SPECIFIC SRCDB1.SQL_PROCEDURE_1 LANGUAGE SQL ------------------------------------------------- -- SQL Stored Procedure ------------------------------------------------- P1: BEGIN …… END P1 ; CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_2 ……; …… CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_N ……; 需要注意的是,db2 v6 版本的 db2look 尚未实现抽取如 UDF,TRIGGER,UserSpace,NodeGroup,BufferPool 等数据库对象的 ddl 语句。从 db2 v7 开始,db2look 可以抽取上述对象的 DDL,但是依然无法抽取创建存储过程对象的 ddl 语句。从 db2 v8.2 开始,完善了对 db2look 功能的支持,实现了存储过程 ddl 语句的抽取功能。由于本文所涉及的源数据库系统的版本较低(DB2 v8.1),因此需要采取上述方案获取所有数据库对象的 DDL 信息: 1). 从某个 DB2 v8.2 系统对 SRCDB1(DB2 v8.1 版本)执行 CATALOG 操作: db2 catalog db SRCDB1 as SRCDB1; 2). 从 DB2 v8.2 系统对 SRCDB1 进行 db2look 抽取过程: db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1; 这样就可以获取完整的数据库对象 DDL 信息。 3.生成数据导出export脚本 使用 shell 脚本生成并导出所有数据的 DML 脚本,并将其重定向到 srcdb1_export.sql 文件中。对于熟悉 DB2 的用户来说,应该知道数据库中创建的每个表、视图、别名均对应 SYSCAT.TABLES 中一行记录。因此可以通过相应的数据库 select 语句就可以获取所有需要的数据库表信息。根据需要,下述 shell 脚本将从系统表 SYSCAT.TABLES 中根据 tabname 字段选出 SRCDB1 中所有 tabschema 表模式是 SRCDB1,ASN,SQLDBA,DB2DBG 的表名字,并根据它们的名字生成相应的 export 导出语句,到达批量导出的目的。rtrim 函数用于去除 tabname 字段数据的右边的空格。 清单6. 生成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 ; 编辑生成的 srcdb1_export.sql,删除头部和尾部所显示的统计信息,只保留必要的 export 语句。通过修改上述脚本中所包含的 tabschema 信息,可以指定需要导出的表的范围,也即迁移过程中需要的所有表名。所生成的 export 导出语句具有如下的命令形式: db2 export to tablename.ixf of ixf select * from tablename; 4.生成数据导入 load 脚本 使用 shell 脚本生成 load 脚本用于将数据导入目标系统:srcdb1_load.sql 清单7. 生成 load 脚本 # db2 "select 'load from ' rtrim(tabname) '.ixf of ixf insert into ' rtrim(tabname) ';' from syscat.tables where tabschema in ('SRCDB1', 'ASN', 'SQLDBA', 'DB2DBG')" > srcdb1_load.sql; 编辑生成的 srcdb1_load.sql,删除头部和尾部的统计信息,只保留必要的 load 语句。与 export 导出语句类似,上述 shell 脚本从系统表中选出 SRCDB1 中所有表的名字,并根据它们的名字生成相应的 import 导入语句,到达批量导入的目的。所生成的 import 导入语句命令形式如下: db2 load from tablename.ixf of ixf insert into tablename;
󰈣󰈤
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
可爱小魔女
夏日小桃红
琦吖囡半熟乖巧清新写真
天使的微笑
痞子的甘南日记
疑是银河落九天
雪域坝上四——纯美色
冬日恋歌——西城杨柳弄轻柔
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有