Oracle 连接 SQL Server.docx

上传人:b****5 文档编号:8230533 上传时间:2023-01-30 格式:DOCX 页数:12 大小:25.55KB
下载 相关 举报
Oracle 连接 SQL Server.docx_第1页
第1页 / 共12页
Oracle 连接 SQL Server.docx_第2页
第2页 / 共12页
Oracle 连接 SQL Server.docx_第3页
第3页 / 共12页
Oracle 连接 SQL Server.docx_第4页
第4页 / 共12页
Oracle 连接 SQL Server.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Oracle 连接 SQL Server.docx

《Oracle 连接 SQL Server.docx》由会员分享,可在线阅读,更多相关《Oracle 连接 SQL Server.docx(12页珍藏版)》请在冰豆网上搜索。

Oracle 连接 SQL Server.docx

Oracle连接SQLServer

通过数据链接(DatabaseLink),从Oracle9i连接SQLServer2000(实例)

引自:

从Oracle9i连接SQLServer2000,需要用透明网关(TransparentGateway),通过它,我们可以sqlplus操纵其他数据库,如mssqlserver、sybase、infomix等,实现数据库的异构服务。

在Oracle8i中没有透明网关,9i自带,但是默认不安装。

(一)安装TransparentGatewayforWindowsSQLServer:

*如果在Oracle主目录下有tg4msql文件夹,那么不需要重新安装。

1.启动Oracle安装盘disk5里面的setup.exe。

2.按Next两次,选择Oracle9iDatabase9.2.0.1.0,按Next。

3.选择Custom,按Next。

4.按OracleTransparentGateway9.2.0.1.0旁边的"+",选择OracleTransparentGatewayforMicrosoftSQLServer9.2.0.1.0,按Next。

5.接着安装。

6.安装完毕之后,在Oracle主目录下,会有tg4msql文件夹。

(二)配置:

我的环境:

Oracle服务器:

OS:

WindowsXP(SP2)

IP:

192.168.1.180

PORT:

1521

SQL服务器:

OS:

Windows2000

IP:

192.168.1.213

DatabaseServerName:

BIO549

DatabaseName:

salesdata1

(a)通过tg4msql连接:

1.在Oracle主目录下tg4msql\admin目录下,拷贝inittg4msql.ora并改名为init.ora。

例如,我用的SID是MSSQL,那么我的文件名是initMSSQL.ora。

2.配置init.ora,以我的例子,如下:

******************************

#ThisisasampleagentinitfilethatcontainstheHSparametersthatare

#neededfortheTransparentGatewayforSQLServer

#

#HSinitparameters

#

HS_FDS_CONNECT_INFO="SERVER=BIO549;DATABASE=salesdata1"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

******************************

3.配置Oracle主目录下network\admin目录下的listener.ora。

以我的例子,如下:

*NEWLISTENER是我新建的LISTENER的名字,默认应该是LISTENER

******************************

#LISTENER.ORANetworkConfigurationFile:

C:

\oracle\ora92\network\admin\listener.ora

#GeneratedbyOracleconfigurationtools.

NEWLISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.180)(PORT=1521))

SID_LIST_NEWLISTENER=

(SID_LIST=

(SID_DESC=

(ORACLE_HOME=C:

\oracle\ora92)

(SID_NAME=MSSQL)

(PROGRAM=tg4msql)

******************************

4.配置Oracle主目录下network\admin目录下的tnsnames.ora,以我的例子,如下:

******************************

MSSQL=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.180)(PORT=1521))

(CONNECT_DATA=(SID=MSSQL))

(HS=MSSQL)

******************************

5.重起listener。

6.用sqlplus建立并测试DatabaseLink。

在命令行中,用以下命令:

sqlplus/nolog

connsys/webposassysdba---->用sysdba的身份登陆

altersystemsetglobal_names=true;---->设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致

createdatabaselinktest1connecttosaidentifiedbysausing'mssql';

select*fromsalesdata1@test1;

7.连接成功。

其中,connectto后面是用户名,identifiedby后面是密码,using后面是SID。

(b)通过hsodbc连接:

1.在ODBC中建立SQLServer连接的SystemDSN,我用名字BIO549。

(步骤不详述,请查MSDN)

2.在Oracle主目录下hs\admin的目录下,拷贝inithsodbc.ora并改名为init.ora。

这次,我用的SID是BIO549,所以文件名是BIO549。

以我的例子,如下:

*HS_FDS_CONNECT_INFO后面是数据源名称。

******************************

#ThisisasampleagentinitfilethatcontainstheHSparametersthatare

#neededforanODBCAgent.

#

#HSinitparameters

#

HS_FDS_CONNECT_INFO=BIO549

HS_FDS_TRACE_LEVEL=OFF

#

#Environmentvariablesrequiredforthenon-Oraclesystem

#

#set=

******************************

3.配置listener.ora,这次加入下面一段:

******************************

