我想使用 sqlplus 连接到位于另一台主机上的 oracle 数据库。此页面建议在我的 tnsnames 上添加一个项目以连接到该数据库
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
然后在 sqlplus 中使用它
sqlplus user/pass@local_SID
但是,在我的情况下,修改本地 tnsnames 是不可能的。是否可以仅使用 sqlplus 参数连接到远程数据库而无需更改 tnsnames?就像是
sqlplus user/pass@[email protected] ;( I know, this one is not valid)
也许,这可能取决于您使用的命令行环境,您需要引用字符串,例如
或者
您可以为此使用轻松连接:
要在您的机器上轻松连接,您需要将其添加到
NAMES.DIRECTORY_PATH
sqlnet.ora 中,例如:如果您的侦听器位于非默认端口上,请使用
[email protected]:port/...
.实际上,您似乎必须提供服务名称,而不是 SID;它们可能相同,但如果不是,则需要从服务器获取。
在您可以写入的目录中创建 tnsnames.ora 文件的副本,相应地修改文件,然后将 TNS_ADMIN 环境变量设置为该目录的位置。
例如:
在 Unix/Linux 系统上,您可以使用用户级别的配置文件来覆盖系统级别的条目。
系统级配置文件可以在目录中找到
$TNS_ADMIN
。如果未设置变量TNS_ADMIN
,则在目录中搜索它们$ORACLE_HOME/network/admin
。用户级配置文件不会作为一个整体替代系统级配置文件(因为
TNS_ADMIN
目录替代了整个$ORACLE_HOME/network/admin
目录),但它们会添加或更改系统级配置文件的条目。如果用户级配置文件中存在一个条目,则使用该条目,如果用户级配置文件中不存在该条目,则使用系统级配置文件的条目。