ORACLE连接sqlserver的技术叫做透明网关(Transparent Gateway)。Oracle透明网关软件在Oracle 8i时是需要花钱另买的,大约1万$;到Oracle 9i时是作为数据库的一个组件免费发布的。安装时在组件种选择即可(默认是不安装的)。
解决方案 »
- 谁知道怎么设置toad的智能提示啊?
- 如何查看执行计划的优劣,请教各位大哥大姐了!!!!!
- 在Linux8.0的X下运行dbassist没有反应,是什么原因?
- 再论SQL 谢谢
- 一个简单的查询语句,行列问题!??
- 安装Oracle9i后,无法启动OracleOracle9iTNSListener和OracleOracle9iAgent服务,这是怎么回事呀?请各位高手帮忙
- 备份数据的问题,急!
- 该不该调整共享池大小呢?
- 分组查询问题,求大神帮忙。
- oracle控制文件有3个,在使用list archive log all命令时,发现不能读取控制文件1,
- 急急急,查詢結果格式顯示問題 在線等,請幫忙看看 謝謝
- 请教:不装oracle客户端,为何连不上,急!
1、在WHERE子句中包括了函数的Updates或deletes语句不被允许;
2、不支持存储过程的调用;
3、不支持分布式事务,只支持单点的事务。不知能不能满足你的需要?
我按照下面的材料配置的,
http://www.ezikao.com.cn/art.view.asp?artid=3033
但是监听没有启动。
配置ODBC,假如配了一个名为CONN_SQL2000的数据源名。第二步
$ORACLE_HOME/HS/ADMIN下,ORACLE提供了样例初始化文件,把对应的文件复制一份出来,并且改名为init<HS_SID>.ora,<HS_SID>是你SQL SERVER ODBC代理起的别名。例如:initSQL2K.ora
编辑initSQL2K.ora文件。参数有:
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = CONN_SQL2000
HS_FDS_TRACE_LEVEL = ON
HS_AUTOREGISTER = TRUE
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>第三步 创建异种服务代理的数据字典
执行$ORACLE_HOME/rdbms/admin/caths.sql,创建相关的系统表和视图。 第四步 创建异种服务代理的工作环境
添加SQL2K的侦听服务,$ORACLE_HOME/NETWORK/ADMIN/listener.ora
SID_DESC=
(SID_NAME=SQL2K)
(ORACLE_HOME=d:\oracle\ora81)
(PROGRAM=hsodbc)
)
修改$ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora,添加一个网络服务名
sql2k,将在后面创建数据库联接时用到。
sql2k =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=SQL2K))
(HS=OK)
)
重新启动侦听第五步 修改数据库启动参数文件
修改数据库启动参数文件,设置global_names=false第六步 创建访问non-oracle数据库的连接(Database Link)
在sqlplus中,执行create database link命令。Connect to 指定了连接到SQL SERVER的用户名和密码。
SQL>create public database link sql2k connect to sa identified by manager using ‘sql2k’;
Database link created.
第七步 测试
SQL> connect scott/tiger;
Connected.
SQL> select count(*) from sysobjects@sql2k;
COUNT(*)
----------
135
现在,oracle已经可以访问sqlserver数据库了。
按照你的方法配置后,监听没有启动,所以还是连接不上
系统参数文件为C:\oracle\ora92\network\admin\listener.ora
写入C:\oracle\ora92\network\log\listener.log的日志信息
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=happysoft)(PORT=1521)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
启动日期 14-1月 -2005 15:19:13
正常运行时间 0 天 0 小时 0 分 2 秒
跟踪级别 off
安全性 OFF
SNMP OFF
监听器参数文件 C:\oracle\ora92\network\admin\listener.ora
监听器日志文件 C:\oracle\ora92\network\log\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=happysoft)(PORT=1521)))
服务摘要..
服务 "IES" 包含 1 个例程。
例程 "IES", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "OEMREP" 包含 1 个例程。
例程 "OEMREP", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "ORA92" 包含 1 个例程。
例程 "ORA92", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "SQLAgent" 包含 1 个例程。
例程 "SQLAgent", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "tg4msql" 包含 1 个例程。
例程 "tg4msql", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功==========================
其中的SQLAgent就是以上所说得连接SQLSERVER的例程。
在修改完后我重新启动数据库后,用status查看数据库提示只启动主sid.
在按照你的步骤进行中,在执行caths.sql语句的时候,很多drop语句不能执行,只有一一屏蔽后执行完毕全部语句,但是在数据库重启后建立的caths.sql表好像不存在.
1.配置windows的ODBC数据源:
开始菜单—》设置—》管理工具—》数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:
添加—》选择Microsoft ODBC for oracle—》自定义数据源名称(最好跟tns中连接串同名!)—》服务器名称
(必填!填写tns文件中的连接串名称)—》完成。 2.配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称;
选其他数据源; 指定程序名称为:Microsoft OLE DB Provider for Oracle; 产品名称可不填;
数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd
(或者按如下格式:UID=username;PWD=userpasswd),
这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码 —》 安全性标签页里:
设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确定。 3.完成了。使用方法
在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,
即可在右边窗口看到该oracle数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!
访问表时,使用格式为: [连接服务器名]..[ORACLE用户].[表名]。必须为大写。更详细具体的使用这里不再赘述。
------------------------------------------------------------------------------------------
二:oracle连接sqlserver
1、安转透明网关
在自定义安转内
D:\oracle\ora92\tg4msql\admin\inittg4msql.ora tg4msql
2、在D:\oracle\ora92\network\admin\listener.ora内添加
(SID_DESC =
(GLOBAL_DBNAME = tg4msql)
(PROGRAM = tg4msql)
(ORACLE_HOME = D:\oracle\ora92)
(SID_NAME = tg4msql)
)
3、配置tns
tnsnames.ora
-----------------
例子1
cdma =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhyg)(PORT = 1521))
)
(CONNECT_DATA =
(SID = tg4msql)
(SERVER = DEDICATED)
)
(HS=OK)
)
例子2
du =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sha38)(PORT = 1521))
)
(CONNECT_DATA =
(SID = jf)
(SERVER = DEDICATED)
)
(HS=OK)
)
--------
3、创建数据链路
CREATE PUBLIC DATABASE LINK DU CONNECT TO SA IDENTIFIED BY SA USING 'DU'
ok可以使用了
select * from sysobjects@cdma
我是用internal用户,环境是win2000 server+oracle8i ,步骤如下:
1.配置windows的ODBC数据源:
开始菜单—》设置—》管理工具—》数据源(ODBC)—》进入配置用户DSN:
添加—》选择SQL SERVER —>定义数据源名称SQL2K—》服务器名称
2.修改$ORACLE_HOME/HS/ADMIN下,ORACLE提供了样例初始化文件,并且生成名为initSQL2K.ora的文件
文件参数为:
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = SQL2K
HS_FDS_TRACE_LEVEL = ON
HS_AUTOREGISTER = TRUE
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>第三步 执行$ORACLE_HOME/rdbms/admin/caths.sql,创建相关的系统表和视图。 第四步 添加SQL2K的侦听服务,$ORACLE_HOME/NETWORK/ADMIN/listener.ora
(SID_DESC=
(GLOBAL_DBNAME= SQL2K)
(SID_NAME=SQL2K)
(ORACLE_HOME=c:\oracle\ora81)
(PROGRAM=hsodbc) #这个参数设置为SQL2K和hsodbc都用过了
)
修改$ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora,添加一个网络服务名
sql2k,将在后面创建数据库联接时用到。
sql2k =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=SQL2K))
(HS=OK)
)
重新启动侦听