db2look 应该改进的地方

探讨了使用DB2LOOK工具进行数据库迁移时遇到的问题,特别是处理存储过程依赖关系的难点,并提出了一种通过中间表动态创建数据库对象的解决方案。

db2look 应该改进的地方

db2look可以导出数据库的创建脚本,具体的用法和实例可以通过db2look -h命令查看,这里不作说明。

使用db2look很方便,但在做跨平台的数据库迁移中,觉得不实用。

不能解决数据库对象之间的依赖关系:

db2look提供-ct选项,可以按对象创建时间生成 DDL 语句,这对于函数、视图来讲,可以根据创建的时间先后顺序导出
解决两者或各自内部之间的依赖关系,但对于存储过程来讲,就有点不适应了。

举个例子来讲:存储过程a依赖于存储过程b
              1、第一次创建的时候,过程b创建在前,过程a创建在后
       2、系统运行一段时间后,需要对过程b进行修改,进行删除重建操作
       3、此时过程a处于无效状态,可以显式调用rebind,或者在调用过程a时数据库自动rebind
       4、但是存储过程a的创建时间不变,只是绑定时间发生变化
       5、经过一系统变化之后过程a的创建时间在过程b的创建时间之前,如果依然按照创建时间顺序导出就不能解决这两个过程的依赖关系
       
如果直接使用 db2look导出的数据库创建脚本来创建新的数据库结构:
  
  如果脚本中带有DROP语句的话,可能存在视图或包无效,
  如果不带DROP语句的话,可能存在某些对象因依赖的对象没有创建而导致执行失败       
  两种情况下可能都需要多次执行创建脚本,这样会出现重复创建对象的警告信息
  对于执行后的检查来讲,也是比较复杂的,不能很明显的看到那些对象创建失败,是否全部执行成功
       
建议:
1、可以指定表导出数据库创建脚本,能将数据存放数据库表中,而不仅仅是外部文件中
2、存放数据创建脚本的表,至少包含以下列:类型、模式、名称、路径、创建语句 
3、在源数据上,填充该表后,通过导出导入(远程游标装载),将该表及数据导入到目标数据库
4、在目标数据库上可以通过存储过程,动态创建数据库对象。 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7690668/viewspace-617796/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7690668/viewspace-617796/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值