Oracle 日志记录工具类
发布时间:2020-12-12 13:41:35 所属栏目:百科 来源:网络整理
导读:在我们编写存储过程,或者PKG时,总有一些异常情况考虑不到;为了快速排查定位问题,需要及时记录异常日志; ? 1.建表语句 : 异常日志表;正常日志表 create table SSS.TC_EXCEPTION_LOG( log_id NUMBER(20) not null,package_name VARCHAR2(120),proc_name V
在我们编写存储过程,或者PKG时,总有一些异常情况考虑不到;为了快速排查定位问题,需要及时记录异常日志; ? 1.建表语句 : 异常日志表;正常日志表 create table SSS.TC_EXCEPTION_LOG ( log_id NUMBER(20) not null,package_name VARCHAR2(120),proc_name VARCHAR2(120),exception_tm DATE default sysdate,exception_code VARCHAR2(200),exception_desc VARCHAR2(1000),exception_remk VARCHAR2(600),line_no NUMBER(10) ); comment on table SSS.TC_EXCEPTION_LOG is ‘系统异常日志数据‘; comment on column SSS.TC_EXCEPTION_LOG.log_id is ‘主键‘; comment on column SSS.TC_EXCEPTION_LOG.package_name is ‘包名‘; comment on column SSS.TC_EXCEPTION_LOG.proc_name is ‘过程名‘; comment on column SSS.TC_EXCEPTION_LOG.exception_tm is ‘异常时间‘; comment on column SSS.TC_EXCEPTION_LOG.exception_code is ‘异常编码‘; comment on column SSS.TC_EXCEPTION_LOG.exception_desc is ‘异常描述‘; comment on column SSS.TC_EXCEPTION_LOG.exception_remk is ‘异常说明‘; comment on column SSS.TC_EXCEPTION_LOG.line_no is ‘异常行号‘; create index SSS.IDX_TC_EXCEPTION_LOG1 on SSS.TC_EXCEPTION_LOG (PROC_NAME); alter table SSS.TC_EXCEPTION_LOG add constraint IPK_TC_EXCEPTION_LOG primary key (LOG_ID); create table SSS.TC_EXECUTE_LOG ( log_id NUMBER(20) not null,package_name VARCHAR2(120),proc_name VARCHAR2(120),strat_tm DATE default sysdate not null,end_tm DATE,spend_tm NUMBER(10),ref_data_rows NUMBER(10),remk VARCHAR2(1000) ); comment on table SSS.TC_EXECUTE_LOG is ‘公用执行日志表‘; comment on column SSS.TC_EXECUTE_LOG.log_id is ‘执行日志ID‘; comment on column SSS.TC_EXECUTE_LOG.package_name is ‘包名‘; comment on column SSS.TC_EXECUTE_LOG.proc_name is ‘过程名‘; comment on column SSS.TC_EXECUTE_LOG.strat_tm is ‘执行开始时间‘; comment on column SSS.TC_EXECUTE_LOG.end_tm is ‘执行结束时间‘; comment on column SSS.TC_EXECUTE_LOG.spend_tm is ‘执行花费时间(单位: 0.01秒)‘; comment on column SSS.TC_EXECUTE_LOG.ref_data_rows is ‘执行涉及数据量‘; comment on column SSS.TC_EXECUTE_LOG.remk is ‘注释‘; create index SSS.INK_TC_EXECUTE_LOG_01 on SSS.TC_EXECUTE_LOG (PACKAGE_NAME,PROC_NAME,REMK); create index SSS.INK_TC_EXECUTE_LOG_02 on SSS.TC_EXECUTE_LOG (STRAT_TM); alter table SSS.TC_EXECUTE_LOG add constraint IPK_TC_EXECUTE_LOG primary key (LOG_ID,STRAT_TM);
2. 记录异常的PKG ? ?CREATE OR REPLACE PACKAGE BODY SSS.PKG_SYS_LOG IS --************************************************************* -- AUTHOR : KELIVEN LIU -- CREATED : 2008-05-20 -- PURPOSE : 记录系统中存储过程运行日志 -- PARAMETER: -- P_PACKAGE_NAME VARCHAR2 包名 -- P_PROC_NAME VARCHAR2,过程名 -- P_EXCEP_DT DATE,执行日期 -- P_EXCEP_CODE VARCHAR2,异常代码 -- P_EXCEP_DESC VARCHAR2,异常描述信息 -- P_EXCEP_REMK VARCHAR2,备注,可能的值为‘BEGIN‘,‘END‘,‘ERROR‘ -- P_LINE_NO NUMBER 行号 -- MODIFY HISTORY -- PERSON DATE COMMENTS -- ------------------------------------------------------------- --************************************************************* --************************************************************* -- AUTHOR : KELIVEN LIU -- CREATED : 2008-05-20 -- PURPOSE : 记录系统中存储过程运行日志 -- PARAMETER: -- NAME TYPE DESC -- P_SEQ_NO NUMBER 发生异常存储过程中主要sequence的当前值 -- P_PROC_NAME VARCHAR2 存储过程名 -- P_EXCEP_DT DATE 时间,包括开始时间,结束时间,异常发生时间 -- P_EXCEP_CODE VARCHAR2 异常代码 -- P_EXCEP_DESC VARCHAR2 异常描述信息 -- P_EXCEP_REMK VARCHAR2 备注,可能的值为‘BEGIN‘,‘ERROR‘ -- P_LINE_NO NUMBER 行号 -- P_PACKAGE_NAME VARCHAR2,包名 -- P_PROC_NAME VARCHAR2,过程名 -- P_EXEC_START_TM DATE,执行开始时间 -- P_EXEC_END_TM DATE,执行结束时间 -- P_EXEC_PEND_TM NUMBER,执行花费时间 -- P_EXEC_REF_DATA_ROWS NUMBER,涉及数据量 -- P_EXEC_REMK VARCHAR2 备注,可能的值为‘BEGIN‘,‘ERROR‘ -- MODIFY HISTORY -- PERSON DATE COMMENTS -- ------------------------------------------------------------- --************************************************************* PROCEDURE ERROR_LOG(P_PACKAGE_NAME VARCHAR2,P_PROC_NAME VARCHAR2,P_EXCEP_DT DATE,P_EXCEP_CODE VARCHAR2,P_EXCEP_DESC VARCHAR2,P_EXCEP_REMK VARCHAR2,P_LINE_NO NUMBER) AS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO TC_EXCEPTION_LOG (LOG_ID,PACKAGE_NAME,EXCEPTION_TM,EXCEPTION_CODE,EXCEPTION_DESC,EXCEPTION_REMK,LINE_NO) VALUES (SEQ_LOG.NEXTVAL,SUBSTR(P_PACKAGE_NAME,1,120),SUBSTR(P_PROC_NAME,P_EXCEP_DT,SUBSTR(P_EXCEP_CODE,200),SUBSTR(P_EXCEP_DESC,1000),SUBSTR(P_EXCEP_REMK,600),P_LINE_NO); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(‘STP_RUNNING_LOG‘ || SQLCODE || ‘:‘ || SQLERRM); ROLLBACK; END ERROR_LOG; ---系统执行日志 PROCEDURE EXECUTE_LOG(P_PACKAGE_NAME VARCHAR2,P_PROC_NAME VARCHAR2,P_EXEC_START_TM DATE,P_EXEC_END_TM DATE,P_EXEC_PEND_TM NUMBER,P_EXEC_REF_DATA_ROWS NUMBER,P_EXEC_REMK VARCHAR2) AS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO TC_EXECUTE_LOG (LOG_ID,STRAT_TM,END_TM,SPEND_TM,REF_DATA_ROWS,REMK) VALUES (SEQ_LOG.NEXTVAL,P_EXEC_START_TM,P_EXEC_END_TM,P_EXEC_PEND_TM,P_EXEC_REF_DATA_ROWS,SUBSTR(P_EXEC_REMK,1000)); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(‘TC_EXECUTE_LOG‘ || SQLCODE || ‘:‘ || SQLERRM); ROLLBACK; END EXECUTE_LOG; END PKG_SYS_LOG; / (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |