首页 > 解决方案 > Ubuntu Oracle Instant Client tnsnames.ora

问题描述

我最近在 Ubuntu 18.04 上设置了 Oracle Instant Client,并尝试使用以下命令通过 sqlplus 连接到位于不同服务器上的数据库:

sqlplus username@orcl

我以以下格式编辑了我的 tnsnames.ora 文件:

甲骨文=
 (描述=
   (地址=(主机名)(端口=1521))
   (连接数据=
     (SERVICE_NAME=service_name)))

在我输入密码后,它会收到错误消息:

ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

如果我要手动输入连接数据,例如

sqlplus username/password@orcl:portnumber/service_name

我将要连接,但我不希望输入所有连接数据并将其保留为 username@host

我不确定是什么导致了错误,也不知道我是否需要在托管实际数据库的服务器端编辑任何文件以允许这样的连接。谢谢

标签: oraclesqlplustnsnamesoracleclient

解决方案


假设您不想输入密码;

此方法通常由 dba 完成,他们以 ssh 用户身份直接登录到该特定服务器/主机,其中他们的密码存储为散列私有/公钥(不是来自远程机器)

更简单的方法是使用 sqlplus username/password@remote_host_ip:1521/orcl 更好地在您的 kshrc/bashrc 文件中创建别名(并获取它们),这样您就可以用更少的击键获得所需的内容。

例如:nano .bashrc alias tosql='sqlplus 用户名/密码@remote_host_ip:1521/orcl'


推荐阅读