如何使用SQLPLUS直接连接到Oracle数据库链接

时间:2018-05-31 22:45:48

标签: oracle command-line sqlplus database-link

我尝试了以下各项 - 没有效果:

[oracle@localhost]$ sqlplus system/oracle@SID_NAME

[oracle@localhost]$ sqlplus system/oracle@localhost:1521/SID_NAME

[oracle@localhost]$ sqlplus system/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(Port=1521))(CONNECT_DATA=(SID=SID_NAME)))

[oracle@localhost]$ sqlplus "system/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(Port=1521))(CONNECT_DATA=(SID=SID_NAME)))"

SQL * Plus是否支持在初始命令提示符下直接连接到“Oracle数据库链接”?如果是这样 - 怎么样?

SID_NAME不指向数据库,而是指向“Oracle数据库链接”:https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#i1007709

我可以在连接到本地Oracle数据库后查询“Oracle数据库链接”。本地Oracle数据库是创建链接并指向远程数据库的位置。它通过ODBC DSN连接。

但是,我有兴趣直接在初始sqlplus命令提示符下连接到Oracle数据库链接。

本地Oracle数据库端口为1521。

我得到的错误消息:

  

错误:ORA-01017:用户名/密码无效;登录被拒绝

重点是调试(GDB)ODBC驱动程序。使用isql - 在命令提示符下 - 我可以提供ODBC DSN,当我在GDB提示符下运行info sharedlibrary时 - 我可以看到我加载的库,从而调试。我有兴趣使用sqlplus以相同的方式加载驱动程序。我无法看到加载的库帖子连接。因此 - 尝试在初始命令下加载库,就像isql一样。

sqlplus在什么时候实际加载远程数据库的ODBC驱动程序?我知道它在执行查询时会执行,并在退出时卸载它。但是我无法捕获它 - 即使存在断点。

2 个答案:

答案 0 :(得分:1)

一个没有连接到数据库链接。

数据库链接告诉数据库A如何访问数据库B.

假设您拥有DB_LINK定义,您可以使用相同的详细信息直接连接到数据库B.

所以在某种程度上,是的SQL * Plus可以连接。

您的连接字符串说,请将我连接到名为SID_NAME的数据库,该数据库正在我的计算机上运行,​​通过端口#1521。

错误消息告诉您用户名和密码组合不正确。所以你90%的方式 - 你只需要正确的'钥匙'来打开锁。

答案 1 :(得分:0)

SQL Plus使用Oracle DB Link与远程数据库对话。 SQL Plus不会直接进行ODBC调用。 SQL Plus直接与数据库对话。数据库通过DB链接(在本例中为通过“ Oracle异构服务(HS)”的Oracle DB Link)相互通信。 ODBC驱动程序“从不”由SQLPlus加载,因此,无法使用此方法调试驱动程序。另外,SQLPlus连接到的数据库也不会加载ODBC驱动程序。就像SQL Plus一样,它使用OCI / C代码来连接到另一个数据库。