我想使用sqlplus连接到位于另一台主机上的oracle数据库。此页面建议在我的tnsname上添加一个项目以连接到该数据库

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )


,然后在sqlplus中使用它

sqlplus user/pass@local_SID


但是,在我的情况下,无法修改本地tnsname。是否可以仅使用sqlplus参数连接到远程数据库,而不必更改tnsnames?像

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)


评论

甚至更短-sqlplus userid / password @ database

@GlennLong-但是在您的版本中,数据库仍然是TNS别名,必须存在于tnsnames.ora中,所以它与Louis试图避免的一样?

#1 楼

 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))


也许,这可能取决于您使用的命令行环境,您需要引用字符串,例如

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"




 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'


评论


如果使用可移植数据库,请使用它代替sid:(CONNECT_DATA =(SERVICE_NAME = remote_service_name))

– yannicuLar
2月14日下午14:21

#2 楼

您可以为此使用轻松连接:

sqlplus usr/pass@hostname.network/remote_service_name


要在计算机上启用轻松连接,您需要将其添加到sqlnet.ora中的NAMES.DIRECTORY_PATH,例如:

NAMES.DIRECTORY_PATH=(EZCONNECT)


如果侦听器位于非默认端口上,请使用...@hostname.network:port/...

实际上,您似乎必须提供服务名称,而不是SID。 ;它们可能是相同的,但如果不是,则需要从服务器获取。

评论


如果服务名称与主机名相同,则在连接时甚至不需要指定服务名称。 (实际上没有人这样做,但是很高兴知道。)

– durette
16-10-14在21:51



死链接....

–哈维
19年3月20日在11:00

@Harvey-更新,谢谢。

– Alex Poole
19年3月20日在11:06

#3 楼

在可以写入的目录中创建tnsnames.ora文件的副本,进行相应的修改,然后将TNS_ADMIN环境变量设置为该目录的位置。

例如:

cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp


评论


这是一个好得多的回应

–安德鲁·史莱奇(Andrew Sledge)
2014年8月1日在18:57

此方法适用于除sqlplus客户端之外未安装任何Oracle基础结构的系统。只需从数据库服务器复制tnsnames.ora,然后按照Phil的过程进行即可。

–TheRiley
19年6月7日15:30



#4 楼

在Unix / Linux系统上,您可以使用用户级别的配置文件来覆盖系统级别的条目。

System-Level         User-Level 
Configuration File   Configuration File
------------------   -------------------
sqlnet.ora           $HOME/.sqlnet.ora
tnsnames.ora         $HOME/.tnsnames.ora


系统级配置文件可在目录$TNS_ADMIN中找到。如果未设置变量TNS_ADMIN,则会在目录$ORACLE_HOME/network/admin中进行搜索。

用户级别的配置文件不会整体替代系统级别的配置文件(因为TNS_ADMIN目录会替代整个系统级别的配置文件$ORACLE_HOME/network/admin目录),但它们添加或更改了系统级配置文件的条目。如果用户级配置文件中存在一项,则使用该条目;如果用户级配置文件中不存在该条目,则使用系统级配置文件的条目。