[20121214]数据库错误记录.txt

[20121214]数据库错误记录.txt

--自己参照许多文档,写了一个检测数据库错误的例子:
--以sys用户登录,建立表
CREATE TABLE SYS.ERROR_LOG
(
  IP_ADDRESS       VARCHAR2(30 BYTE),
  USERNAME         VARCHAR2(30 BYTE),
  INSTANCE_NUMBER  NUMBER(2),
  THEDATE          DATE,
  ERRORMSG         VARCHAR2(4000 BYTE),
  OTHERMSG         VARCHAR2(4000 BYTE),
  SQLSTMT          VARCHAR2(4000 BYTE)
) TABLESPACE TOOLS; ;

--最好放在单独建立一个表空间,不要与system表空间在一起。

/* Formatted on 2012/12/14 09:27 (Formatter Plus v4.8.8) */
--
-- LOG_ERRORS  (Trigger)
--
--  Dependencies:
--   STANDARD (Package)
--   DBMS_STANDARD (Package)
--   INSTANCE_NUM (Function)
--   ORA_INSTANCE_NUM (Synonym)
--   LOGIN_USER (Function)
--   ORA_LOGIN_USER (Synonym)
--   ORA_SQL_TXT (Synonym)
--   ORA_SERVER_ERROR_MSG (Synonym)
--   ORA_SERVER_ERROR_DEPTH (Synonym)
--   ORA_SERVER_ERROR_DEPTH ()
--   ERROR_LOG (Table)
--   ORA_SERVER_ERROR_MSG ()
--   ORA_SQL_TXT ()
--   ORA_INSTANCE_NUM ()
--   ORA_LOGIN_USER ()
--   V$SESSION (View)
--   V$MYSTAT (View)
--
CREATE OR REPLACE TRIGGER SYS.log_errors
   AFTER SERVERERROR ON DATABASE
DECLARE
   sqltext       ora_name_list_t;
   errmsg        VARCHAR2 (4000) := NULL;
   errstmt       VARCHAR2 (4000) := NULL;
   errothermsg   VARCHAR2 (4000) := NULL;
BEGIN
   IF ( -- NOT is_servererror (904)
-- AND NOT is_servererror (942)
--  AND NOT is_servererror (937)
--  AND NOT is_servererror (1002)
--  AND NOT is_servererror (1003)
--  AND
       NOT is_servererror (942) AND NOT is_servererror (1407)
--       AND NOT is_servererror (1430)
--       AND NOT is_servererror (54)
--       AND NOT is_servererror (6550)
-- AND NOT is_servererror (936)
      )
   THEN
      FOR DEPTH IN 1 .. ora_server_error_depth
      LOOP
         errmsg := errmsg || ora_server_error_msg (DEPTH);
      END LOOP;

      FOR cntr IN 1 .. ora_sql_txt (sqltext)
      LOOP
         errstmt := errstmt || sqltext (cntr);
      END LOOP;

      SELECT 'sid:' || SID || ' SERIAL#: ' || serial# || ' terminal:' || terminal || ' program:' || program || ' module:'
             || module
        INTO errothermsg
        FROM v$session
       WHERE SID = (SELECT SID
                      FROM v$mystat
                     WHERE ROWNUM = 1);

      INSERT INTO error_log
                  (ip_address, username, instance_number, thedate, errormsg, othermsg,
                   sqlstmt
                  )
           VALUES (SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), ora_login_user, ora_instance_num, SYSDATE, errmsg, errothermsg,
                   errstmt
                  );
   END IF;
END;
/

--ALTER TRIGGER SYS.LOG_ERRORS DISABLE;

--如果一些错误不想监测,加入NOT is_servererror (XXX),XXX表示错误号。
--也可以disable,在需要的时候打开。

时间: 2024-09-21 17:33:24

[20121214]数据库错误记录.txt的相关文章

[20170512]ora-00600[2662]错误3.txt

[20170512]ora-00600[2662]错误3.txt --//前一阵子的测试:链接http://blog.itpub.net/267265/viewspace-2137424/ --//本想测试修改一些重要的信息块,结果提升了scn的结果,但是如果异常关闭,就没有这样的结果. --//前几看http://www.itpub.net/thread-2087326-1-1.html --//很奇怪看到的scn号减少的,理论讲出现这个错误,如果不断重启scn号每次加1,差距不大可以追上.

5种易犯的PHP数据库错误

 5种易犯的PHP数据库错误---包括数据库模式设计.数据库访问和使用数据库的业务逻辑代码---以及它们的解决方案. 如果只有一种 方式使用数据库是正确的--  您可以用很多的方式创建数据库设计.数据库访问和基于数据库的 PHP 业务逻辑代码,但最终一般以错误告终.本文说明了数据库设计和访问数据库的 PHP 代码中出现的五个常见问题,以及在遇到这些问题时如何修复它们. 问题 1:直接使用 MySQL 一个常见问题是较老的 PHP 代码直接使用 mysql_ 函数来访问数据库.清单 1 展示了如何

[华为机试练习题]36.简单错误记录

题目 描述: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: 2. 超过16个字符的文件名称,只记录文件的最后有效16个字符: 3. 输入的文件可能带路径,记录文件名称不能带路径. 题目类别: 字符串 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 一行或多行字符串.每行包括带路径文件名称,行号,以空格

php连接Access数据库错误及解决方法_php技巧

php+access连接数据库常用的方式一般有两种. 推荐的代码 需要注意php获取路径用的是realpath 复制代码 代码如下: <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $i

C#向SQL数据库插入记录的问题!!!

问题描述 我的代码:try{if(textBox1.Text!=""){//设定数据连接字符串,此字符串的意思是打开Sqlserver数据库,服务器名称为server1,数据库为data1,用户名为sa.stringstrCon="Provider=SQLOLEDB.1;PersistSecurityInfo=False;InitialCatalog=通讯录;UserID=sa;DataSource=JUJUMAO";OleDbConnectionmyConn=ne

[20170515]检查数据库scn脚本.txt

[20170515]检查数据库scn脚本.txt --//简单写一个脚本检查数据库各个scn的大小: column TABLESPACE_NAME format a20 SELECT b.file#       ,b.name       ,c.STATUS       ,c.FUZZY       ,a.checkpoint_change# "数据库记录的scn"       ,b.checkpoint_change# "控制文件记录的开始scn"       ,

[20150408]只读表空间以及数据库恢复2.txt

[20150408]只读表空间以及数据库恢复2.txt --昨天检查时发现1个小问题,就是有1个表空间设置只读,也许某个时间打开变成读写,又设置会只读,而备份仅仅在第1次设置只读时做过1次, --按照道理如果使用原来的备份恢复会存在问题的,自己测试1下,顺便看看有什么变通的方法解决这个问题. 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING                    VERSION        BANNER ----------------

[20150408]只读表空间以及数据库恢复4.txt

[20150408]只读表空间以及数据库恢复4.txt 参考链接: http://blog.itpub.net/267265/viewspace-1544583/ http://blog.itpub.net/267265/viewspace-1548059/ http://blog.itpub.net/267265/viewspace-1548967/ --上午做了测试,通过新建控制文件的方式来恢复,实际上更常用的方式使用bbed,修改数据文件块1,保持与控制文件的记录一致. --通过对比来看看

[20160526]bbed修复删除记录.txt

[20160526]bbed修复删除记录.txt --以前也做过,链接: http://blog.itpub.net/267265/viewspace-745944/ --自己当时完全是依葫芦画瓢,许多东西理解不深刻,重新做一次. 1.环境: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ --------------