2

データベースまたは OS に問題が発生した場合に失敗するように、Oracle データベース スクリプトをセットアップするのが好きです。

SQLCL への移行を検討してきましたが、データベース以外の問題のロールバックを検出してトリガーするために取った SQL*Plus アプローチが SQLCL で失敗しており、代替ソリューション (または適切な回避策) があるかどうか疑問に思いました。

SET ERRORLOGGINGSPエラーをSPERRORLOGに送信するために使用しており、コミットする前にそれらを検出して、ロールバック/ブランチ/続行/アラートなどを決定できます.

次の問題の修正を期待して、最新の sqlcl (2016 年 6 月 sqlcl-4.2.0.16.175.1027) を入手しましたが、問題は解決しません。

を発行するSET ERRORLOGGING ONと、次のようになります。

SQL> SET ERRORLOGGING ON 
SP2-0158: unknown SET option beginning "errorloggi..."

手動エントリは、このオプションが SQLCL で変更されたことを示しているようです。

SQL> help set errorlogging 
SET ERRORLOGGING 
ERRORL[OGGING]{ON|OFF} 
[TABLE [schema.]tablename]     [TRUNCATE] [IDENTIFIER  identifier]

これは単なるバグですか、それとも ERRORLOGGING を起動して実行するために他に何か必要ですか?

これがバグである場合、SP(2) エラーを検出する良い代替手段はありますか?

4

2 に答える 2

1

私たちはそこに着きました。現在、最新の OTN リリースまたは Oracle Database リリースでサポートされています。

SQL> conn barry/oracle@localhost:1521/xe
Connected.
SQL> show errorlogging
errorlogging is OFF
SQL> set errorlogging on
SQL> show errorlogging
errorlogging is ON TABLE SPERRORLOG
SQL> select * from NOTATABLE;

Error starting at line : 1 in command -
select * from NOTATABLE
Error at Command Line : 1 Column : 15
Error report -
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:
*Action:


SQL> set sqlformat ansiconsole
SQL> /

USERNAME  TIMESTAMP                     SCRIPT  IDENTIFIER  MESSAGE                                   
STATEMENT

BARRY     29-AUG-17 12.55.45.000000000                      ORA-00942: table 
or view does not exist
select * from NOTATABLE
于 2017-08-29T12:02:38.223 に答える