我正在重新编译一些我公司目前没有人编译过的 Pro*C 代码。它编译正常,但是当我将它复制到生产服务器并运行它时,我收到 Oracle 错误 ORA-12547(TNS:失去联系)
有任何想法吗?
我正在重新编译一些我公司目前没有人编译过的 Pro*C 代码。它编译正常,但是当我将它复制到生产服务器并运行它时,我收到 Oracle 错误 ORA-12547(TNS:失去联系)
有任何想法吗?
哦,想通了。:-)
C 可执行文件不直接在服务器上运行,而是通过设置连接环境的脚本启动。即是这样的:
export SHLIB_PATH=/oracleDatabaseSidHere/oracle/10.2/lib:/usr/lib:/oracleDatabaseSidHere/oracle/10.2/odg/lib
export ORACLE_BASE=/oracleDatabaseSidHere/oracle
export ORACLE_SID=oracleDatabaseSidHere
export ORACLE_HOME=/oracleDatabaseSidHere/oracle/10.2
# Set up the path and executable to run
PATH=.\:$PATH:$ORACLE_HOME/bin:/usrlocal/bin
PATH=$PATH:/path_to_application_logs
cd /path_to_application
application
与此相关,我刚刚发现当我尝试使用 PL/SQL 连接到 Oracle 数据库并且同时打开 VPN 连接时,我在我的 Windows 机器上收到相同的错误 ORA-12547 TNS 失去联系。
我在 Linux,Oracle 11gR2 上遇到了类似的问题。Oracle 所有者可以运行 SQL*Plus 并通过 TNS 或本地连接进入。非 oracle 用户可以通过 TNS 登录,但不能作为本地连接。
原来答案是 ORACLE_HOME 文件系统被挂载为“nosuid”。删除该挂载选项解决了我的问题。