【问题标题】:Sql query with Shell : Invalid option使用 Shell 进行 Sql 查询:选项无效
【发布时间】:2018-07-11 11:32:34
【问题描述】:

所以我试图在我的脚本外壳中执行 SQL 查询(Oracle 数据库)。

#!/bin/bash
#!/bin/ksh
login='mylogin'
pss='mypassword'

CE=`sqlplus -s $login/$pss << END1
set pause off heading off feed off pagesize 0;
select * from table1;
END1`  
echo $CE

但我得到了这个错误:

用户名/密码无效;登录被拒绝 SP2-0306:无效选项。 用法:CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [版本=值]] 其中 ::= [/][@] ::= [][/][@] SP2-0306: 无效的选项。用法:CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [版本=值]] 其中 ::= [/][@] ::= [][/][@] SP2-0157: 尝试 3 次后无法连接到 ORACLE,退出 SQL*Plus

有什么帮助吗? 谢谢,

【问题讨论】:

  • 您确定您提供的用户名/密码正确吗?如果你运行 sqlplus -s mylogin/mypassword 会发生什么?
  • invalid username/password;”有什么不清楚的地方?
  • 我试图直接提供我的用户名和密码,但我得到了同样的错误
  • 我的用户/密码是正确的,我确定
  • -l 标志添加到sqlplus 调用以使其在第一次登录尝试后停止,这将清除您看到的错误以仅显示相关部分。如果您确实确定凭据正确,那么您可能没有达到您期望的数据库; ORACLE_SID 或 TWO_TASK 是否设置为您所期望的?

标签: oracle shell unix sqlplus


【解决方案1】:

示例 1 脚本为 test_echo.sh

  #!/bin/sh

    username=\"Scott\"
    password=\"@T!ger\"
    ezconnect=10.89.251.205:1521/esmd

    echo username:  $username
    echo password:  $password
    echo ezconnect  $ezconnect

 echo -e 'show user \n  select 1 from dual;\nexit;' |  sqlplus  $username/$password@$ezconnect

oracle@esmd:~> ./test_echo.sh
username: "Scott"
password: "@T!ger"
ezconnect 10.89.251.205:1521/esmd

SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 29 11:02:52 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

SQL> USER is "Scott"
SQL>
         1
----------
         1

SQL> Disconnected from Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

示例 2

#!/bin/sh

username=\"Scott\"
password=\"@T!ger\"
ezconnect=10.89.251.205:1521/esmd


echo username:  $username
echo password:  $password
echo ezconnect: $ezconnect

testoutput=$(sqlplus -s $username/$password@$ezconnect  << EOF
set pagesize 0 feedback off verify off heading off echo off;
show user
SELECT to_char(sysdate,'DD-MM-YYYY HH24:MI')||' Test passed' from dual
exit;
EOF
)

echo $testoutput

oracle@esmd:~> ./test_Upper_case.sh
username: "Scott"
password: "@T!ger"
ezconnect: 10.89.251.205:1521/esmd
USER is "Scott" 29-01-2018 11:55 Test passed

示例 3

#!/bin/sh

username=\"Scott\"
password=\"@T!ger\"


echo username:  $username
echo password:  $password

testoutput=$(sqlplus -s $username/$password  << EOF
set pagesize 0 feedback off verify off heading off echo off;
show user
SELECT to_char(sysdate,'DD-MM-YYYY HH24:MI')||' Test passed' from dual
exit;
EOF
)

echo $testoutput

oracle@esmd:~> ./test_Upper_case.sh
username: "Scott"
password: "@T!ger"
USER is "Scott" 01-02-2018 11:04 Test passed

配置配置文件 sqlnet.ora 以便于连接。

NAMES.DIRECTORY_PATH= (TNSNAMES,ezconnect)

将密码@T!ger更改为用户"Scott"

oracle@esmd:~>
oracle@esmd:~> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 29 11:05:04 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production

SQL> alter user "Scott" identified by "@T!ger";

User altered.

【讨论】:

  • 如何获得“ezconnect”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多