用Java实现SQL Server到Oracle数据迁移
sqlserver到oracle数据无损迁移

sqlserver到oracle数据无损迁移编者:liuli10@版本:V1.7最后修订日期:2015-11-21第一章简介1.1数据迁移随着时代发展数据越来越被重视,而很多时候,当系统需要更新换代的时候,升级后系统所是有的数据库与当前系统的数据库并不一致,此时不仅需要数据割接,最重要的是:如何能将老系统中的数据无损的割接到新系统、新数据库中。
因此,结合项目实战经验,针对从windows平台下数据库sqlserver到linux平台下oracle数据库的数据无损迁移进行总结。
1.2数据库简介一般此处会有很多数据库以及出品公司的历史以及发展历程,在编者看来然而并没有什么大用途,百度百科都可以搜索的到,因此本章结束,直接进入实战总结环节。
第二章sqlserver数据导出2.1sqlserver数据导出命令当然不可否认windows为sqlserver提供了强大的图形化平台,导出数据变得只需要点一点就能完成,然而这样的数据导出对于大批量有要求的操作,是极其劳神伤财的,因此,必须要通过命令行进行格式化导出,因此,这里介绍sqlserver 本机数据库导出命令。
2.1.1bcp命令以及参数介绍/liyanmingkong/article/details/6087674/uid-25472509-id-4304562.html/link?url=WV2JJM4JHxR7Qct8rr_-499zPc3aP_7E5rOt5l yEnG_Mj_tE9_-ZN1JPE2Vc2wRpkO8QkNGNLVznDfMgniCOnxXhK5jQppNpZk8 Jo1x8o23为了将文档尽可能精简,bcp命令的参数以及介绍请自行去以上任意网址查询。
或者自行baidu或者google搜索。
2.2实战语句解析实战语句为:bcp"select*from gwbnboss.dbo.ACCOUNT_BUSINESS"queryout "C:\Users\liuli9\Desktop\sqlserverdata_mov\textfile\ACCOUNT_BUSINESS.txt"-c -r"{#$&}"-t"{@#$}"-S"127.0.0.1"-U"数据库用户名"-P"密码"最终导出的结果存在于C:\Users\liuli9\Desktop\sqlserverdata_mov\textfile\ACCOUNT_BUSINESS.txt 文件中,当出现“{#$&}”时表示接下来是下一行数据,出现“{@#$}”时表示接下来是下一列数据。
将SQLSERVER中的数据同步到ORACLE中

如何将SQLServer2005中的数据同步到Oracle中有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和contract_project表,需要同步哪些字段我们就建那些字段到O racle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:SELECT*FROM msdb.dbo.MSdatatype_mappingsSELECT*FROM msdb.dbo.sysdatatypemappings来查看SQLServer和其他数据库系统的数据类型对应关系。
第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。
根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar CHAR-141ORACLE nchar CLOB NULL01ORACLE ntext CLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar CLOB NULL01ORACLE nvarchar VARCHAR2-141ORACLE nvarchar(max) CLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname VARCHAR212841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml CLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL012.建立链接服务器。
利用SQLServer2005复制功能实现与Oracle数据库同步方法

利用SQLServer2005复制功能实现与Oracle数据库同步在项目中经常会遇到一个项目操作几个数据库的情况,若是同种类型的数据库也还好说,可以直接链接两个数据库,也可以用数据库的同步功能。
若我们的项目使用SQLServer2005进行开发,而且项目中要用到Oracle数据库中的数据,那么又该怎么实现拉?一般来说方案有以下几种。
1.分别建立链接对数据库进行操作,SQLServer可以用,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用)这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient 才可以使用。
2.使用同义词操作Oracle数据库。
这种方法的具体操作我在以前的文章中已经写清楚了,这样做一来可以进行表的联合查询,二来不需要每台机器都安装OracleClient,但是还是有一个缺点:效率低,比如对同义词使用like去查找需要的数据,如果是直接连Oracle数据库也许只要0.1秒就可以找到答案,但是用同义词可能就要等10秒20秒或更久。
原来SQLServer并不是直接把查询语句传递给Oracle,让Oracle执行操作,而是将所有数据都取到SQLServer服务器上,边取数据边分析,直到满足查询条件为止。
其实这种数据放在两个服务器上还有一个缺点就是一旦Oracle服务器宕机,即使我们这边的所有服务器都是好的,那么我们的程序中用到Oracle数据的地方就无法使用。
3.直接链接Oracle数据库+同义词+作业+异常跳转方式。
这种方法具体讲就是我们的程序直接用OLEDB(OracleClient)链接Oracle数据库,同时SQLServer服务器也建立了同义词指向Oracle,在SQLServer上建立作业,将同义词中的数据拷贝到SQLServer服务器的表中。
Sql server 导入至 Oracle 具体操作经验

Sql Server 支持向Oracle中导入数据,以下以身份证号导入到数据库为例1、先在oracle数据库中建立一个临时表包含2列,1列学工号、1列身份证号。
create table cc as select outid as bh,idcardno as sfz from base_customers/delete from cc/执行完毕后,记得要提交!2、新建EXCEL 表格,表格中有2列,如下:在该表格中,将人员信息导入至EXCEL表格中。
因为SQL2000 EXCEL导入只支持EXCEL97-2003,因此新建EXCEL表格必须是2003格式的(扩展名为xls)3、通过Sqlserver导入导出工具将EXCEL数据导入至Sqlserver中,并将导入完成的表格名称修改成与Oracle库中一样的表名称CC选择导入数据选择数据源选择导入目标一直点击下一步,直至完成后,将数据库中新导入的表格重新命名成CC4、本机必须要安装Oracle客户端,在控制面板—管理工具—数据源建立一个ODBC数据源。
打开数据源,点击添加按照下面的选项选择,点击完成按照下面的选项选择,出现下面的界面:5、将Sql server 数据导入到 Oracle 中导出数据导出数据点击下一步完成后,出现如下界面点击下一步,一直到出现以下界面:sql server 向Oracle导出时一定要下拉选择表一直点击下一步,直至完成后,完成数据导入!6、最后一步执行身份证修改语句。
执行完成记得提交!update base_customers set (idcardno)=(SELECT bh FROM cc WHERE base_customers.outid = cc.bh)。
基于NetBeans的SQL Server到Oracle的通用数据迁移JAVA程序

在这里:
editorfold
是编辑器折叠
defaultstate="collapsed" 是默认状态,collapsed 是折叠的
desc=" 构造函数 "
是说明 (describe)
点击行号 15 后面小方框中的减号可以折叠代码如下:
当光标悬停在折叠得代码上时可以不展开折叠直接查看自动显示的代码。 也可以点击行号 15 后面小方框中的加号展开折叠的代码。 ¨ 重新排列代码 代码经过添加修改会变得不整齐或不符合缩进规定,这时我们可以整理代码: 在编辑器中的任意位置 > 右击 > 重新设置代码格式。 ¨ 导入必须的包 添加了代码后可能会有一些类的包需要引入: 在编辑器中的任意位置 > 右击 > 修复导入。 ¨ 添加主类 为了程序能够独立运行,用代码为该 JPanel 添加一个主类和顶层窗体 JFrame。
· 查看和修改生成的 DataMigrating.java 代码 ¨ 类 class DataMigrating 扩展 javax.swing.JPanel
¨ 构造函数
¨ 显示编辑器中代码的行号(注意:随着开发的进行行号会不断地变化。) 视图 > 显示行号。或在行号显示区域右击 >显示行号。
¨ 代码折叠 随着开发得进行代码会越来越长,查找、浏览代码会变得越来越困难,采用代码折叠是个 好办法。下面是将构造函数折叠的例子。
触发器。 5. 操作结果显示区。显示 SQL Server 和 Oracle 表的定义信息,数据和迁移信息。 下面我们分别介绍应用程序主窗体各部分的设计。 · 创建 Java 应用程序 1. 打开 NetBeans IDE 5.0 2. 文件 > 新建项目 3. 新建项目窗口:
SqlServer2005移植到Oracle

