sqlcl错误日志配置

时间:2016-07-30 21:00:15

标签: oracle sqlplus sqlcl

我喜欢在出现任何数据库或操作系统问题时将我的oracle数据库脚本设置为失败。

我一直在考虑迁移到SQLCL,但我用于检测和触发非数据库问题回滚的SQL * Plus方法是否因SQLCL而失败,我想知道是否有人有替代解决方案(或者一个好的解决方法)。

我一直在使用SET ERRORLOGGING将任何SP错误导向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) - 错误?

2 个答案:

答案 0 :(得分:1)

好吧,看来,尽管可用SQLcl的errorlogging设置中存在set设置,但目前还不支持。

运行show <setting>命令检查设置是否受支持。

./sql -v

SQLcl: Release 4.2.0.16.175.1027 RC

SQL> help set errorlogging

SET ERRORLOGGING
   ERRORL[OGGING] {ON|OFF}
   [TABLE [schema.]tablename] 
   [TRUNCATE] [IDENTIFIER identifier]

SQL> show errorlogging
errorlogging Unsupported

答案 1 :(得分:1)

我们到了那里。它现在支持latest OTN release或Oracle数据库版本。

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