oracle与sql同步
Ⅰ 如何从oracle迁移数据到sql server
在近期的数据库迁移项目中,我从Sql Server 2005迁移到了Oracle 10g,这里分享一下迁移的方法和过程中需要注意的问题。
Sql Server和Oracle在很多方面都有很大的区别,包括语法、字段类型、数据库机制和配置管理方法等。因此,迁移时需要注意很多问题,迁移过程中也会遇到各种问题,需要仔细处理。
迁移的基本方法是从Sql Server已有数据库中生成出Oracle的建库脚本,然后在Oracle数据库上执行。生成工具是Power Designer。
首先,打开Power Designer,新建一个PDM,选择Microsoft SQL Server 2005作为DBMS,然后创建一个名为mssdb的模型。
接着,通过逆向工程将现有Sql Server数据库生成PDM。选择Database->Reverse Engineer Database,配置数据源,选择要迁移的数据库,输入用户名和密码。选择用户dbo下的所有表、视图、存储过程、方法、触发器、序列等,点击OK生成PDM。
然后生成Oracle物理数据模型,选择Tools->Generate Physical Data Model,选择Oracle 10g作为DBMS,输入名称oradb。在Configure Model Options配置中,勾选Ignore identifying owner。在Selection标签中选择需要生成的所有表、视图、外键、存储过程、方法、触发器、序列等,点击确定生成Oracle PDM。
生成Oracle脚本时需要注意,表名、字段名在Oracle中全部为大写,如果要单独处理为小写,需加上双引号。PD生成的脚本默认有双引号,这里需要修改默认配置,去掉双引号。然后选择oradb,选择Database->Generate Database,进入数据库生成界面,在Format标签下,去掉勾选Owner prefix,在Selection标签下选择要生成脚本的各对象,在Preview标签下可以预览预生成的脚本。
生成脚本后需要检查,注意以下几点:表名、字段名长度限制,主键、外键名称,字段名是否用到了Oracle的关键字,存储过程、方法是否符合Oracle语法,Sql Server的自增字段需要创建序列、触发器实现,在Oracle中字段类型为text的情况,如果是存二进制数据需要选用Blob字段类型,Sql Server中字段类型为text的情况需要调整,外键需要添加外键级联删除,生成的表、视图等个数是否正确等。
最后,在Oracle数据库服务下创建用户orauser,并将resource、connect角色赋给orauser,然后用刚创建的用户orauser登陆orcl数据库服务,执行前面已经生成的脚本。执行过程中如果有错误需要记录日志以便日后查看,检查表、视图等个数是否一致。
Ⅱ 如何把sql server数据库迁移到oracle
数据库迁移是一个复杂的过程,尤其是从SQL Server迁移到Oracle。这次我经历了一次这样的迁移,从SQL Server 2005迁移到Oracle 10g。这里我将分享迁移的方法和过程中需要注意的问题。
首先,迁移的方法是从SQL Server已有数据库中生成出Oracle的建库脚本,然后在Oracle数据库上执行。使用Power Designer作为生成工具。
1. 打开Power Designer,新建一个物理数据模型,选择Microsoft SQL Server 2005作为DBMS,起名为mssdb。
2. 通过逆向工程将现有SQL Server数据库生成PDM。选择Database->Reverse Engineer Database,配置数据源,选择要迁移的数据库,输入用户名、密码。选择数据库,选择用户dbo下的所有表、视图、存储过程、方法、触发器、序列等。点击OK,生成PDM。
3. 生成Oracle物理数据模型。选择Tools->Generate Physical Data Model,DBMS选择Oracle 10g,输入名称oradb。在Configure Model Options配置中,勾选Ignore identifying owner。在Selection标签中,选择需要生成的所有表、视图、外键、存储过程、方法、触发器、序列等。点击确定,生成Oracle的PDM。
在生成PDM的过程中可能会遇到一些问题,如对象长度超限,需要根据具体错误提示做相应修改。
4. 生成Oracle脚本。在Oracle里表名、字段名全部为大写,若要单独处理为小写,需加上双引号。PD生成的脚本默认是有双引号的,这里需要修改默认配置,去掉双引号。选择oradb,选择Database->Generate Database,进入数据库生成界面。在Format标签下,去掉勾选Owner prefix;在Selection标签下,选择要生成脚本的各对象;在Preview标签下,预览预生成的脚本。
5. 检查与调整。脚本是PD自动生成的,因为表比较多,在Oracle上直接去执行难免会有错误。这里提几点需要注意的地方。Oracle要求表名、字段名等长度最多是30位,检查主键、外键的名称,检查字段名是否用到了Oracle的关键字,检查存储过程、方法是否符合Oracle语法。Sql Server有自增字段,需要相应创建序列、触发器。Sql Server中字段类型为text的情况,如果是存二进制数据需要在Oracle中选用Blob字段类型。Sql Server有外键的情况,需要添加外键级联删除。生成的表、视图等个数是否正确,缺失的情况可单独生成脚本。
6. 建库。在Oracle数据库服务orcl实例下,使用用户sys登陆并创建用户orauser,并将resource、connect角色赋给orauser。用刚创建的用户orauser登陆orcl数据库服务,执行前面已经生成的脚本。若干分钟后脚本执行完毕,检查执行过程中有无错误产生,记录执行的日志以便日后查看;检查看表、视图等个数与SQL Server数据库中是否一致。
Ⅲ 如何同步ORACLE和sqlserver的数据
有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings
SELECT *
FROM msdb.dbo.sysdatatypemappings
来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
SQLServer和Oracle的对应
2.建立链接服务器。我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
具体做法参见我以前的文章http://www.cnblogs.com/studyzy/archive/2006/12/08/690307.html
3.使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。
比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:
DELETE FROM MIS..MIS.CONTRACT_PROJECT
--清空Oracle表中的数据
INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
SELECT contract_id,project_code,actual_money
FROM contract_project
如果报告成功,那么我们的数据就已经写入到Oracle中了。用
SELECT *
FROM MIS..MIS.CONTRACT_PROJECT
查看Oracle数据库中是否已经有数据了。
4.建立SQLAgent,将以上同步SQL语句作为执行语句,每天定时同步两次。
这样我们的同步就完成了。
这里需要注意的是MIS..MIS.CONTRACT_PROJECT 这里必须要大写,如果是小写的话会造成同步失败。
Ⅳ SQL怎么自动与ORACLE数据的更新数据同步
SQL怎么自动与ORACLE数据的更新数据同步
在源库创建到目标库的dblink
create database link branch --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password” --设置连接远程数据库的用户名和密码
using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称
在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。
Ⅳ 如何同步ORACLE和sqlserver的数据
有时候项目开发的需要,必须将sqlServer中的某县表同步到Oracle数据库汇总,有其他系统来读取这些数据,不同数据库类型之间的数据同步我们可以使用连接服务器和sqlAgent来实现。加入我们泽凯有一个和听合同管理系统,其中有表contract和contract_project是需要同步到一个MIS系统中的ORACLE,那么我们可以按照以下步骤实现数据的同步
1.在oracle数据库中建立对应的contract和contract_project表,需要同步那些数据字段我们就建立那些字段到oralce表中
需要注意哦的是oralce的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系,我们可以再sqlServer下运行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings
来查看sqlServcer和oralce数据库的的类型类型对应
2.建立连接服务器,我们将oralce系统作为SQLserver的链接服务器加入到SQLserver中
有时候我们需要在sqlsercer下访问另外一个sqlserver数据库上的数据或者访问其他oracel数据库就上的数据吗,想要完成这些操作,我首先要创建一个数据库链接。
数据库链接能够让本地的一个sqlservwer登录用户勇摄到远程的一个数据库服务器上,并且像操作本地数据库一样,那么怎样创建数据库链接?
创建一个sqlserver对应的oracle的数据库链接,
Ⅵ 如何定时同步oracle表到sql server
1、两台不同服务器;
2、从oracle10g定时同步(每天凌晨2:00)到sqlserver2005;
3、处于安全性考虑,客服方不提供sqlserver2005的账户密码,只需我们提供数据集;
4、双方程序语言都为java;
在这些前提下我提出了几套方案,仅供参考:
a:如果oracle能在客户服务器上访问,由oracle方提供接口给客户服务器实现,返回给客户服务器所需同步数据,并由客户服务器操作数据存储到sqlserver2005中,接口代码描述:远程建立jdbc连接oracle(临时帐户),查询oracle方提供的视图,并访问客户所需数据集,打成jar包,由客户方调用接口实现方法获得数据。
b:如果oracle方不能被客户服务器访问,则将需同步数据置入xml中,并由客服服务器方访问其xml(http or socket),并有oracle方提供解析机制,返回数据集。
c:通过开源数据库同步软件实现不同(google结果:symmetricds、opendbdiff(针对sqlserver))
前面三种方案均可实现从oracle同步到sqlserver2005,不过如果数据量较大时可能导致中途数据丢失或者同步速度较慢等情况,于是制定如下方案:
建立同步表,将客户方所需数据表中字段放入到同步表中,如:
用户表:wid,userid,password
用户同步表:wid,userid,password,no,operationtype,operationdate
可以看到同步表中多了三个字段:no,operationtype,operationdate
no为序号,由oracle序列生成,operationtype为操作类型,0为新增,1为修改,2为删除,operationdate为操作日期,取当前完整时间(年月日分秒)
建立用户表触发器,如果用户表有操作则将客户方所需用户表字段放入同步表中,如果新增将operationtype的值插入0,以此类推
在客服服务器方,oracle方提供接口查询同步表得到结果集,并和客服商议如何操作这些数据
这样就可以实现哪些数据修改过就同步哪些数据,减免了双方服务器的压力
Ⅶ 通过ETLCloud实现SQL Server数据同步至Oracle
全球两大主流的关系型数据库管理系统——SQL Server与Oracle,在企业级应用中扮演着关键角色。SQL Server由微软公司开发,以其出色的易用性和与Windows Server的紧密集成而受到青睐,具备强大的数据管理和报告生成能力。它支持多种编程语言,包括T-SQL和.NET,为开发者构建复杂数据库应用提供便利。SQL Server还提供安全性和高可用性特性,确保企业数据安全和可靠性。相比之下,Oracle作为一款高性能数据库管理系统,以其可扩展性和数据处理能力闻名,支持多种操作系统,包括Linux、Unix和Windows,提供先进的数据库技术,如实时应用集群和自动存储管理,以提高数据库可用性和性能。Oracle的安全特性,如数据泵和高级安全选项,为敏感数据提供额外保护。此外,Oracle对大数据和云服务的支持,使其能够满足现代企业对数据集成和分析的需求。
实现SQL Server数据同步至Oracle,主要涉及以下步骤:
首先,配置SQL Server数据源,根据数据库的实际情况进行相应的设置。
其次,配置Oracle数据源,确保与目标数据库的正确连接。
接着,进行库表输入、输出流程。库表输入相对简单,配置数据源后,基本无需进一步的配置。然而,SQL Server的SQL配置与其他SQL语句有所不同,需要特别注意。
库表输出时,如果没有选择批量输出,则需在字段配置中选择关键字段,关键字段用于更新或插入操作的条件。
在并发线程中配置并发数,以实现任务的高效执行。注意,随着并发数的增加,所需内存资源也会相应增加。
完成以上步骤后,SQL Server数据便成功同步至Oracle数据库。
综上所述,ETLCloud平台通过其精心设计的ETL流程,实现了SQL Server到Oracle的高效、安全同步。这一过程简化了数据迁移的复杂性,为构建跨数据库的信息集成桥梁提供了强大支持,从而为数据驱动的决策提供坚实的基础。