我需要使用'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