我下载了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
。
我在线检查过,看起来如果我做了这些步骤,它应该可以正常工作。
答案 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
设置而不是即时客户端来接收整个客户端,因此您可能不需要单独下载它。