2012-04-23 180 views
0

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

你會得到什麼樣的錯誤? – Thilo 2012-04-23 09:03:18

+0

Thilo,請參閱編輯後。謝謝。 – NetBear 2012-04-23 09:22:58

回答

0

CONNECT瓚/測試 SELECT * FROM 學生; EXIT;

另存爲/shell_with_oracledb_test/r_connection2.sql

編寫shell文件 回聲 「的sqlplus/NOLOG @/shell_with_oracledb_test/r_connection2.sql」 |蘇 - 甲骨文

名這個文件 - > filename.sh

EXCUTE filename.sh文件

這是示例代碼。