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
'
どのようなエラーが表示されますか? – Thilo
Thilo、編集された記事をご覧ください。ありがとう。 – NetBear