类型:编程助手大小:237KB语言:英语评分:7.0标签:立即下载。由于工作需要,数据库从MSSQL移植到了Oracle。很难想到这件事。有了坚持,终于完成了,也注意到了一些重要的事情。
1.移植前准备
移植前,需要安装各种必要的软件,如下:
(1).安装SQL server 2005服务包和SP2。
(2).在oracle安装包中安装Oracle客户端浏览器(PL/SQL Developer)。(可根据需要安装中文补丁或中文包。)
(3).硬件要求:在Oracle数据库所在的硬盘上保留足够的剩余空间(至少剩余2GB空间);建议在启用Oracle服务时,机器的内存不应小于2GB。
本文的数据迁移针对的是常见的属性数据,无需特别说明。
Oracle 10g For Windows中文安装分数:1.6类别:数据库类大小:500M语言:中文查看详情
2.移植
2.1.创建数据库
在Oracle中打开数据库配置助手创建数据库,如图所示:
图1打开数据库配置助手
进入数据库配置助手后,点击“下一步”,会出现如图2所示的界面。选择“创建数据库”并单击“下一步”:
图2创建数据库
选择第一个“一般用途”,如图3所示,然后单击下一步:
图表3选择模板
如图标2所示,在数据库创建的第三步,在全局数据库名称中输入数据库名称,SID会自动默认为全局数据库名称,然后点击下一步;
图4创建数据库
在图5所示的界面中点击“确定”按钮,系统将开始创建数据库。
图表5
图表6传教士数据库
最后,单击如图4所示的“退出”按钮来创建数据库。
图表7数据库创建完成
2.2.登录甲骨文
打开PL/SQL Developer,以系统(数据库默认用户名)身份登录XQ2DSGN,选择以SYSDBA身份连接,如图:
图8登录到PLSQL
2.2.1.创建表空间
用于创建表空间的Sql语句:
SQLcreate表空间xq2s gn数据文件' g : Oracle product 10 . 2 . 0 ora data xq2s gn xq2s gn . DBF '大小2048m auto extend on next 10m max size unlimited;
(参考:
通过PL/SQL Developer登录Oracle数据库后,打开菜单:文件/新建/命令窗口,打开一个命令窗口,然后在这个命令窗口中执行脚本创建和删除表空间,创建新用户和授权操作,如图:
图9打开命令窗口
创建表空间
Sqlcreate tablespace xqds2gn数据文件' d : ora data xq2s gn xq2s gn . DBF '大小200m自动扩展到下一个10m maxsize无限制;
Sqlalter数据库数据文件' d : ora data xq2s gn xq2s gn . DBF '自动扩展;
1数据文件:表空间数据文件存储路径2SIZE:最初设置为200M3 UNIFORM:指定的区域大小为128k。如果未指定,区域大小默认为64k4。空间名xq2dsgn和数据文件名xq2dsgn.dbf不要求相同,可以随意命名。
5自动扩展开/关意味着启动/停止表空间的自动扩展
6替换数据库数据文件' d : ora data xq2 dsgn xq2 dsgn . DBF '调整大小500米;
//手动将数据文件大小修改为500M
图10表空间创建完成
删除表空间
声明如下:
删除表空间q2dsgnition,包括内容和数据文件;
2.2.2.创建用户
1.建立用户并为用户指定默认永久表空间和临时表空间
SQL创建由byxq2dsgn标识的userxq2dsgnidentified
默认表空间xq2dsgn
临时表空间临时;
用户已创建。(userxq2dsgn表示用户名:xq2dsgn,后跟由密码标识的)
2.2.3.要授权用户
授予用户会话的权限如下所示:
将创建会话授予xq2dsgn
授予用户创建表的权限;
授予xq2dsgn创建表的权限;
授予用户设置表空间大小的权限;
向xq2dsgn授予无限制的表空间;
向用户授予数据库管理员权限:
将dba授予xq2dsgn
图11创建用户和授权
2.3.导出数据
2.3.1.打开SQL server导入和导出数据向导
登录到SQL server 2005资源对象管理器,选择数据库,找到要导出到Oracle的数据库,然后右键单击选择任务导出数据。如图所示:
图12DTS导出数据
2.3.2.选择数据源
弹出表单如下,点击“下一步”
2.3.3.选择目标数据库和配置属性
如下图所示,为oledb选择Oracle提供程序
图13选择目标数据库
(2)属性配置导入本地计算机
如图所示,在“输入服务器名称”中输入这台计算机上新创建的Oracle数据库名称,在“用户名和密码”中输入新创建并设置的用户名和密码,单击“测试连接”提示“测试连接成功”,然后单击“确定”继续下一步。
图14配置属性
(3)导入到域中的其他计算机上的属性配置
如图所示,服务名称是目标计算机的IP和目标Oracle数据库的名称。
2.3.4.选择源表、源视图和目标表,并编辑映射
选择要导出的表或全选(建议根据表的类型和复杂程度选择一个或多个表进行导出,避免全选时难以纠错)。
图15选择源表和源视图
编辑映射。在此图中,单击每一行中的目标表,然后单击编辑映射,弹出以下窗口:
点击右上角的“编辑SQL”按钮,弹出如下表单:
该表单显示了要在oracle数据库中创建的数据库表的sql语句。如果出现以下情况:(1)表名、字段名中有小写字母;(2)字段类型不正确;(3)有EVENTID字段或uniqueidentifier 16类型的其他字段(与GUID对应的字段);我们需要修改:(1)确保引号中的表名和字段名全部大写;(2)字段类型正确;(3)VARCHAR2(38)默认系统_GUID()不为空
在这个表中,我们需要修改EVENTID字段,修改后的表单如下:
修改后点击“确定”按钮。
在这一步中,有必要依次检查每个表,并确认每个表的sql语句是正确的,然后再进行下一步。()
有些表名和字段名都是小写或者都是大写和小写,直接导入到Oracle数据库中会导致一些使用上的错误。因此,我们在上图的sql语句中手动将引号中的所有表名和字段名改为大写,并将“列映射”页面中的目标数据字段改为全大写。如果要继续使用小写表名,请注意引号的应用。
2.3.5.执行导出
选择表格后,单击“下一步”或“完成”。如果没有错误,系统会提示导入成功,如下图所示:
图16成功导入
3.特殊字段处理
3.1.自生田的加工
自增长字段有时在Sql server数据库中用作主键,但在oracle数据库中没有这样的字段,因此我们需要单独处理这样的字段。
以下描述以StationSeries表的objectid字段为例。
StationSeries表的objectid在sql server数据库中为int类型,标识增量为1;导入oracle数据库后,字段类型为整数。
(1)创建一个新的sql窗口(登录到plsql后,文件主菜单,新建SQL窗口)。
(2)在此窗口中输入以下sql语句:
从stationseries中选择max(objectid );
(3)按F8执行语句,看到最大ID值为4743。下图:
(3)创建新序列。在“sql”窗口中,输入以下sql语句:
createsequenceOBJECTID _ stationseries invalue 4744 max value 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
用鼠标选择语句,然后按F8执行该语句,从而创建一个序列。
注意:在这个语句中,OBJECTID_STATIONSERIES是序列的名称;Minvalue后的4744是上述sql语句的最大objectid值1,即4743 1=4744;Maxvalue只需尽可能多地填写数字。Start with的值与minvalue相同,递增1表示一次递增1。
下图:
(4)建立触发器。
同样,在“sql”窗口中,输入以下sql语句:
creatorreplacetrigobjectid _ station series
beforeinsertonstationseries
foreachrow
声明
-这里是局部变量
nextidnumber
开始
if : new . objectidinullor : new . objectid=0 then
selectobjectid.nextval
intonextid
from sys . dual;
: new . objectid :=next id;
endif
endo objectid;
用鼠标选择语句,按F8执行该语句,即创建一个向StationSeries表添加objectid的触发器。描述:在这个语句中,objectID_stationseries是触发器的名称。beforeinserton之后的Stationseries是创建触发器的表的名称。Objectid是一个字段。
经过以上四个步骤,我们可以在不改变代码的情况下实现类似sql server数据库中的自动增长字段。
导入oracle数据库后,我们需要检查sql server数据库。对于其他表中的自添加字段,我们还需要重复上述步骤来实现oracle数据库中的自添加字段。
至此,从sql server数据库到oracle数据库的迁移已经结束。