博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11g新特性-SQL PLUS 错误日志
阅读量:6628 次
发布时间:2019-06-25

本文共 2802 字,大约阅读时间需要 9 分钟。

习惯使用SQLPLUS管理Oracle的朋友肯定不会对使用show errors命令来确认PL/SQL匿名块或过程执行错误感到陌生。似乎在11g以前这是唯一的一种勘错途径了,可惜的是这部分show errors显示的错误信息往往不够全面同时也无法立即保存下来。11g r1中引入了新的错误日志特性,以便DBA或应用开发人员在调试PL/SQL程序时更高效地排除错误。通过set errorlogging命令可以在SQL执行期间将所有的错误记录存储在一个特定的错误日志表中。默认情况下,set errorlogging会将错误记录写入到名为SPERRORLOG的表中。可以客制化该表的表名,错误日志表记录错误的各种属性:1.引发错误用户的用户名;2.错误发生时间;3.包含引发错误语句的脚本名;4.用户自定义的标识符;5.SP2,ORA,PLS错误消息;6.具体引发错误的语句。
SQL> desc sperrorlog; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- USERNAME                                           VARCHAR2(256) TIMESTAMP                                          TIMESTAMP(6) SCRIPT                                             CLOB IDENTIFIER                                         VARCHAR2(256) MESSAGE                                            CLOB STATEMENT                                          CLOBSQL> show errorlogging ;errorlogging is OFF/* 默认情况下错误日志功能是关闭的,我们需要手动打开它 */SQL> set errorlogging on;SQL> show errorlogging ;errorlogging is ON TABLE SYS.SPERRORLOG/* 可以看到成功打开错误日志功能,并会将后续的错误日志写入到当前用户(SYS)名下的SPERRORLOG表 */SQL> select 1 from abc;select 1 from abc              *ERROR at line 1:ORA-00942: table or view does not existSQL> set linesize 200;SQL> col username for a20;SQL> col message for a40SQL> col statement for a40;/* session A */SQL> select 1 from abc;select 1 from abc              *ERROR at line 1:ORA-00942: table or view does not existSQL> select username,message,statement from sperrorlog;USERNAME             MESSAGE                                  STATEMENT-------------------- ---------------------------------------- ----------------------------------------SYS                  ORA-00942: table or view does not exist  select 1 from abc/* 此时在session B中查询 */SQL> select username,message,statement from sperrorlog;no rows selected/* 换而言之当errorlogging被激活后,发生错误时Oracle会将错误日志追加到SPERRORLOG表上,但并不commit; *//* 这可能导致V$LOCK动态性能视图中显示大量的TX锁,虽然是虚惊:) */

By setting 'ERRORLOGGING' parameter in SQLPlus, a new table 'SPERRORLOG' will be created. SQLPlus will write session errors to an error table SPERRORLOG. This feature very useful in order to track session errors. Example: SQL> set ERRORLOG ON SQL> desc SPERRORLOG Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME VARCHAR2(256) TIMESTAMP TIMESTAMP(6) script VARCHAR2(1024) IDENTIFIER VARCHAR2(256) MESSAGE CLOB STATEMENT CLOB SQL> SELECT USERNAME, STATEMENT, MESSAGE, TIMESTAMP FROM SPERRORLOG; USERNAME STATEMENT MESSAGE ----------------------------------------------------------------- TIMESTAMP ----------------- SYS select * from table1 ORA-00942: table or view does not exist 16-DEC-07 02.21.43.000000 AM

本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1277579

转载地址:http://ghqpo.baihongyu.com/

你可能感兴趣的文章
深入分析 Linux 内核链表
查看>>
WPF界面设计技巧(6)—玩玩数字墨水手绘涂鸦
查看>>
position:fixed和scroll实现div浮动【示例】
查看>>
java设计模式—Adapter模式
查看>>
Microsoft SQL Server 2008 R2
查看>>
c# 多线程
查看>>
s表达式和json表达式
查看>>
Ruby:Open-uri和Net::HTTP的不同
查看>>
Special Pythagorean triplet
查看>>
基于jCOM搭建Java-微软信息桥梁(上)
查看>>
js 函数定义三种方式
查看>>
mysql 得到重复的记录
查看>>
亦步亦趋在CentOS 6.4下安装Oracle 11gR2(x64)
查看>>
ACM-SG函数之S-Nim——hdu1536 hdu1944 poj2960
查看>>
JavaScript大杂烩5 - JavaScript对象的若干问题
查看>>
SQLServer User and Login Tips
查看>>
IOS开发之——使用Segue在StoryBoard之间切换
查看>>
深入分析 Java I/O 的工作机制
查看>>
TortoiseSVN使用简介
查看>>
*Hdu 1026-Ignatius and the Princess I
查看>>