0

サーバーの1つでshを介してddlスクリプトファイルを実行すると問題が発生しますが、別のサーバーでは正常に実行されます。スクリプトは以下のとおりです

sqlplus mgr/$1@$2 @export_all_tables_mgr.ddl
if [ $? != 0 ];
then
echo 'ERROR exporting MGR data, Refer to .CSV and .CTL files for detail.'   | tee -a MGR_ExtractionLog.log
fi

sqlplusを使用してddlファイルを実行しますが、不正なサーバーの1つであるため、sql plusに接続するだけで、何も実行されません。

oracle@dbsdev55z2 $ export_all_tables_mgr.sh password servicename

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 24 08:39:18 2013

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Data Mining and Real Application Testing options

SQL> 

ここで言及するために、私はここでOracle10gを使用しています。export_all_tables_mgr.ddlファイルは以下のとおりです

      alter session set nls_date_format = 'DDMMYYYYHH24MISS';

      @drop_table_temp_extraction_counts.ddl

      @create_table_temp_extraction_counts.ddl

      WHENEVER SQLERROR EXIT -1
      WHENEVER OSERROR EXIT -1

      SET HEADING OFF
      SET FEEDBACK OFF
      SET VERIFY OFF

      SPOOL MGR_ExtractionLog.log
      SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS'), '- Start extract process' FROM dual;
      SPOOL OFF

      define TableName=TABLE1
      @ExportTable

      define TableName=TABLE2
      @ExportTable

      SPOOL MGR_ExtractionLog.log append
      SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS'), '- End extract process' FROM dual;
      SPOOL OFF

      EXIT 0
4

1 に答える 1

0

これはシェルの問題だと思います。使用するインタープリターを伝えるために、シェルスクリプトの最初の行として次を追加してみてください。

#!/bin/sh
于 2013-01-25T15:52:31.343 に答える