从SQL server 2005中移植数据到Oracle 10g1.移植前准备在移植前,需要安装必需的各种软件,如下:(1).安装好SQL server 2005的补丁包和SP2。
(2).安装Oracle安装包里的oracle客户端浏览器(PL/SQL Developer)。
(可以根据需要按照汉化补丁,汉化包不安装也可)(3).硬件要求:在Oracle数据库所在的硬盘保持足够剩余空间(至少有2GB的空间剩余);建议在启用Oracle服务时机器的内存不少于2GB。
没有特别说明的情况下,本文的数据移植是针对普通的属性数据。
2.移植2.1.创建数据库打开Oracle中的Database Configuration Assistant进行数据库的创建,如图所示:图表1 打开Database Configuration Assistant进入Database Configuration Assistant后点击“下一步”,然后出现如图表2所示的界面,选择“创建数据库”后点击“下一步”:如图表3所示选择第一个“一般用途”然后点击下一步:图表3 选择模板如图标2所示在创建数据库过程中的第3步,在“全局数据库名”中输入数据库名称,SID则会自动默认为全局数据库名,然后点击“下一步”;点击如图表5所示界面中的“确定”按钮系统就开始创建数据库了。
图表5图表6 正在传教数据库最后点击如图表4所示中的“退出”按钮就创建数据库完成了。
图表7 创建数据库完成2.2.登录Oracle打开PL/SQL Developer并用system(数据库默认的用户名)用户身份登录到XQ2DSGN并选择连接为SYSDBA,如图所示:图表8 登录到PLSQL2.2.1.创建表空间创建表空间的sql语句:SQL>create tablespace xq2dsgn datafile 'G:\oracle\product\10.2.0\ oradata\xq2dsgn\xq2dsgn.dbf' size 2048m autoextend on next 10m maxsize unlimited ;(参考:通过PL/SQL Developer登录到Oracle数据库上后,打开菜单:文件/新建/命令窗口,打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间,新建用户和授权的操作,如图所示:图表9 打开命令窗口创建表空间Sql>create tablespace xqds2gn datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' size 200m autoextend on next 10m maxsize unlimited;Sql>alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' autoexte nd on;1 DATAFILE: 表空间数据文件存放路径2 SIZE: 起初设置为200M3 UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k4 空间名称xq2dsgn 与数据文件名称xq2dsgn.dbf 不要求相同,可随意命名.5 AUTOEXTEND ON/OFF表示启动/停止自动扩展表空间6alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' resize 500 m;//手动修改数据文件大小为500M图表10 表空间创建完成删除表空间语句如下:DROP TABLESPACE xq2dsgn INCLUDING CONTENTS AND DATAFILES;2.2.2.创建用户1.建立用户并为用户指定缺省的永久表空间和临时表空间SQL> create user xq2dsgn identified by xq2dsgndefault tablespace xq2dsgntemporary tablespace temp;用户已创建。
SQLServer往Oracle导入数据

SQLServer往Oracle导入数据由于做的软件要求跨平台,要不数据库变成Oracle的,因此需要把SQL Server 2000的数据导入到Oracle 10g中去。
发现SQL Server自带的导入导出比较好用!恩恩,现在开始讲一讲怎么吧SQL Server的数据导入到Oracle中。
先说说目的:在PC机A中安装的Windows系统下SQL Server中有源数据库DBServer。
PC机ip地址:192.168.1.103。
主机名:LENOVO-78EB319A数据库中使用管理员sa,密码lenovo。
貌似用不上……在PC机B中安装的Solaris系统下Oracle中有目标数据库DBServer。
PC机ip地址:192.168.1.105。
主机名:vic.MINg其中DBServer是空数据库,刚刚创建的。
讲A机Windows XP系统SQL Server 2000中数据库DBServer中的表和视图导入到B机Solaris 10系统Oracle 10g中去。
在Solaris下的Oracle中创建用户Oracle下创建用户赋予权限,在终端中启动 SQL Plus。
创建用户+密码(用户:sa 密码:lenovo)SQL> create user sa identified by lenovo;单独赋予用户权限SQL> grant create session to sa;SQL> grant create table to sa;SQL> grant create sequence to sa;SQL> grant create view to sa;当然也可以给用户赋予DBA权限SQL> grant sysdba to sa;在Windows下创建一个ODBC数据源控制面板——管理工具——数据源(ODBC),"系统 DSN” 项卡中点击添加按钮,选择相关Oracle驱动配置数据源信息,如下点击"Test Connection",进行测试看看是否和Solaris联通SQL Server往Oracle导入数据启动"SQL Server 企业管理器" ,在数据库——DBServer 中 "所有任务",导出数据。
sqlserver迁移到oracle具体实现

sqlserver迁移到oracle具体实现一、需求背景因系统业务发展需要,需要对各地数据进行集中管理,其中各地系统都是sqlserver2000数据库,数据大量集中,需要使用oracle数据库,因此涉及sqlserver数据迁移至oracle数据库的问题。
二、处理步骤处理步骤分为初始导出和增量交换两个操作步骤进行。
1 、其中初始导出设定一个时间截止时间将之前的业务数据利用数据库导出功能将数据导出,数据导出后由文件交换服务器传送的方式将初始导出数据导入到oracle数据库服务器中,然后通过SQLLOAD工具将数据导入。
2、增量交换在初始导出设定一个时间截止后开始启用,增量交换就是在初始导出完成后,将有变更的数据形成文件,由文件交换服务器传送,最终同步到oracle数据库服务器中,然后通过SQLLOAD工具将数据导入,与初始导出不同的是,这里要通过程序控制导出的增量数据和导出文件名。
三、初始导出1.业务数据业务数据初始导出将利用数据库导出功能将数据以文件的方式拷贝到oracle数据库服务器进行导入。
步骤:1)业务数据导成文件2)业务数据文件拷贝到oracle数据库服务器进行导入2.实现2.1.利用导出导入工具实现异构数据迁移1)sqlserver初始数据利用bcp工具导成csv格式文件--sqlserver数据导成文件--预先创建导出表格式文件:exec master..xp_cmdshell 'bcp master.dbo.sysusers format nul -T -c -f "c:\students.fmt"'--根据格式文件导出表数据(可以导成txt或csv文件格式)修改格式文件,用逗号分隔符declare @sql varchar(8000)set @sql='bcp "SELECT * FROM master..sysusers" queryout "c:\aa.csv" /f "c:\students.fmt"' exec master..xp_cmdshell @sql2)通过sqlload工具将初始数据导入oracle数据库服务器--sqlload直接导入命令示例result.csv文件内容1,默认 Web 站点,192.168.2.254:80:,RUNNING2,other,192.168.2.254:80:,STOPPED3,third,192.168.2.254:81:,RUNNINGresult.ctl文件内容:load datainfile 'c:\result.csv'into table resultxt(resultid char terminated by ',',website char terminated by ',',ipport char terminated by ',',status char terminated by whitespace)创建表:create table resultxt(resultid varchar2(500),website varchar2(500),ipport varchar2(500),status varchar2(500))/执行文件导入命令sqlldr hr/hr@orcl c:\result.ctl log=c:\resulthis.out四、增量交换1.业务数据业务数据增量交换将利用数据库导出功能将数据以文件的方式拷贝到oracle 数据库服务器进行导入。
SQLServer到Oracle的数据迁移

《高级数据库应用》课程项目报告《数据库迁移》姓名:组员:班级学号:指导教师:完成报告时间:数据库迁移1.实验环境:硬件环境:⏹Intel(R) Core(TM)2 Duo CPU P4200 2.13GHz⏹ 2.00GHz 2.00GB 内存软件环境:⏹windowsXP Professional sp3⏹oracle 9i⏹SQL server 2005⏹Oracle SQL Developer2.前提:是要在oracle中建立一个和SQL Server中名字一样的数据库,并创建新的用户名和密码3迁移过程:(1)一般情况:只迁移表,而不是存储过程、函数等,可以使用SQL Server 2005自带的导入导出工具。
1)迁移方法:右键单击SQL Server中你要导出的数据库--》任务--》导出数据--》下一步--》添好各选项(SQL Server数据源的)下一步--》数据源等默认——》下一步,目标选择Microsoft OLE DB Provider for Oracle,属性中填入你要导入的oracle数据库的名字,用户名,密码------>下一步------>选中全部表,下一步------>下一步------>下一步. 将会将表结构和表中的数据一同导入到oracle中去。
2)实例:将SQL Server数据库aaa导出到Oracle中<1>首先在Oracle中创建数据库aaa.:图(1):在Oracle中创建数据库aaa.<2>下一步:选择创建数据库:图(2):选择创建数据库<3>创建数据库名称aaa:图(3)创建数据库名称aaa<4>右键单击SQL Server中的aaa数据库,选择任务,导出数据:图(4)从SQL的aaa数据库中导出数据<5>运行数据库导出向导:<6>选择目标Microsoft OLE DB Provider for Oracle:<7>数据库连接属性:图(7)输入连接属性图(8)选择要迁移的内容<8>选择要复制的表或者视图:<9>是否保存SSIS包:<10>完成该向导:<11>执行成功:<12>具体表的迁移:图(14)具体表的迁移,已经完成奖惩信息表的迁移。
SQLServer与Oracle数据迁移报告

SQL Server 与 Oracle数据交换组长:组员:学院:专业:教师:一、设计目的综合运用所学Web数据库以及c#编程相关知识,查询SQL Server、Oracle 数据库的相关信息,完成数据从SQL Server到Oracle的迁移二、设计要求显示SQL Server 2000数据库中的对象显示所有视图允许通过选择某一个或几个字段,将数据读出并且保存在某个XML文件中完成数据从SQL Server到Oracle的迁移三、程序环境数据库: SQL Server 2000, Oracle10g开发工具:Microsoft Visual Studio 2008开发技术: 四、系统详细设计1.显示SQL Server 2000数据库中的对象在第一个DropDownList控件利用自动绑定的功能,新建与SQLServer2000的master库的连接,运用SQL查询语句在表SYSOBJECTS 中查出所有数据库名,并绑定到控件中。
设置另一个DropDownList控件用来让用户选择想要查询的数据库对象。
数据库对象有视图、索引、表结构、存储过程、用户、触发器和函数这几项。
再设置另外一个DropdownList控件,用手动绑定数据的方法,利用控件的SelectView的方法将数据名保存在变量dataBaseName中,然后通过SQL语句查询出这个库的所有表名,包括系统表和用户表。
设置Datagridview控件,用来接收查询结果。
在查询按钮控件中设置事件,当按下按钮根据所想查询的数据库名,表名和对象名使用sqlDataAdapter执行sql语句,并用Dataset中的FILL方法将查询结果存储在Gridview的Datasource并绑定,这样就能显示出所查询的数据库对象的结果。
2.显示所有视图在第一个功能中只是把某个库中所有的视图名和相关的字段显示出来,并没有显示出某个视图的详细信息。
增加一个输入框,用来输入想要查询的特点的视图名,利用存储过程查询出建立视图的语句并显示在Gridview2控件中,利用查询语句查询出所选视图的详细信息并显示在Gridview3中。
Sql server 迁移到oracle 方案

Sql server 迁移到oracle 方案1.系统目前运行情况系统目前采用的数据库是sql server 2005操作系统平台是windows server 2003操作系统的配置:16cpu,32g内存诊断:目前系统运行较慢,windows server 2003和sql server 2005不能充分利用现有的硬件配置,已经形成瓶颈,导致资源浪费。
2.sql server和oracle的产品比较1).Oracle为客户端开启会话有两种方式:共享服务和专用服务。
在专用服务情况下,监听器为连接请求创建新进程(Unix环境下是Process,Windows下我想应该是Thread吧);共享服务情况下,监听器将客户请求交给Dispatcher,由Dispatcher安排多客户的作业。
SQL Server在默认情况下自动为客户端连接创建线程,当有非常多的客户连接时,SQL Server可以使用线程池管理多会话,这类似于Oracle的共享服务。
2).Oracle的内存管理分三块:SGA、PGA、UGA;在MSDN中并没有提及怎样控制SQL Server的内存分配,只是提到SQL Server的虚拟地址空间分成缓冲池占用空间和其余空间,且SQL Server有动态内存管理机制。
3). Oracle的实例一次只能管理一个数据库,数据库在集群环境下可由多个实例管理。
而SQL Server单个实例一次能管理多个数据库。
Oracle数据库存储方式有OS文件、裸分区、ASM等,SQL Server的数据库存储只能是系统文件。
4). Oracle数据库包含表空间,表空间可以使用多个文件存储数据,表空间就类似于SQL Server中的文件组。
区是物理连续上连接的存储空间,区中包括最小I/O单位——块(Oracle)或页(SQL Server)。
但SQL Server页大小是8KB,区包含8个页;Oracle不同表空间可以有不同的块大小,区的大小和保护块的数量也不固定。
如何从SQLSERVER迁移大批量数据到ORACLE

