我需要使用'sysdba'权限将我的Oracle 11g数据库从shell脚本连接起来。为此,我必须将用户从“root”切换到“oracle”。 我试过以下没有成功。使用'sysdba'从shell脚本连接到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"
我收到以下错误消息。
[[email protected] devel]# ./enableArchiveLogs.sh en ERROR: ORA-01031: insufficient privileges
SP2-0306: Invalid option. Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] where ::= [/][@] [edition=value] |/ SP2-0306: Invalid option. Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] where ::= [/][@] [edition=value] |/ SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus [[email protected] 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
'
你会得到什么样的错误? – Thilo 2012-04-23 09:03:18
Thilo,请参阅编辑后。谢谢。 – NetBear 2012-04-23 09:22:58