您好我正在尝试使用shell脚本连接我的数据库并从shell传递数据库凭据。我收到“ORA-12162:TNS:错误地指定了网络服务名称”。请找到下面的脚本。
#!/bin/bash
DB_CREDENTIALS=$1
mkdir -p $PWD/logs
sqlplus -silent $DB_CREDENTIALS <<EOFSQL
set echo on
set timing on
set heading on
set feedback on
set linesize 5000
SET PAGESIZE 0
SET TRIMSPOOL ON
@teshscrpt.sql
EOFSQL
错误是:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
SP2-0306: Invalid option.
Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
where <logon> ::= <username>[/<password>][@<connect_identifier>] | /
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
有人可以帮助我。
谢谢, 的Sudhir。
答案 0 :(得分:1)
首先,你应该养成引用变量的习惯:
#!/bin/bash
DB_CREDENTIALS="$1" # HERE
mkdir -p "$PWD"/logs # HERE
sqlplus -silent "$DB_CREDENTIALS" <<EOFSQL # HERE
然后:
我正试图从像
这样的shell调用我的脚本bash-4.2$ dbcheck.sh
显然,您的脚本将连接参数作为第一个参数。你应该这样调用它:
bash-4.2$ dbcheck.sh username/password@my.oracle.host
答案 1 :(得分:0)
您需要输入正确的凭据。像这样启动它:
dbcheck.sh username/password@database
您是否阅读过正确的sqlplus语法?