分析:
微软DTS在异种数据库之间传送数据时,采用ODBC开放数据连接方式,而ODBC的速度慢是众所周知的缺点,导致异种数据库间传送数据慢。而SQLSERVER是微软自己的数据库系统,采用DTS导SQLSERVER的时候能很快,这是一个优点;oracle使用工具sqlldr能够很快的将文本数据导入oracle自己的数据库也是一个优点。结合两个工具,可以提供快速的对大量数据进行迁移。
在例一中字符串由 "标志,所以需要加optionally enclosed by '"',在例二中不需
在例一中日期格式需要在域名后加 'date "yyyy-mm-dd hh24:mi:ss",
即
LOAD DATA
INITFILE 'tbilllog1.txt'
insert into table tbilllog1
insert into table tbilllog1
fields terminated by ',' optionally enclosed by '"'
(
callid,
callidnum,
callerno,
calleeno,
waitbegin date "yyyymmdd",
waitend date "yyyymmdd",
text= double quote{"} (缺省)
在comumn和text选项会影响到oracle的controlfile的设置
使用OracleSqlDeveloper将SQLSERVER2008数据库移植到Oracle11g

使用OracleSqlDeveloper将SQLSERVER2008数据库移植到Oracle11g上一次,我使用手工转换SQL脚本的方式进行数据库的迁移,其间过程相当繁琐,特别是标识符长度的限制让我焦头烂额,因为我们的系统中长标识符真是多如繁星,另外,表结构建好之后,数据的迁移又是一个相当复杂的过程,因为修改了不少的表名,需要把导出的数据和表一一对应上。
但是,除了手工的方式之外,其实我们还有更为简便和自动化的解决方案,那就是ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench。
下面就把我使用这个工具迁移Microsoft SQL Server 2008数据库到Oracle 11G的过程记录下来,为了积累也为分享。
第一部分:获取工具第二部分:建立资料档案库(Migration Repository)第三部分:数据库移植向导第四部分:SqlServer中的架构到Oracle中的模式,名称的处理第五部分:转移数据第六部分:存储过程和函数首先,当然是获得工具,该工具在Oracle Sql Developer官方下载页面里面可以直接下载到。
Windows 32位直连地址:Windows 32bit Sql Developer。
Oracle Sql Developer需要JDK的支持,在下载页面中提供了包含JDK的下载包,还有支持各种操作系统的下载选项。
下载后,解压到任意位置。
直接运行程序。
第一次运行,需要指定JDK的目录。
启动后,我们要做的第一件事,不干别的,先下载SQL SERVER 的驱动程序。
点击菜单帮助,选择检查更新,弹出检查更新向导窗口,第一页一般是废话,直接下一步,等更新中心列表加载完毕后,只选择“Third Party SQL Developer extensions”,点击下一步,等待更新搜索完毕后,中列表中找到并选中 JTDS JDBC Driver,如下图:下一步,在许可协议页面,点击“我同意”按钮后再点下一步,等下载完毕后关闭窗口,弹出提示需要重启程序才能完成更新,点击“是”。
从SQL Server向Oracle迁移的技术实现方案

CONSTRAINT PK_tbl_example PRIMARY KEY nonclustered (jlbh) /*主键约束*/
在这里,jlbh是一个ID列,在向具有该列的表插入记录时,系统将从1开始以1的步长自动对jlbh的值进行维护。
/* CHECK约束说明:Each employee ID consists of three characters that
represent the employee's initials, followed by a five
digit number ranging from 10000 to 99999 and then the
IF EXISTS (SELECT 1 FROM sysindexes
WHERE name = 'emp_pub_id_ind')
DROP INDEX employee. emp_pub_id_ind
GO
CREATE INDEX emp_pub_id_ind
CONSTRAINT FK_employee_job FOREIGN KEY (job_id)
REFERENCES jobs(job_id) /*创建自命名外键约束*/
)
GO
/* --------------------- 创建employee表上的index --------------------- */
insert into LT_AREA(area_id, area_name) values(SEQ_LT_AREA.NEXTVAL, '深圳');
从SQLSERVER迁移到ORACLE教程 图解

数据库迁移自述文件
使用sqldeveloper-3.2.20.09.87
首先创建2个连接、一个Sqlserver 和oracle 。
需要注意的是oracle连接用户必须具备高一点的权限。
这里可以对数据类型进行自定义改变。
需要改变对象命名为迁移用户的用户名。
当前的用户名为taoxs 然后提交
下面开始转换对象。
生成sql脚本。
注意:运行sql脚本需要用管理员的权限的用户。
Nbs_complainthandle 表在sqlserver中的默认值为”默认值”所以在这里需要将default “默认值去掉”。
还有一个视图v_getdate 转换有问题需要修改为
修改完成后,断开oracle的连接。
更换为管理员的用户登录,然后运行脚本
表结构生成完成。
切换为之前的oracle用户登录,然后移动数据
然后点击下一步
生成成功后。
删除移植资料库
完成!!!。
如何将SQLServer数据导出导入到Oracle数据库

1.打开工具:开始->程序->Microsoft SQLServer->导入和SQL Server数据导出数据2.下一步,选择数据源[数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。
[服务器]选择要导出数据的服务器,如果是本机,选择(local)[数据库]选择要导出的数据所在的库,这里选择Northwind3.下一步,选择目的[目的]选择Microsoft ODBC for Oracle[DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。
如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。
接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle下一步,完成,出现Microsoft ODBC for Oracle安装界面[数据源名称]随便输入,比如sss[说明]可以不填[用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott[服务器]填入要连接到Oracle服务器所使用的服务名,比方说使用sqlplus scott/tiger@server1可以连接到数据库,那么这里就填入server1。
如果本机就是服务器,使用sqlplus scott/tiger即可连接到数据库,这里空着不填即可。
这样就创建好了一个数据源sss,保证下拉列表框中选择了sss一项。
[用户名]填入SQL Server数据导出到的Oracle用户名称,这里是scott[密码]填入SQL Server数据导出到的Oracle用户使用的密码,这里是tiger4.下一步,指定表复制或查询如果要导出的内容是整个表,选择[从源数据库复制表和视图]如果要导出的内容是表的一部分列,行,可以选择[用一条查询指定要传输的数据],这时需要写出一个查询语句这里选择第一项[从源数据库复制表和视图]5.下一步,选择源表和视图点中要导出的表Products一行的复选框,目的、转换两栏就会出现内容。
从SQLSERVER迁移到ORACLE教程图解

从SQLSERVER迁移到ORACLE教程图解迁移数据库是一项常见的任务,尤其是在从SQL Server迁移到Oracle数据库时。
虽然SQL Server和Oracle都是关系型数据库管理系统,但是它们在语法、功能和架构方面存在一些差异。
因此,迁移数据库需要一定的准备和技巧。
下面是一个图解的教程,以帮助您从SQL Server成功迁移到Oracle数据库。
1.确定需求和目标:在开始迁移之前,确保您清楚地了解迁移的需求和目标。
确定迁移的原因、迁移的时间范围以及迁移后的期望结果。
2.准备数据库迁移工具:为了顺利进行数据库迁移,您需要选择和准备合适的数据库迁移工具。
有一些商业工具可供选择,也有一些免费的开源工具可用。
确保选择一个适合您的迁移需求的工具。
3. 导出SQL Server数据库:使用SQL Server提供的导出工具,将需要迁移的数据库导出为一个可移植的文件。
这个文件将包含数据库的结构和数据。
4. 创建Oracle数据库:在Oracle数据库服务器上创建一个新的数据库,可以使用Oracle提供的工具,如SQL Developer或者通过命令行。
5. 导入SQL Server数据库到Oracle:使用之前选择的数据库迁移工具,将导出的SQL Server数据库文件导入到Oracle数据库中。
这个过程会将SQL Server数据库的结构和数据转换为Oracle数据库可识别的格式。
6. 修改语法和函数:由于SQL Server和Oracle在语法和函数方面存在差异,所以在迁移后可能需要修改一些SQL语句和函数。
确保您了解这些差异,并相应地修改代码。
7. 测试和验证:迁移数据库后,进行一系列的测试和验证,以确保迁移成功。
测试数据库的结构和数据的完整性,以及应用程序在新的Oracle数据库上的正常运行。
8. 迁移应用程序:如果您的数据库迁移是为了支持一个应用程序,那么在迁移数据库后,您还需要相应地迁移和配置应用程序。
从sqlserver向oracle导数据

从SqlServer向Oracle导数据以下介绍,使用SqlServer企业管理器提供的“数据转换服务”,从SqlServer向Oracle 数据库导数据。
其他数据库类同。
1 打开dts导入/导出工具2 选择源数据库3 选择目标数据库选择驱动后,可以点击新建,添加一个数据源,也可以选择已有的或者其他用户共享的文件数据源。
3.1 添加数据源点击【新建】图3.1-1这里有三种选择:●文件数据源(注:这种数据源可以和其他机器共享。
但是这种数据源是基于“系统数据源”或“用户数据源”创建的,在创建之前,请先确保你已经创建了“系统数据源”或“用户数据源”)●用户数据源●系统数据源如果不需要共享给其他用户,可以直接新建“用户数据源”或“系统数据源”。
下面我们分别介绍:1)先说创建“系统数据源”在图图3.1-1中选择“系统数据源”,点击【下一步】选择链接你的目标库的驱动程序,点击【下一步】点击【完成】在上图中给你的数据源取一个名字(我这里为“testOracleDs”),选择你要连接的TNS Service Name(数据库sid),录入User ID(用户名)。
然后点击【Test Connection】测试一下点击【OK】如果上图所示,我们的连接测试成功。
如上图所示,就可以选择刚才创建的“系统数据源”了。
2)创建“用户数据源”的方式与“系统数据源”类似3)创建“文件数据源”如果想将数据源共享给其他机器的用户,可以基于已创建的“系统数据源”或“用户数据源”创建一个“文件数据源”。
在图3.1-1中选择“文件数据源”,点击【下一步】选择驱动程序后,点击【下一步】选择要将当前数据源存储的位置点击【下一步】注:Service Name是一个已创建好的“系统数据源”或“用户数据源”的名字,我们这里输入1)中创建的testOracleDs,User Name和Password分别为对应的数据库用户名和密码,点击【OK】这里会出现上边的提示,直接点【是】就可以了(这里应该是由于,我们创建的这个“文件数据源”不能在选择“用户/系统DSN”时使用的原因,下边我们会说到)。
两个不同编码的oralce之间的数据迁移

