如何通过Oracle dblink对Sybase执行“use dbname”?

时间:2017-07-06 18:17:12

标签: oracle sybase dblink

如何从Oracle访问Sybase用户模式中的表?

isql我能做到

use mydb
go

如何使用dblink mydb从<{1}}中选择NITSYB5表?

这不起作用:

select count(*) from  "mydb"."lon_client_confirm_exec"@NITSYB5;

错误:

ORA-00942: table or view does not exist
[Oracle][ODBC Sybase Wire Protocol driver][SQL Server]"mydb"."lon_client_confirm_exec" not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).
 {42S02,NativeErr = 208}
ORA-02063: preceding 3 lines from NITSYB5
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
Error at Line: 3 Column: 30

2 个答案:

答案 0 :(得分:0)

注意:我不能与Oracle合作,因此对Oracle的dblink一无所知,所以fwiw ......

在Sybase ASE中,完全限定的表名格式为:<dbname>.<owner>.<table>

如果省略<owner>,则优化器将首先查找运行查询的用户拥有的表,然后查找dbo拥有的表。

在您的示例中,您似乎忽略了<owner>。如果该表由您的用户或dbo拥有,那么我建议您尝试添加额外的期限,例如:

select count(*) from mydb..lon_client_confirm_exec@NITSYB5;

注意:如果需要,可以在Oracle的dblink中添加引号。

答案 1 :(得分:0)

服务器1和服务器2 打开SSH server2 telnet服务器1主机,就可以了 su oracle

1) cd $ORACLE_HOME/bin
2) TNSPING database1 name 

可以做到

create public database link 
  LINK_NAME
connect to 
  DB1USERNAME
identified by 
  111 
using 'DB1NAME';

select * from dual@LINK_NAME, result x,完成。