sqlserver2008迁移到oracle11gR2
来源:互联网 发布:淘宝一键复制怎么用 编辑:程序博客网 时间:2024/04/28 21:04
迁移思想:这里主要使用的是ORACLE SQL DEVELOPER工具建立连接MSSQL与oracle的连接,再导入到oracle数据库
详细步骤:
一、转换工具安装
(1)Oracle Sql Developer官方下载页面里面可以直接下载到。最新版本是SQL Developer 4.1.3 (December 22, 2015发布)。Oracle Sql Developer需要JDK的支持,所以请注意下载包含JDK的下载包,还有请注意对应的操作系统。提供一个下载地址:http://www.oracle.com/technetwor ... ownloads/index.html
(2)JDK下载,这里提供一个地址:http://www.oracle.com/technetwor ... nloads-2133151.html
(3)JTDS下载,这里提供一个地址:http://sourceforge.net/projects/jtds/
(4)加载JTDS: 打开Oracle Sql Developer,工具—>首选项—>数据库—>第三方JDBC驱动程序——添加条目把刚才解压的.jar添加进来
二、建立资料档案库(Migration Repository)
(1)、连接到Oracle
在程序左边的连接窗口中,点击加号按钮,添加一个到Oracle数据库的连接(RIS是要目标库的dba用户),如下图:
配置完成后,点击连接按钮,连接到数据库。
(2)连接到SQLSERVER用户
3、数据库移植向导
A、启动数据库移植向导
建立到SqlServer的连接后,开始对数据库进行移植。有两个地方可以启动数据库移植向导,一个是在新建的SqlServer连接上点击右键,选择移植到Oracle,另一个是在菜单工具-移植-移植,启动向导后,第一页当然是向导的简介,通过简介,我们可以知道整个移植过程有7步,并且有两个先决条件,如下图:
直接点击下一步。
B、选择资料档案库
这里截断的意思是将资料档案库清空,我们建立一个移植项目后,所有抓取的数据库结构信息、统计信息还有转换记录等都保存在这个资料档案库中,只要项目名称不同,即使不清空资料档案库也不会影响到移植工作,建立资料档案库有一个很重要的原因就是:资料档案库中会存储SQLSERVER数据库中的所有数据库对象,例如,视图,索引,约束,过程,函数,触发器等都会在资料档案库中存放信息,也就相当于oracle中的数据字典信息。
C、为转换项目命名
选择好资料档案库后,点击下一步,为我们的转换项目输入名称和备注,以便识别。另外,还需要指定脚本生成目录,用于存放向导执行过程中生成的脚本。
D、选择源数据库连接
然后继续下一步,选择源数据库,在这里有联机和离线两种模式,联机即是直接连接到源数据进行抓取,而离线则是在SqlDeveloper不直接连接到源数据库的情况下,通过SqlDeveloper提供的脚本预先捕获数据库,得到数据库结构文件后,通过向导导入,我们一般选择联机模式。
这里是选择我们刚才建立的SqlServer连接。
E、选择捕获源数据库
在这一步中,显示为两个多选框,左边列出Sql Server中所有可选的数据库,通过中间的按钮将数据库移动到右边的已选数据库中。如下图:
F、数据类型转换选项
在这一页中,列出了所有系统内置的数据类型转换对应关系。可以其进行修改,一般不作修改直接下一步。如下图:
G、选择目标数据库
与源数据库的选择一样,目标数据库的选择同样也有联机和离线两种方式。仍旧选择联机。选择orcl(ris)连接。
H、移动数据选项
这个页面中,也提供了联机或离线两种方式进行数据移动。所谓联机虽然“据说”可以直接以联机的方式从源数据库中移动数据到Oracle中,可我试过几次没有成功,查了好多官方资料都说原因不明,无解了我就随便选了一个,后面再通过手工导入表结构和数据。
I、选项完毕,开始执行
在向导的最后,是一个用于确认的“概要”页面。确认无误后,点击完成。移植将会开始执行。
三、复制表结构和数据
在sqlserver的数据库下选中所有需要复制的表点击右键复制到oracle,接着选择目标连接名称为:RIS,点击应用,将所有表结构和数据复制到oracle数据库。
四、约束、索引的创建
(1)、不知道什么原因sqlserver的主键键复制到oracle后全部变成了check约束且名字也错误(为sys_),所以这里就我就自己写了一个脚本,在资料库中查询,然后再手工创建约束和索引。
select 'ALTER TABLE '||a.table_name||' ADD CONSTRAINT '||c.name||' PRIMARY KEY('||b.column_name||');'
from md_tables a,md_columns b,MD_CONSTRAINTS c,MD_CONSTRAINT_DETAILS d
where a.id=b.table_id_fk
and b.table_id_fk=c.table_id_fk
and d.column_id_fk=b.id
and a.schema_id_fk=1128051
order by b.id
(2)创建unique和非unique约束
select to_char('CREATE UNIQUE INDEX '||a.index_name||' on '||b.table_name ||'('|| wm_concat(d.column_name)||');')
from md_indexes a,md_tables b,md_index_details c,md_columns d
where a.table_id_fk=b.id
and schema_id_fk=1128051
and c.index_id_fk=a.id
and c.column_id_fk=d.id
and a.index_type='UNIQUE'
group by a.index_name,b.table_name
select to_char('CREATE INDEX '||a.index_name||' on '||b.table_name ||'('|| wm_concat(d.column_name)||');')
from md_indexes a,md_tables b,md_index_details c,md_columns d
where a.table_id_fk=b.id
and schema_id_fk=1128051
and c.index_id_fk=a.id
and c.column_id_fk=d.id
and a.index_type!='UNIQUE'
group by a.index_name,b.table_name
五、视图与过程的创建
视图和过程的创建在移植项目下的-》转换后的对象中点开直接执行创建,里面有很多关于utils 的错误,原因是utils是oracle development转oracle自动创建的一个包,里面定了自己的一些过程名字。但是里面没有写内容,所以这里的这些函数都要替换成oracle系统自带的才行。
注意下面三个例子举例:
1、 UTILS.CONVERT_TO_VARCHAR2转换成to_char
2、WHILE utils.fetch_status(PLACE_LIST%FOUND) <> -1
转换成 WHILE PLACE_LIST%FOUND
3、EXCEPTION WHEN OTHERS THEN utils.handleerror(SQLCODE,SQLERRM);
转换成EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20101,'Error in P_SER_STUNO' || SQLCODE );
- sqlserver2008迁移到oracle11gR2
- SqlServer2008数据库迁移到SqlServer2005
- mysql数据库迁移到SQLServer2008(hibernate 配置)
- oracle 的一个大数据表 快速迁移到 Sqlserver2008数据库
- SQLServer2008数据迁移
- Oracle7 升级到 Oracle11gr2
- sqlserver2008之用户名和密码迁移
- SQLServer2008数据导入到Oracle11g
- sqlsever2012数据库转移到sqlserver2008
- SQLServer2008 无法连接到localhost
- sqlserver2008 无法连接到 (local)
- SSMA(Sql Server迁移助手)oracle to sqlserver2008 R2
- SQLServer2008
- SqlServer2008
- Sqlserver2008 保存文件对象到字段中
- sqlserver2008导出数据到2005的解决方法
- 将MySQL数据库转移到SqlServer2008数据库
- oracle11gr2在linux上,从安装到编程实战
- 以CSDN之父之名,欢迎自己
- php学习第二天:代码重构
- Linux命令下连接和搭建PPTPD-VPN
- Oracle数据库恢复案例
- 进程、作业和进程组
- sqlserver2008迁移到oracle11gR2
- 关于Spark 1.5 版本中Spark自己管理内存而不是由Java管理内存的解释
- bitDelete函数的编写
- XUtils===XUtils3框架的基本使用方法(二)
- 【oracle调优】表扫描还是索引扫描
- Mo's Algorithm
- Apache Spark Jobs 性能调优(二)
- PCIE 和SATA 接口
- ZTE中兴实习结束感想