两个不同编码的oralce之间的数据迁移,代码是从网上找的,原来的代码是sql server迁移到oracle。
稍做修改,可以实现不同编码或者不同版本(高版本往低版本)oracle的数据迁移。
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;public class HandExpData{public static String table = "";// sqlserverpublic static String sqlserverDriver = "oracle.jdbc.driver.OracleDriver";public static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";public static String username = "trswcm65";public static String password = "trsadmin";// oraclepublic static String oracleDriver = "oracle.jdbc.driver.OracleDriver";public static String oracleurl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";public static String ousername = "system";public static String opassword = "trsadmin";public static Connection con = null;public static PreparedStatement sm = null;public static ResultSet rs = null;public static Connection oraclecon = null;public static PreparedStatement oraclesm = null;public void getConnection(){try{Class.forName(oracleDriver);oraclecon = DriverManager.getConnection(oracleurl, ousername,opassword);}catch (Exception e){}}public static void main(String[] args){String tableString = "wcmdocument,docid;";String[] tables = tableString.split(";");int nlength = tables.length;for(int i=0;i{String[] tabs = tables[i].split(",");table = tabs[0];String key = tabs[1];converttableDate(table, key);}}public static void converttableDate(String table, String key){long beginTime = System.currentTimeMillis();System.out.println(table + "。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图1 New Gallery窗口7)在“创建数据库用户”窗口中输入用户名和口令参数,并选择默认表空间和临时表图3Manage Libraries 窗口•在“管理库”窗口中选择Libraries 标签。
图11 项目属性窗口图12 项目属性窗口⏹在Add Libraries窗口中找到前面设置的SQLServer JSBC 驱动程序库,单击图13Add Libraries窗口图14 添加Oracle JDBC驱动程序●在JDeveloper 10.1.3中写连接SQL Server的JDBC JAVA测试程序:System.out.println("Error Trace in getConnection() : " + e.getMessage());}return con;}private String getConnectionUrl(){returnurl+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+ selectMethod+";";}private void closeConnection(){try{if(con!=null)con.close();con=null;}catch(Exception e){e.printStackTrace();}}public void displayDbProperties(){java.sql.DatabaseMetaData dm = null;java.sql.ResultSet rs = null;try{con= this.getConnection();if(con!=null){dm = con.getMetaData();System.out.println("驱动器信息:");System.out.println("\t驱动器名字: "+ dm.getDriverName());System.out.println("\t驱动器版本: "+ dm.getDriverVersion ());System.out.println("\n数据库信息:");System.out.println("\t数据库名字: "+ dm.getDatabaseProductName());System.out.println("\t数据库版本: "+ dm.getDatabaseProductVersion());System.out.println("显示可用的数据库目录:");rs = dm.getCatalogs();while(rs.next()){System.out.println("\tcatalog: "+ rs.getString(1));}rs.close();rs = null;closeConnection();}else System.out.println("Error: No active Connection");}catch(Exception e){e.printStackTrace();}dm=null;}public static void main(String[] args) {SQLServerT est sQLServerT est = new SQLServerT est();sQLServerT est.displayDbProperties();}}编译运行,结果如下图15SQL Server JDBC连接测试程序运行结果public SQLT oOracleIV() {}private String getConnectionUrl(){returnurl+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+ selectMethod+";";}private java.sql.Connection getConnection(){try{// A. 注册SQL Server JDBC 驱动程序Class.forNam e("com.microsoft.jdbc.sqlserver.SQLServerDriver");// B. 创建新数据库连接con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);if(con!=null) System.out.println("SQL Server Connection Successful!");}catch(Exception e){e.printStackTrace();System.out.println("Error SQL Server Trace in getConnection() : " + e.getMessage());}return con;}private java.sql.Connection getOracleConnection(){try{// A. 注册Oracle JDBC 驱动程序Class.forNam e("oracle.jdbc.driver.OracleDriver");// B. 创建新数据库连接conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oract", "ct" ,"ct");if(conn!=null) System.out.println("Oracle Connection Successful!");}catch(Exception e){e.printStackTrace();System.out.println("Error Oracle Trace in getConnection() : " + e.getMessage());}return conn;}private void closeSQLServerConnection(){try{if(con!=null)con.close();con=null;}catch(Exception e){e.printStackTrace();}}private void closeOracleConnection(){try{if(conn!=null)conn.close();conn=null;}catch(Exception e){e.printStackTrace();}}public void displayDbProperties(){java.sql.DatabaseMetaData dm = null;String InsertStatem ent ="";try{con = this.getConnection();conn = this.getOracleConnection();if(con!=null && conn!=null){// C. 创建Statement 对象Statement stmt = con.createStatement();Statement stmtOracle = conn.createStatement();// D. 执行SELECT 命令,查询结果存放在ResultSet 对象中ResultSet rset = stmt.executeQuery("SELECT * FROM 入库单");// E. 取得ResultSet 结果集相关的信息ResultSetMetaData md = rset.getMetaData();// F. 取得ResultSet 对象中的字段数量int no_cols = md.getColumnCount();String[] col_names = new String[no_cols];// G. 取得ResultSet 对象中各字段名称for (int i = 0; i < no_cols; i++)col_names[i] = md.getColumnLabel(i+1);// H. 先打印出各字段名称for (int i = 0; i < no_cols; i++)System.out.print(col_names[i]+"\t");System.out.println("\n---------------------------------------");// I. 打印每笔数据列中各字段数据while (rset.next()) {for (int i = 1; i <= no_cols; i++)System.out.print(rset.getString(i) + "\t");System.out.println("");// J. 数据插入Oracle 中InsertStatement="INSERT INTOINPUTVOUCHER(InputVoucher_id,AccountSetCode,VoucherNumber," +"InputDate,ProviderCode,Operator,Checker,CarryForwardSign)" +" VALUES (" + rset.getString(1) + ",'" + rset.getString(2) +"','" + rset.getString(3) + "'," +"TO_DATE(SUBSTR('" + rset.getString(4) +"',1,19),'yyyy-mm-dd hh24:mi:ss'),'" + rset.getString(5) +"','" +rset.getString(6) + "','" + rset.getString(7) + "'," + rset.getString(8) + ")";System.out.print(InsertStatement+"\n");stmtOracle.executeUpdate(InsertStatement);}rset.close();rset = null;stmt.close();closeSQLServerConnection();closeOracleConnection();}else System.out.println("Error: No active Connection");}catch(Exception e){e.printStackTrace();}dm=null;// B. 创建新数据库连接conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oract", "ct" ,"ct");if(conn!=null) System.out.println("Oracle Connection Successful!");}catch(Exception e){e.printStackTrace();System.out.println("Error Oracle Trace in getConnection() : " + e.getMessage());}return conn;}private void closeSQLServerConnection(){try{if(con!=null)con.close();con=null;}catch(Exception e){e.printStackTrace();}}private void closeOracleConnection(){try{if(conn!=null)conn.close();conn=null;}catch(Exception e){e.printStackTrace();}}public void displayDbProperties(){java.sql.DatabaseMetaData dm = null;String InsertStatem ent ="";try{con = this.getConnection();conn = this.getOracleConnection();if(con!=null && conn!=null){// C. 创建Statement 对象Statement stmt = con.createStatement();Statement stmtOracle = conn.createStatement();// D. 执行SELECT 命令,查询结果存放在ResultSet 对象中ResultSet rset = stmt.executeQuery("SELECT * FROM 入库单明细");// E. 取得ResultSet 结果集相关的信息ResultSetMetaData md = rset.getMetaData();// F. 取得ResultSet 对象中的字段数量int no_cols = md.getColumnCount();String[] col_names = new String[no_cols];// G. 取得ResultSet 对象中各字段名称for (int i = 0; i < no_cols; i++)col_names[i] = md.getColumnLabel(i+1);// H. 先打印出各字段名称for (int i = 0; i < no_cols; i++)System.out.print(col_names[i]+"\t");System.out.println("\n---------------------------------------");// I. 打印每笔数据列中各字段数据while (rset.next()) {for (int i = 1; i <= no_cols; i++)System.out.print(rset.getString(i) + "\t");System.out.println("");// J. 数据插入Oracle 中InsertStatement="INSERT INTOINPUTVOUCHERDETAIL(InputVoucherDetail_id,InputVoucher_id,AccountSetCode," +"VoucherNumber,MerchCode,MerchName,Unit,Quantity,Price,Note,KeepBoo kSign, ReturnSign,CarryFforwardSign,Storage_id)" +" VALUES (" + rset.getString(1) + "," + rset.getString(2) + ",'" + rset.getString(3) + "','" +rset.getString(4) + "','" + rset.getString(5) + "','" +rset.getString(6) + "','" + rset.getString(7) + "'," +rset.getString(8) + "," + rset.getString(9) + ",'" +rset.getString(10) + "'," + rset.getString(11) + "," +rset.getString(12) + "," + rset.getString(13) + "," +rset.getString(14) + ")";System.out.print(InsertStatement+"\n");stmtOracle.executeUpdate(InsertStatement);}rset.close();rset = null;stmt.close();closeSQLServerConnection();closeOracleConnection();}else System.out.println("Error: No active Connection");}catch(Exception e){e.printStackTrace();}dm=null;}public static void main(String[] args) {SQLToOracleIVDetail sQLT oOracleIVDetail = new SQLToOracleIVDetail();sQLToOracleIVDetail.displayDbProperties();}}编译、执行,完成SQL Server表“入库单明细”到Oracle表“INPUTVOUCHERDETAIL”的数据迁移。