手机版

将数据从MSSQL server 2005迁移到Oracle 10g

时间:2021-08-02 来源:互联网 编辑:宝哥软件园 浏览:

类型:编程助手大小: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

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数据库的迁移已经结束。

版权声明:将数据从MSSQL server 2005迁移到Oracle 10g是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。