【SQL*Plus】11g版本对 SQL*Plus错误日志的记录功能——errorlogging参数

Oracle 11g中的errorlogging参数增强了错误信息的记录功能,可以做到错误信息“落地”的功能。

1.Oracle版本信息
sys@11gR2> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

2.SQL*Plus中errorlogging参数的默认值
sec@11gR2> show errorlogging
errorlogging is OFF

3.修改errorlogging选项为ON开启错误日志记录功能
sec@11gR2> set errorlogging on
sec@11gR2> show errorlogging
errorlogging is ON TABLE SEC.SPERRORLOG

注意再次提示的内容,“set errorlogging on”命令将自动在当前用户下创建表SPERRORLOG,用于记录错误信息。

sec@11gR2> desc SPERRORLOG
 Name          Null?    Type
 ------------- -------- -------------------
 USERNAME               VARCHAR2(256)
 TIMESTAMP              TIMESTAMP(6)
 SCRIPT                 VARCHAR2(1024)
 IDENTIFIER             VARCHAR2(256)
 MESSAGE                CLOB
 STATEMENT              CLOB

每个字段的定义描述如下:
 USERNAME  -- 用户名
 TIMESTAMP -- 错误发生的时间
 SCRIPT    -- 脚本名称
 IDENTIFIER-- 标识符
 MESSAGE   -- 记录类似ORA、PLA或SP2错误信息
 STATEMENT -- 错误信息描述

4.模拟SQL*Plus中的错误
sec@11gR2> show secooler
SP2-0158: unknown SHOW option "secooler"
sec@11gR2> help secooler
SP2-0172: No HELP matching this topic was found.
sec@11gR2> seeeeelect from tab;
SP2-0734: unknown command beginning "seeeeelect..." - rest of line ignored.
sec@11gR2> create table t as as select * from user_objects;
create table t as as select * from user_objects
                  *
ERROR at line 1:
ORA-00928: missing SELECT keyword

sec@11gR2>

5.通过查询SPERRORLOG表获得所有错误信息
sec@11gR2> col USERNAME for a8
sec@11gR2> col TIMESTAMP for a14
sec@11gR2> col MESSAGE for a20
sec@11gR2> col STATEMENT for a20
sec@11gR2> select USERNAME,TIMESTAMP,MESSAGE,STATEMENT from SPERRORLOG;

USERNAME TIMESTAMP      MESSAGE              STATEMENT
-------- -------------- -------------------- --------------------
SEC      06-MAY-10 03.5 SP2-0158: unknown SH show secooler
         1.49.000000 PM OW option "secooler"

SEC      06-MAY-10 03.5 SP2-0172: No HELP ma help secooler
         1.51.000000 PM tching this topic wa
                        s found.

SEC      06-MAY-10 03.5 SP2-0734: unknown co seeeeelect from tab;
         1.54.000000 PM mmand beginning "see
                        eeelect..." - rest o
                        f line ignored.

SEC      06-MAY-10 03.5 ORA-00928: missing S create table t as as
         1.55.000000 PM ELECT keyword         select * from user_
                                             objects

可见,曾经发生的错误信息一览无余。

6.使用commit命令可以永久记录这些报错信息
若想将报错信息永久的保留下来,只需要在session中输入commit命令便可。

7.Oracle 11gR2官方文档中参考信息
http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch12040.htm#SQPUG160

8.小结
通过参数errorlogging的设置,可以非常便捷的开启错误信息记录功能。当在SQL*Plus中调试脚本或SQL语句时,该功能起到非常重要的作用。
另外,通过这个错误记录功能,也可以建立一个误操作自检库,以便自省吾身。

Good luck.

secooler
10.05.06

-- The End --

时间: 2024-10-23 14:36:43

【SQL*Plus】11g版本对 SQL*Plus错误日志的记录功能——errorlogging参数的相关文章

nginx 错误日志经常记录这些东西

问题描述 nginx 错误日志经常记录这些东西 2016/05/20 11:46:13 [error] 32602#0: *792251 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 5.178.86.75, server: localhost, request: "POST http://check.best-prox

SQL Server数据库状态监控 - 错误日志

无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因.Windows Event Log和 SQL Server Error Log就是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件. 一. 错误日志简介 1. Windows事件日志与SQL Server 错误日志 Windows事件日志中,应用程序里的SQL Server和

2. SQL Server数据库状态监控 - 错误日志

原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因.Windows Event Log和 SQL Server Error Log就是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件. 一. 错误日志简介 1. Windows事件日志与SQL Server 错误日志

SQL Server错误日志过滤(ERRORLOG)

一.背景 有一天我发现SQL Server服务器的错误日志中包括非常多关于sa用户的登陆错误信息:"Login failed for user 'sa'. 原因: 评估密码时出错.[客户端: XX.XX.XX.XX]".可是我很久之前就已经禁用了sa用户,怎么还会有那么多的sa用户登陆信息呢?我猜想是有人在暴力破解我们数据库的sa用户的密码:关于这种攻击,大家有没好的解决方案呢? 我查找了一些资料,暂时没有找到好的解决方案.我只想到一个暂时缓解压力的办法,那就是从错误信息中统计出登陆s

Sql Server 代理错误日志知多少

  一 概述 默认情况下,SQL Server 代理创建错误日志来记录警告和错误.日志中显示下列警告和错误: 警告消息,提供有关潜在问题的信息,例如"作业 在执行时被删除". 错误消息,通常需要系统管理员干预,例如"无法启动邮件会话".可以通过 net send 将错误消息发送给特定用户或计算机. 默认情况下,执行跟踪消息不写入 SQL Server代理日志错误,因为它们会将日志填满.如果错误日志已满,会降低选择和分析更严重的错误的能力.因为日志会增加服务器的处理负

DML错误日志表

前天写了篇文章<表中已存重复数据的情况,如何增加唯一性约束?>,提到了存在唯一约束前提下,重复数据的问题. 很感谢建荣兄,他给我补充了两点, 1. 冲突数据也可以考虑通过errorlog的方式,可以很快定位. 2. 对于含有null的复合索引,mysql和oracle的结果完全不同. 对于第二点,前同事曌哥,碰巧也说到了,MySQL下和Oracle的些许不同,这块我需要验证下,才能体会得更清楚些. 对于第一点,之前没用过,借着这次机会,学习一下. 我们先直接看使用过程.首先测试表有两条数据,并

MySQL错误日志总结

MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息.错误日志的命名通常为hostname.err.其中,hostname表示服务器主机名. The error log contains information indicating when mysqld was started and stopped and also any critical errors that occur while the server is running.

PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子_php技巧

在PHP程序运行过程中如果有错误发生,在浏览器上是否显示错误信息,以及显示错误信息的级别是我们在程序开发.调试.运营过程中需要控制的.下面就通过设置php.ini,控制PHP错误信息(errors)的屏蔽和显示作如下说明:1.错误信息是否显示     复制代码 代码如下: 显示错误 display_errors = On     屏蔽错误 display_errors = Off (缺省值) 2.显示错误信息的级别     复制代码 代码如下: error_reporting = E_ALL (

PHP错误日志的使用及汇总

对于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息而遭到黑客攻击.但是,任何一个产品在投入使用后,都难免会有错误出现,那么如何记录一些对开发者有用的错误报告呢? 我们可以在单独的文本文件中将错误报告作为日志记录.错误日志的记录,可以帮助开发人员或者 管理人员查看系统是否存在问题. 如果需要将程序中的错误报告写入错误日志中,只要在PHP的配置文件中,将配置指令log_errors开启即可.错误报告默认就