sqlserver 通过链接服务器访问oracle的问题

tomtomclub 2008-02-29 11:46:13
通过sqlserver的链接服务器 建立到oralce10g的连接,用来读取数据和更新oracle表数据,更新几个表的操作放在了一个过程里面,昨天运行着还可以,今天就报错了,错误提示:
链接服务器"LINK_ORA"的 OLE DB 访问接口 "MSDAORA" 返回了消息 "ORA-01476: 除数为 0
"。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "LINK_ORA" 的 OLE DB 访问接口"MSDAORA"提取行。
即使我单独执行一条删除操作也会出同样的错误(语句为DELETE FROM LINK_ORA..OLAP.B_DIM_SUB_COMPANY)
奇怪的是 这样的操作有5张表,基本上是一样的,只有一张提示错误,其他表都可以执行成功,不知道是哪里的问题
网上搜了一下资料 说是10.1.0.2的bug,当前oracle版本为10.2.0.1.0.

高手请指点!
...全文
627 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chefuming_147 2012-07-04
  • 打赏
  • 举报
回复
我也遇到过这个问题。。sql2005访问oracle10.2.0.1,访问的是物化视图,重建下就好了,原因没找到,我关心的是这个问题会复发。。
tomtomclub 2008-02-29
  • 打赏
  • 举报
回复
多谢楼上的回复,这是在oracle中建立访问SQLServer吧,我以前也做过,不是用的透明网关,基本上只能对表和视图操作。
现在的问题是 是要建立MSSQL到Oracle的连接,因为我们的crm系统在MSSQL上,还有其他的任务运行着。
dawugui 2008-02-29
  • 打赏
  • 举报
回复
配置透明网关的步骤


前一段花了些时间配置 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
tomtomclub 2008-02-29
  • 打赏
  • 举报
回复
真晕,把oracle里面的表重新创建了一次 就可以了,还不知道问题在哪里,不过问题算是解决了。
tomtomclub 2008-02-29
  • 打赏
  • 举报
回复
看了,没有触发器,并且这个语句DELETE FROM OLAP.B_DIM_SUB_COMPANY这个语句放到oracle里面可以执行成功,无论里面有没有数据都可以执行,我的操作是把MSSQL数据表 更新到Oracle中,不知道是不是oracle的bug.
深渊的水影 2008-02-29
  • 打赏
  • 举报
回复
看上去不像删除时候的错误啊?

是不是ORACLE里面自己有什么触发器之类的东西?

导致 除数为 0
tomtomclub 2008-02-29
  • 打赏
  • 举报
回复
顶上去,大家有遇到过吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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