【发布时间】:2019-11-28 05:14:21
【问题描述】:
我创建了一个 Oracle Dblink 来访问 SQLServer 表。 我可以看到我有权访问的表/视图。
但是当我执行一个选择时,它返回 ORA-00600。
我的 dblink 创建命令:
CREATE DATABASE LINK SQLREQUERIM CONNECT TO my_user IDENTIFIED BY "myPassword" USING 'MSSQLREQUERIM';
我的 tnsnames.ora 文件
MSSQLREQUERIM =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=myOracleHost)(PORT=1521))
(CONNECT_DATA=(SID=MSSQLREQUERIM))
(HS=OK)
)
我的 listener.ora 文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(SID_NAME=MSSQLREQUERIM)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM=dg4odbc)
)
)
我的 odbc.ini
[ODBC Data Sources]
MSSQLREQUERIM = MSSQL Server
[MSSQLREQUERIM]
Driver=/usr/lib64/libtdsodbc.so.0
Description = MSSQL Server
Trace = No
Server = mySQLServerHost
Database = REQUERIM
Port = 60472
TDS_Version = 7.2
我的 iniMYSQLREQUERIM.ora 文件
HS_FDS_CONNECT_INFO = MSSQLREQUERIM
HS_FDS_TRACE_LEVEL = DEBUG
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
set ODBCINI=/etc/odbc.ini
【问题讨论】:
-
ORA-00600 表示您需要联系 Oracle 支持
-
具体请参见this Oracle Support article - 我认为问题在于某些 DB 链接驱动程序将 SQL Server 中的大文本字段转换为 LONG 数据类型,这在 Oracle 中有很多限制 - 比如每个表只允许 1 个.尝试只选择某些列,而不是
select *。 -
感谢 kfinity,你杀了这个字谜