我需要使用'sysdba'权限从shell脚本连接Oracle 11 g数据库。为此,我必须将用户从'root'切换到'oracle'。我已尝试以下操作,但没有成功。
su - oracle -c "<< EOF1
sqlplus -s "/ as sysdba" << EOF2
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
shutdown immediate
startup mount
alter database archivelog;
alter database open;
exit;
EOF2
EOF1"
我收到以下错误。
[root错误enableArchiveLogs.sh:ORA-01031:权限不足
SP2-0306:选项无效。用法:连接器[ECT] [登录] [作为{系统数据库管理员|系统|SYSASM}]其中::= [/][@] [版本=值]|第二次选项无效。用法:CONN[ECT] [登录] [AS {系统数据库管理员|系统|SYSASM}]其中::= [/][@] [版本=值]|第二个参数:尝试3次后仍无法连接到ORACLE,正在退出SQL*Plus [root@vEMS-23 devel]#
据我所知,它无法以'sysdba'身份进行身份验证。如果我删除'su-oracle-c'并最初以oracle用户身份运行脚本,则不会发生这种情况。
有线索吗?
"我有答案“
答案很简单。我只是语法有点混乱。下面是工作代码:
su - oracle -c 'sqlplus -s / as sysdba <<EOF
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
shutdown immediate
startup mount
alter database noarchivelog;
alter database open;
exit;
EOF
'
1条答案
按热度按时间k2arahey1#
CONNECT更改/测试SELECT * FROM学生;出口;
保存为/shell_带有Oracle数据库b_测试/r_连接2.sql
将shell文件写入回显“sqlplus /nolog @/shell_with_oracledb_test/r_连接2.sql”|苏-甲骨文
将此文件命名为-〉filename.sh
执行filename.sh文件
这是示例代码。