可以直接用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 命令相同的主机上 运行,那么您的后一次尝试将永远不会成功。
如果您想要更安全的连接,您可以考虑使用钱包。
我正在尝试在 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 命令相同的主机上 运行,那么您的后一次尝试将永远不会成功。
如果您想要更安全的连接,您可以考虑使用钱包。