2012-04-23 32 views
0

Oracle 11g DBをシェルスクリプトから 'sysdba'権限で接続する必要があります。これを行うには、ユーザーを 'root'から 'oracle'に切り替える必要があります。 私は以下を試してみましたが、成功しませんでした。'sysdba'でシェルスクリプトからOracle DBに接続

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

+0

Thilo、編集された記事をご覧ください。ありがとう。 – NetBear

答えて

0

CONNECTちゃん/テスト学生* FROM を選択 。 終了;

保存 エコーとして/shell_with_oracledb_test/r_connection2.sql

書き込みシェルファイルとして "SQLPLUS/NOLOG @/shell_with_oracledb_test/r_connection2.sql" | SU - オラクル

名このファイル - > filename.sh

excuteのfilename.shファイル

これはサンプルコードです。

関連する問題