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)
#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
目录),但它们添加或更改了系统级配置文件的条目。如果用户级配置文件中存在一项,则使用该条目;如果用户级配置文件中不存在该条目,则使用系统级配置文件的条目。
评论
甚至更短-sqlplus userid / password @ database@GlennLong-但是在您的版本中,数据库仍然是TNS别名,必须存在于tnsnames.ora中,所以它与Louis试图避免的一样?