(SID_DESC=

(ORACLE_HOME=C:

\oracle\ora92)

(SID_NAME=BIO549)

(PROGRAM=hsodbc)

******************************

因此,我的listener.ora全部如下:

******************************

#LISTENER.ORANetworkConfigurationFile:

C:

\oracle\ora92\network\admin\listener.ora

#GeneratedbyOracleconfigurationtools.

NEWLISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.180)(PORT=1521))

SID_LIST_NEWLISTENER=

(SID_LIST=

(SID_DESC=

(ORACLE_HOME=C:

\oracle\ora92)

(SID_NAME=MSSQL)

(PROGRAM=tg4msql)

(SID_DESC=

(ORACLE_HOME=C:

\oracle\ora92)

(SID_NAME=BIO549)

(PROGRAM=hsodbc)

******************************

4.配置tnsnames.ora,如下:

******************************

BIO549=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521))

(CONNECT_DATA=(SID=BIO549))

(HS=OK)

******************************

5.重起listener并建立连接。

(三)注意:

我在测试的时候,起先总是有ORA-28545的错误,经调查含义如下:

ORA-28545errordiagnosedbyNet8whenconnectingtoanagent

Cause:

AnattempttocallanexternalprocedureortoissueSQLtoanon-OraclesystemonaHeterogeneousServicesdatabaselinkfailedatconnectioninitialization.TheerrordiagnosedbyNet8NCRsoftwareisreportedseparately.

Action:

RefertotheNet8NCROerrormessage.Ifthisisn'tclear,checkconnectionadministrativesetupintnsnames.oraandlistener.orafortheserviceassociatedwiththeHeterogeneousServicesdatabaselinkbeingused,orwith'extproc_connection_data'foranexternalprocedurecall.

我仔细的查看了所有文件的配置,发现是由于listener的名字导致的错误(SID_LIST_NEWLISTENER),因此我建议,如果出现这个错误,请仔细检查所有的配置文件。

(四)推荐阅读:

ManagingOracleHeterogeneousServicesUsingTransparentGateways:

http:

//download-

ORA-24289-ORA-29249:

http:

//www.stanford.edu/dept/itss/docs/oracle/9i/server.920/a96525/e24280.htm

MakingaConnectionfromOracletoSQLServer(inEnglish):

文章出处:

飞诺网():

如何从sqlserver到oracle实现服务器连接

文章来源网络 属于oracle分类 电脑编程网整理 20071014

简介:

这是如何从sqlserver到oracle实现服务器连接的详细页面,介绍了和oracle,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!

要查看更多有关信息,请点击此处

以sqlserver2000为例说明sqlserver到oracle连接服务器的具体实现过程。

1.要求pc机上安装oralce客户端软件和sqlserver2000软件。

2.客户端的配置tnsnames.ora文件,配置所要连接的数据库服务器(windows,unix等平台均可以)

eg:

tnsnames.ora

......

test=

(description=

(address_list=

(address=(protocol=tcp)(host=10.1.11.90)(port=1521))

(connect_data=

(sid=blue)

(server=dedicated)

......

3.配置windows的odbc数据源:

开始菜单—》设置—》管理工具—》数据源(odbc)—》进入配置用户dsn或者系统dsn均可以:

添加—》选择microsoftodbcfororacle—》自定义数据源名称(最好跟tns中连接串同名!

)—》服务器名称(必填!

填写tns文件中的连接串名称)—》完成。

和 "如何从sqlserver到oracle实现服务器连接" 有关的数据库编程小帖士:

strong>ATAN

       ATAN函数返回一数值的反正切值。

结果以弧度表示,且在-PI/2到PI/2之间。

4.配置sqlserver2000中的连接服务器:

企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称;选其他数据源;指定程序名称为:

microsoftoledbproviderfororacle;产品名称可不填;数据源指定刚才odbc中定义好的数据源名称;提供程序字符串按以下格式填写:

userid=username;password=userpasswd(或者按如下格式:

uid=username;pwd=userpasswd),这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码—》安全性标签页里:

设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确定。

5.准备工作全部完成啦!

在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该oracle数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!

访问表时,使用格式为:

[连接服务器名]..[oracle用户].[表名]。

更详细具体的使用这里不再赘述。

将公司系统从SqlServer2K移植到Oracle10g中的简要总结

时间:

2009-01-1508:

34来源:

博客园 阿修罗一平点击:

-

   公司有一个系统是基于SqlServer 2k,现在,应客户要求,移植到Oracle 10g数据库。

代码的扩展极其easy,三下五除二,搞定。

就是在将数据从SqlServer 2k导入到Oracle 10g数据库中时出现了一些问题。

刚开始采用的方案是把表结构和数据导入到Sql脚本中,然后在Oracle数据库中执行Sql脚本。

这个过程涉及到数据库字段类型的转换问题,容易出错。

后来采用使用SqlServer 2k的DTS 将数据从SqlServer中导入到Oracle 10g中。

工作就这么搞定了,为了方便以后数据类型的转换,方便以后做针对不同数据库的Sql脚本,我把SqlServer 2k和Oracle 10g大部分数据类型都做了一下测试,当然现在只有SqlServer 2k和Oracle 10g数据对应关系。

不对应关系如下:

SqlServer 2k转换为Oracle 10g

列名

SqlServer数据类型

SqlServer长度

Oracle数据类型

column1

bigint

8

NUMBER(19)

column2

binary

50

RAW(50)

column3

bit

1

NUMBER

(2)

column4

char

10

CHAR(10)

column5

datetime

8

DATE

column6

decimal

9

NUMBER(18)

column7

float

8

BINARY_DOUBLE

column8

image

16

BLOB

column9

int

4

NUMBER(10)

column10

money

8

NUMBER(19,4)

column11

nchar

10

NCHAR(10)

column12

ntext

16

NCLOB

column13

numeric

9

NUMBER(18)

column14

nvarchar

50

NVARCHAR2(50)

column15

real

4

BINARY_FLOAT

column16

smalldatetime

4

DATE

column17

smallint

2

NUMBER(5)

column18

smallmoney

4

NUMBER(10,4)

column19

sql_variant

 

BLOB

column20

text

16

CLOB

column21

timestamp

8

RAW(8)

column22

tinyint

1

NUMBER(3)

column23

uniqueidentifier

16

BLOB

column24

varbinary

50

RAW(50)

column25

varchar

50

VARCHAR2(50)

Oracle 10g 转换为SqlServer 2k

Oracle列名

Oracle数据类型

SqlServer列名

SqlServer数据类型

SqlServer数据长度

COLUMN1

BINARY_DOUBLE

COLUMN1

float

8

COLUMN2

BINARY_FLOAT

COLUMN2

real

4

COLUMN3

BLOB

COLUMN3

image

16

COLUMN4

CLOB

COLUMN4

ntext

16

COLUMN5

CHAR(10)

COLUMN5

nchar

10

COLUMN6

DATE

COLUMN6

datetime

8

COLUMN12

NUMBER

COLUMN12

numeric

13

COLUMN13

NVARCHAR2(10)

COLUMN13

nvarchar

10

COLUMN14

RAW(10)

COLUMN14

varbinary

10

COLUMN15

TIMESTAMP(6)

COLUMN15

datetime

8

COLUMN16

TIMESTAMP(6)WITHLOCALTIMEZONE

COLUMN16

datetime

8

COLUMN17

TIMESTAMP(6)WITHTIMEZONE

COLUMN17

datetime

8

COLUMN18

VARCHAR2(10)

COLUMN18

nvarchar

10

COLUMN7

INTERVALDAY

(2)TOSECOND(6)

COLUMN7

nvarchar

30

COLUMN8

INTERVALYEAR

(2)TOMONTH

COLUMN8

nvarchar

14

COLUMN9

LONG

COLUMN9

ntext

16

COLUMN10

LONGRAW

COLUMN10

image

16

COLUMN11

NCLOB

COLUMN11

ntext

我们在做数据库移植设计的时候,完全DIY,可以考虑设计可扩展组件完成这种数据库表、列等对应关系的转换工作,那么以后再做系统移植中数据导入时就一劳永逸了。

现在也没有时间做这种工作,不过感觉这还是挺有意义的一项工作。

在转换过程中,出现了另一个问题,就是如果SqlServer 2k 中的表名含有小写,那么在导入到Oracle 10g后,需要修改表名,否则Sql语句会执行失败。

(导入后表名多了引号) 比如SqlServer 2k有一个表test,导入到Oracle 10g后显示的表名仍然为test,但是如果你要查询test表中的数据时,按照正常情况下,你只用输入select * from test即可,可是现在却变成select * from "test"。

通过Oracle 10g的维护系统进入修改表名时,表名显示为带有引号的-"test"。

出现这个问题,因为表不是很多,所以我们将SqlServer 2k的表名都改为了大写,或者在Oracle中将表名改为大写,就ok了,需要注意这些细节。

Oracle 10g导入到SqlServer 2k中没有出现问题。

通过DTS从SQLSERVER向Oracle导数据

时间:

2010-05-27作者:

匿名编辑:

Mr.阿布点击:

29[评论]

-

-

综合资源电子书社区

1、打开SQLSERVER中的企业管理器,打开SQLServer组,右键点击所要导入到Oracle的数据库,点击所有任务中的导出数据,就进入了DTS的设置对话框,如下图所示:

2、点击Next后,选择导入的数据源,默认就可以了:

3、选择数据导入的目的地,在选择ODBC驱动下拉框中选择Oracle的ODBC驱动,一般的名称为OracleinOraDb10g_home1,如果以前使用Oracle的驱动创建过DSN,则选择用户/系统DSN的下拉框中的即可,如果没有则新建,新建过程和建DSN类似,这边就不再赘述

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1