Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 连接应该在SQL*PLUS脚本中工作吗?_Oracle_Sqlplus - Fatal编程技术网

Oracle 连接应该在SQL*PLUS脚本中工作吗?

Oracle 连接应该在SQL*PLUS脚本中工作吗?,oracle,sqlplus,Oracle,Sqlplus,我想从cron作业运行sqlplus脚本 我想我可以写一行这样的话: CONNECT "myuser/mypass@mydb" 在脚本中,然后使用以下命令执行它: sqlplus @myscript 但是,当我这样做时,我得到: SP2-0306: Invalid Option SP3-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus 我是否误解了connect命令的用法?在SQL*Plus内部运行co

我想从cron作业运行sqlplus脚本

我想我可以写一行这样的话:

CONNECT "myuser/mypass@mydb"
在脚本中,然后使用以下命令执行它:

sqlplus @myscript
但是,当我这样做时,我得到:

SP2-0306: Invalid Option
SP3-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

我是否误解了connect命令的用法?

SQL*Plus
内部运行
connect
时,请删除引号:

CONNECT myuser/mypass@mydb
如果要将凭据作为参数传递给
sqlplus
,则需要使用双引号:

sqlplus "myuser/mypass@mydb"
,用于shell解析
myuser/mypass@mydb
作为单个参数,如果您的连接标识符中有空格,或者使用附加选项,如SYSDBA

使用/NOLOG选项

sqlplus /nolog @myscript
甲骨文11gR2

我通过sql*Plus运行了一个.sql文件,最初以JOHN的身份连接。在文件中,我以SYS连接,然后运行一个GRANT。请参见下面的.sql文件内容:

以sysdba身份连接sys/password

授予JOHN在DBMS_加密上执行的权限

连接JOHN/DOE

注意:顺便说一句,我不建议将sys/密码保存在文本文件中


HTH

@Wade:它是否从具有相同凭据的命令行连接?@Wade:是否只有在
cron
下运行时脚本才会失败?你能把
连接到我的用户吗/mypass@mydb
导入
文件.sql
并运行
sqlplus/nolog@file.sql
?我还没有在cron下运行它。你所描述的就是我正在做的。然而,关键的区别是我没有使用/nolog选项。有了这个选项,它就可以工作了。谢谢你的帮助。