【发布时间】:2017-05-18 10:38:36
【问题描述】:
我正在尝试从 shell 脚本连接到数据库,但我遇到了以下错误。
数据库输出:错误: ORA-12154: TNS: 无法解析指定的连接标识符
SP2-0306:选项无效。 用法:CONN[ECT] [登录] [AS {SYSDBA|SYSOPER}] 在哪里 ::= [/][@] | / SP2-0306:无效选项。 用法:CONN[ECT] [登录] [AS {SYSDBA|SYSOPER}] 在哪里 ::= [/][@] | /
轨迹代码:
#!/bin/bash
LogDirectory='/users/users-06/p6***8/scripts/dir'
ORACLE_HOME=/tools/ver/oracle-10.2.0.1-64
export ORACLE_HOME
DBUSER='p6*02*1'
DBUSERPASSWORD='R****07'
DB='O**XDA3'
var=`$ORACLE_HOME/bin/sqlplus -S ${DBUSER}/${DBUSERPASSWORD}@${DB} << EOD
spool ${LogDirectory}/query.txt
set linesize 32767
set feedback off
set heading off
SELECT * FROM Omi.ESP_FEED_REQUEST WHERE FEED_NAME='PSAR_TRANSACTION_FEED' AND REQUEST_ID='3694707322503' AND AS_OF='04-Jan-2017' ORDER BY 1 DESC;
spool off
exit;
EOD`
echo $var > ${LogDirectory}/DB_output.txt
您能否建议我如何在“var”变量中获取 sql 输出?非常感谢!
【问题讨论】:
-
注意:sqlplus 存在于路径 $ORACLE_HOME/bin
-
您还应该将
TNS_ADMIN导出到您的tnsnames.ora文件所在的位置。 -
@WernfriedDomscheit,感谢先生的反馈,它现在对我有用。
-
@WernfriedDomscheit,它对我有用,但似乎有错误(一个新的“on.lst”文件正在自动创建),你能建议如何克服它吗?请检查我在问题中的最后一个命令。
-
你想在
var得到什么?行数?选择的整个结果? (是一行还是几行)整个SQL脚本的退出代码?
标签: oracle bash shell unix sqlplus