可以直接用sqlplus连接数据库,设置的时候不行ORACLE_SID

Can connect to database with sqlplus directly, but not when setting ORACLE_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 中连接时我不需要识别我的数据库。我的假设不正确吗?还是我缺少一些必需的步骤或配置?

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

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