时间:2021-07-01 10:21:17 帮助过:24人阅读
校讯通数据库从sybase系统改造到oracle系统,进行了对象的总计有312张实体表,20个过程,通过手工敲,那肯定是猴年马月的事情,不
今天PMO下达任务单,校讯通数据库从sybase系统改造到Oracle系统,进行了对象的总计有312张实体表,20个过程,通过手工敲,那肯定是猴年马月的事情,不符合项目任务的工期进度。以下是本次转化的快捷方法:
1、通过powerdesigner的Change Current DBMS操作。
new dbms 选择ORACLE Version 10gR2替换current dbms的Sybase AS Enterprise 12.5.3a。
符合期望的:通过此步操作char、varchar、numeric、datetime转向了我们期望的char、varchar2、number、date。
不符合期望的:integer没有转向我们期望的number,默认值getdate()没有转向我们期望的SYSDATE,default ''没有转为有效的default ' '。针对oracle 空串是无效的。索引名保留了sybase特性,对象中唯一,却没有符合oracle的全局唯一。过程那是原原本本保留了sybase的脚本。
2、开始针对不符合期望的改造工作
校讯通数据库设计文档是用powerdesigner15版本设计的,可以直接通过编辑工具editplus,UltraEdit打开,本质上是xml文件,然后查找integer类型定义关键字串。
类型定义:INTEGER 统一修改成了 NUMBER(10)。
针对本质是布尔类型,是和否的判断的,显然NUMBER(1)就行,在定义此类字段名时有显著特征is_开头,通过EltraEdit打开找到is_字符串,在此字符串附近定位到针对这个字段的类型定义,由于做了前面步骤,都已经改成了NUMBER(10)统一改为NUMBER(1),针对其他字段,虽然可能有的字段长度不需要10,个别对待修改。
默认值定义:getdate()统一修改成了SYSDATE,在sybase中的default ''后来经分析确认,通过编辑工具打xml真实定义是''统一修改成了' '中间加入一空格,Oracle可以支持。
做了以上两步之后,表对象定义的类型以及默认值都符合了期望,至于索引名称由于要全局唯一,只能通过手工修改了,包括过程也是。通过统一替换已经给我们节省了不少时间,赶上项目任务单的计划进度不成问题了。其他类型的数据库设计文档的DBMS转换可以参考类似。
修改的规范参见:数据库设计规范
,