• 监控和审计 Oracle 数据库错误


    这个方法在开发数据库期间可能没什么用,但是在产品环境中你可能尝试查看和跟踪数据库的错误信息。

    首先我们创建一个表来存储错误信息,必须确保每个人都有访问这个表的权限

    01 CREATE TABLE error_log (
    02   server_error VARCHAR2(100),
    03   osuser VARCHAR2(30),
    04   username VARCHAR2(30),
    05   machine VARCHAR2(64),
    06   process VARCHAR2(24),
    07   program VARCHAR2(48),
    08   stmt VARCHAR2(4000),
    09   msg VARCHAR2(4000),
    10   date_created DATE 
    11 )

    然后创建如下触发器,触发条件:"AFTER SERVERERROR ON DATABASE":

    01 CREATE OR REPLACE
    02 TRIGGER error_log_trigger
    03     AFTER SERVERERROR ON DATABASE
    04 DECLARE
    05     username_  error_log.username%TYPE;
    06     osuser_    error_log.osuser%TYPE;
    07     machine_   error_log.machine%TYPE;
    08     process_   error_log.process%TYPE;
    09     program_   error_log.program%TYPE;
    10   stmt_      VARCHAR2(4000);
    11   msg_       VARCHAR2(4000);
    12   sql_text_  ora_name_list_t;
    13 BEGIN
    14   
    15   FOR i IN 1..NVL(ora_sql_txt(sql_text_), 0) LOOP 
    16     stmt_ := SUBSTR(stmt_ || sql_text_(i) ,1,4000);
    17   END LOOP;
    18   
    19   FOR i IN 1..ora_server_error_depth LOOP
    20     msg_ := SUBSTR(msg_ || ora_server_error_msg(i) ,1,4000);
    21   END LOOP;
    22   
    23   SELECT osuser, username, machine, process, program
    24   INTO   osuser_, username_, machine_, process_, program_
    25   FROM   sys.v_$session
    26   WHERE  audsid = USERENV('SESSIONID');
    27   
    28   INSERT INTO error_log VALUES (dbms_standard.server_error(1), osuser_, username_, machine_, process_, program_, stmt_, msg_, SYSDATE);
    29 END;

    等一等,可能表里就有错误信息了:)

  • 相关阅读:
    vue.js 快速入门
    简洁的MVC思想框架——Nancy(Post操作与外部引用css和JS)
    简洁的MVC思想框架——Nancy(环境配置与Get操作)
    iOS开发之注册推送通知权限
    iOS开发之数组排序
    iOS开发之打包上传报错: ERROR ITMS-90087/ERROR ITMS-90125
    iOS开发之HTTP与HTTPS网络请求
    iOS开发之GCD同步主线程、异步主线程
    iOS开发之获取时间戳方法
    iOS开发之将字典、数组转为JSON字符串方法
  • 原文地址:https://www.cnblogs.com/shihao/p/2804349.html
Copyright © 2020-2023  润新知