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

How do I connect to Oracle database link directly using SQLPLUS

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

[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 database link"?如果是 - 如何?

SID_NAME 没有指向数据库但是 "Oracle database link": https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#i1007709

连接到本地 Oracle 数据库后,我可以查询 "Oracle database link"。本地 Oracle 数据库是创建 link 的地方,并指向远程数据库。它通过 ODBC DSN 连接。

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

本地Oracle数据库端口为1521

我收到的错误消息:

ERROR: ORA-01017: invalid username/password; logon denied

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

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

没有连接到数据库 Link。

数据库 link 告诉数据库 A 如何访问数据库 B。

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

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

你的连接字符串是说,将我连接到一个名为 SID_NAME 的数据库,这是我计算机上的 运行,通过端口 # 1521。

错误消息告诉您用户名和密码组合不正确。所以你已经完成了 90% - 你只需要正确的 'key' 来打开锁。

SQLPlus 使用 Oracle DB Link 与远程数据库对话。 SQLPlus 不直接进行 ODBC 调用。 SQLPlus 直接与数据库对话。数据库通过 DB Links 相互通信,在本例中,Oracle DB Link 到 "Oracle Heterogeneous Services (HS)"。 ODBC 驱动程序 "never" 由 SQLPlus 加载,因此无法使用此方法调试驱动程序。此外,SQLPlus 连接的数据库也没有加载 ODBC 驱动程序。它使用 OCI/C 代码,就像 SQLPlus 连接到另一个数据库一样。