可以直接使用sqlplus连接数据库,但在设置ORACLE_SID

时间:2017-07-06 15:22:28

标签: oracle shell unix sqlplus sid

我正在尝试连接到shell脚本中的数据库。如果我使用它,我可以很好地连接:

sqlplus user/pass@db_service_name

然而,当我尝试这样的事情时,它不起作用:

ORACLE_SID=db_sid
export ORACLE_SID
sqlplus /nolog
connect user/pass

我收到错误:

ERROR:
ORA-12545: Connect failed because target host or object does not exist

显然我错过了一些东西,但这是一个我不太熟悉的领域,所以我不确定我哪里出错了。我的假设是,如果我设置了ORACLE_SID,那么在连接sqlplus时我不需要识别我的数据库。我的假设不正确吗?或者我错过了一些必要的步骤或配置?

1 个答案:

答案 0 :(得分:2)

使用sqlplus user/pass@db_sid是指$ORACLE_HOME/network/admin/tnsnames.ora中的TNS别名。如果实例与sqlplus命令在同一主机上运行,​​则需要在tnsnames.ora中查看TNS别名的文本,并将ORACLE_SID设置为文件中引用的SID,然后执行. oraenv。如果实例没有与sqlplus命令在同一主机上运行,​​那么后一种尝试将永远不会起作用。

如果您想要更安全的连接,可以考虑使用钱包。