0

「sysdba」権限を持つシェル スクリプトから Oracle 11g DB に接続する必要があります。これを行うには、ユーザーを「root」から「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"

次のエラーが表示されます。

[root@vEMS-23 devel]# ./enableArchiveLogs.sh ja エラー: ORA-01031: 権限が不十分です

SP2-0306: 無効なオプションです。使用法: CONN[ECT] [ログオン] [AS {SYSDBA|SYSOPER|SYSASM}] ::= [/][@] [エディション=値] | / SP2-0306: 無効なオプションです。使用法: CONN[ECT] [ログオン] [AS {SYSDBA|SYSOPER|SYSASM}] ::= [/][@] [エディション=値] | / SP2-0157: 3 回試行しても ORACLE に接続できず、SQL*Plus を終了する [root@vEMS-23 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
'
4

1 に答える 1

0

CONNECT ちゃん/テスト SELECT * FROM 生徒; 出口;

/shell_with_oracledb_test/r_connection2.sql として保存

シェル ファイルを echo "sqlplus /nolog @/shell_with_oracledb_test/r_connection2.sql" として書き込みます。su - オラクル

このファイルに名前を付けます-> filename.sh

filename.sh ファイルを実行します。

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

于 2013-05-07T11:45:42.083 に答える