oracle通过透明网关连接SqlServer问题

lonenan 2010-10-15 11:41:05
问题描述:
1、设置透明网关完成,测试没问题;
2、在plsql中查询SqlServer的table1数据时,只能查出前399条数据,第四百条报错如下:



经查与table1的content(类型nvarchar)字段有关,如果查询结果中不包含该字段则能查出全部数据;

3、在查询中以第四百条主键作为条件可以单独查出该条记录;

4、需要用到SqlServer的table1-10(表结构相同),其中,table1与table5有该问题,其他表无此问题;

求高人指点!
...全文
806 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonenan 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 inthirties 的回复:]
oracle是什么版本的?
[/Quote]

oracle为9i版本
inthirties 2010-10-21
  • 打赏
  • 举报
回复
信息过少,查看一下oracle的日志,里面有 没有什么错误信息的。
inthirties 2010-10-21
  • 打赏
  • 举报
回复
oracle是什么版本的?
lonenan 2010-10-21
  • 打赏
  • 举报
回复
询问产生楼上错误的原因分析及处理过程,谢谢大家
lonenan 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 gadflyyy 的回复:]
用odbc连吧,比hs简单些,也不用装透明网关,
我们公司现在oracle就是通过odbc每天从mssql取数据
[/Quote]
楼上朋友,试了用ODBC方式,报如下错误:
lonenan 2010-10-18
  • 打赏
  • 举报
回复
呼唤大牛!顶起!
gadflyyy 2010-10-18
  • 打赏
  • 举报
回复
用odbc连吧,比hs简单些,也不用装透明网关,
我们公司现在oracle就是通过odbc每天从mssql取数据
Diza1986 2010-10-15
  • 打赏
  • 举报
回复
不懂
帮顶。。。。。
gelyon 2010-10-15
  • 打赏
  • 举报
回复
难道是这样: HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
dawugui 2010-10-15
  • 打赏
  • 举报
回复
SQL和ORACLE之间的数据查询

配置透明网关的步骤


前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享

我的OS是WIN2000
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口


1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql

2: 配置 LISTENER.ORA
(SID_DESC =
(GLOBAL_DBNAME = tg4sql) # 可自己命名
(PROGRAM = tg4msql)
(SID_NAME = sql2000) # SID 自己命名
(ORACLE_HOME = D:\oracle\ora90)
)

3: 在 oracle_home\ora90\tg4msql\admin
建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
因此文件名为:initsql2000.ora
其中内容为:
HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

4: 重启 DATABASE AND LISTENER

5: 配置 tnsnames.ora
tg_sql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sql2000)
)
(HS=OK)
)

6: 建立 DATABASE LINK
CREATE PUBLIC DATABASE LINK DB_SQL
CONNECT TO SA IDENTIFIED BY PASSWORD
USING 'tg_sql'

7: 完成,测试
select * from t_test@db_sql

8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
如果为 FALSE, 不必使用全称,当出现
“ORA-02019:为找到远程数据库的连接说明”
时,请使用全称,如:
select * from t_test@db_sql.US.ORACLE.COM
lonenan 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gelyon 的回复:]
对的,我只是给你个地址,你要看你Oracle连接MSSQL地址,反正配置中,对MSSQL的路径要用“\\”,而不是“\”
[/Quote]

tg4sybs与tg4msql的配置是不同的,以下是我的配置

# This is a sample agent init file that contains the HS parameters that are
# needed for the Transparent Gateway for SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO="SERVER=122.168.*.*;DATABASE=*"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

gelyon 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 oagnuygnef 的回复:]
引用 11 楼 gelyon 的回复:
查看下你:$ORACLE_HOME\tg4sybs\admin\initSID.ora中

set MSSQL=C:\\MSSQL 注意用\\,而不是\


tg4sybs这是oracle连接sybase数据库吧??
[/Quote]

对的,我只是给你个地址,你要看你Oracle连接MSSQL地址,反正配置中,对MSSQL的路径要用“\\”,而不是“\”
lonenan 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gelyon 的回复:]
查看下你:$ORACLE_HOME\tg4sybs\admin\initSID.ora中

set MSSQL=C:\\MSSQL 注意用\\,而不是\
[/Quote]

tg4sybs这是oracle连接sybase数据库吧??
gelyon 2010-10-15
  • 打赏
  • 举报
回复
查看下你:$ORACLE_HOME\tg4sybs\admin\initSID.ora中

set MSSQL=C:\\MSSQL 注意用\\,而不是\

lonenan 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaobei0623 的回复:]
Incorrect parameter settings in the HS init.ora file.

Set HS_FDS_CONNECT_INFO in the HS init.ora file to the data source name located in the odbc.ini file.

Example:
HS_FDS_CONNECT_INFO = MS_SQL……
[/Quote]

查过了,透明网关设置确实没有问题,要不然其他的表也不会查询到数据,,,

呼唤高人指点!
lonenan 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hao1hao2hao3 的回复:]
原因是:
没有在sqlserver中创建recover用户和HS_TRANSACTION_LOG表

参考
[/Quote]

查看了参考,他遇到的情况是报错信息明确:
ORA-02054: 未决事务处理 2.12.1936
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息:
[Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效。 {42S02,NativeErr = 208}
ORA-02063: 紧接着 2 lines (起自 ERP)

在执行过程时直接就提示对象名无效,所以要通过创建那两个对象解决问题
而我遇到的问题是没有明确提示错误信息,而且只是一个简单的执行select操作,不涉及提交事务~~
lonenan 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wkc168 的回复:]
是不是那条content的长度超过了 varchar2的最长4000
[/Quote]

十分确定没有超出长度…才100多个汉字…
xiaobei0623 2010-10-15
  • 打赏
  • 举报
回复
Incorrect parameter settings in the HS init.ora file.

Set HS_FDS_CONNECT_INFO in the HS init.ora file to the data source name located in the odbc.ini file.

Example:
HS_FDS_CONNECT_INFO = MS_SQLServer Wire Protocol

Make sure the HS init.ora file exists in the $ORACLE_HOME/hs/admin directory and has the same name as the SID in the listener.ora.

Example:
If SID=hsodbc in the listener.ora file, then the HS init.ora file would be named $ORACLE_HOME/hs/admin/inithsodbc.ora
hao1hao2hao3 2010-10-15
  • 打赏
  • 举报
回复
原因是:
没有在sqlserver中创建recover用户和HS_TRANSACTION_LOG表

参考
Diza1986 2010-10-15
  • 打赏
  • 举报
回复
楼上这靠普。。
加载更多回复(3)
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL Server(SQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