RHEL6无法连接到本地oracle db

时间:2015-09-29 03:08:01

标签: oracle redhat

我下载了Oracle数据库oracle-xe-11.2.0-1.0.x86_64.rpm。安装后,我将默认密码设置为password

然后我下载并安装了instantclient-basic instantclient-sqlplus。 我的~/.bash_profile路径:

ORACLE_HOME=/usr/lib/oracle/11.2/client64
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_HOME
export LD_LIBRARY_PATH
export PATH

然后我尝试从sqlplus登录为:sqlplus system,并输入密码password。它给了我错误ORA-12162: TNS:net service name is incorrectly specified

我在线检查过,看起来如果我做了这些步骤,它应该可以正常工作。

类似问题链接:https://access.redhat.com/solutions/281843

1 个答案:

答案 0 :(得分:1)

您需要设置ORACLE_SID环境变量,以匹配您安装/创建的数据库。 This is mentioned in the documentation。没有那套:

$ echo $ORACLE_SID

$ sqlplus -s -l x/y
ERROR:
ORA-12162: TNS:net service name is incorrectly specified


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus

设置后:

$ export ORACLE_SID=XE
$ ./sqlplus -s -l x/y
ERROR:
ORA-01017: invalid username/password; login denied


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus

ORA-01017是因为我使用了伪凭证,但你可以看到它正在与数据库交谈,以便现在对它们进行验证。

您可以在ORACLE_SID中设置.bash_profile以及其他环境变量。

您也可以通过SQL * Net连接,无需设置$ORACLE_SID或覆盖它。如果您的侦听器正在运行(lsnrctl status要检查),您可以使用tnsnames.ora文件中定义的别名,该别名通常与SID匹配:

$ sqlplus x/y@XE

如果没有该文件,您可以使用easy connect语法:

$ sqlplus x/y@//localhost:1521/XE

获取侦听器实际侦听的主机名/ IP地址和端口(您可以从lsnrctl status获取)和数据库实例的服务名称 - 通常也是相同或类似的对于SID,我认为在你的情况下将是XE。

你可以read more in the documentation

顺便说一下,您似乎是根据$PATH设置而不是即时客户端来接收整个客户端,因此您可能不需要单独下载它。