首页 / 日志 / 监控日志:将之前写好的存储过程 添加日志
监控日志:将之前写好的存储过程 添加日志
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了监控日志:将之前写好的存储过程 添加日志,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4202字,纯文字阅读大概需要7分钟。
内容图文
![监控日志:将之前写好的存储过程 添加日志](/upload/InfoBanner/zyjiaocheng/986/185d5e15264041c5a7ba8435fab9c3a2.jpg)
-- 监控日志
使用日志的目录 :
1、记录程序执行的过程 。
2、通过日志可以分析 异常 对定位BUG很有帮助 。
我们一般通过分析错误日志 定位问题 。
oracle的日志 可以存放在我们的日志表中
CREATE TABLE T_LOG(LOG_ID VARCHAR2(32) ,
SP_NAME VARCHAR2(30) ,
SP_STATUS VARCHAR2(10) ,
SP_ST_DATE DATE ,
SP_FSDATE DATE ,
SP_DESC VARCHAR2(50)
) ;
SELECT * FROM T_LOG ;
/SELECT sys_GUID() FROM DUAL ; sys_GUID() 在oracle中通常作为 日志表的 ID 主键数据 。
SP_NAME VARCHAR2(30) 因为开发规范要求 对象名称 不允许超过 30 个字符 。/
记录日志的逻辑 :
CREATE PROCEDURE SP_XXXX
IS
BEGIN
在开始同步数 据之前记录一次开始日志 ,通过调用 记录日志的存储过程实现。
/ 中间是我们存储过程 更新数据的执行体 。/
在同步数据完成以后 记录一次完成日志 ,通过调用 记录日志的存储过程实现。
END ;
--- 每次记录日志 都需要 重复 INSERT INTO 日志表
我们可以通过存储过程 封装记录日志的动作/过程
CREATE OR REPLACE PROCEDURE SP_T_LOG(P_SPNAME IN VARCHAR2 , -- 过程名
P_STATUS IN VARCHAR2 , -- 执行状态
P_S_DATE IN DATE , -- 开始时间
P_F_DATE IN OUT DATE , -- 完成时间
P_DESC IN OUT VARCHAR2 -- 描述
)
IS
BEGIN
INSERT INTO T_LOG(LOG_ID, -- 主键 ID
SP_NAME, -- 过程名
SP_STATUS, -- 执行状态
SP_ST_DATE, -- 开始时间
SP_FSDATE, -- 完成时间
SP_DESC -- 描述
)
VALUES(
SYS_GUID() , -- 主键 ID
P_SPNAME , -- 过程名
P_STATUS , -- 执行状态
P_S_DATE , -- 开始时间
P_F_DATE , -- 完成时间
P_DESC -- 描述
);
COMMIT ;
END ;
-- 将之前写好的存储过程 添加日志
CREATE OR REPLACE PROCEDURE SP_EMP_BAK
IS
-- 定义记录日志所需的变量
V_SP_NAME VARCHAR2(30) ;
V_SP_STATUS VARCHAR2(10) ;
V_ST_DATE DATE ;
V_FS_DATE DATE ;
V_SP_DESC VARCHAR2(50) ;
BEGIN
-- 初始化变量
V_SP_NAME := 'SP_EMP_BAK' ;
V_SP_STATUS := '开始' ;
V_ST_DATE := SYSDATE ;
V_SP_DESC := '全量同步 目标表 EMP_BAK' ;
-- 同步数据之前记录开始日志
SP_T_LOG(V_SP_NAME ,
V_SP_STATUS ,
V_ST_DATE ,
V_FS_DATE,
V_SP_DESC ) ;
-- 先清空目标表的数据 ,为了支持 重跑
/DELETE FROM EMP_BAK WHERE 1 = 1 ; / -- 如果公司不允许使用 TRUNCATE 那么可以使用 DELETE 对表中的数据进行删除 。
-- DDL语句不能直接在 PLSQL 中使用 所以需要使用 动态SQL
EXECUTE IMMEDIATE 'TRUNCATE TABLE EMP_BAK ' ;
-- 然后 将源表 EMP 的数据 插入到 目标表 EMP_BAK 中
INSERT INTO EMP_BAK(EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO ,
DATA_DATE)
SELECT
EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO ,
SYSDATE
FROM EMP ;
COMMIT ;
----------------- 同步数据完成 记录结束日志
-- 再次初始化变量
V_SP_STATUS := '完成' ;
V_FS_DATE := SYSDATE ; -- 同步完成以后 将完成时间记录为当前的时间
V_SP_DESC := '完成 全量同步 目标表 EMP_BAK' ;
-- 同步数据之前记录开始日志
SP_T_LOG(V_SP_NAME ,
V_SP_STATUS ,
V_ST_DATE ,
V_FS_DATE,
V_SP_DESC ) ;
END SP_EMP_BAK;
--- 调用存储过程
BEGIN
SP_EMP_BAK ;
END ;
-- 查询目标表中数据是否刷新
SELECT FROM EMP_BAK ;
-- 查询日志表是否正常记录了执行日志
SELECT FROM T_lOG ;
-- 将之前写好的存储过程 添加日志
CREATE OR REPLACE PROCEDURE SP_EMP_BAK3 IS
-- 定义记录日志所需的变量
V_SP_NAME VARCHAR2(30) ;
V_SP_STATUS VARCHAR2(10) ;
V_ST_DATE DATE ;
V_FS_DATE DATE ;
V_SP_DESC VARCHAR2(50) ;
BEGIN
-- 初始化变量
V_SP_NAME := 'SP_EMP_BAK3' ;
V_SP_STATUS := '开始' ;
V_ST_DATE := SYSDATE ;
V_SP_DESC := '全量同步 目标表 EMP_BAK3' ;
-- 同步数据之前记录开始日志
SP_T_LOG(V_SP_NAME ,
V_SP_STATUS ,
V_ST_DATE ,
V_FS_DATE,
V_SP_DESC ) ;
------------------------------- 同步数据开始 ----------------------
DELETE FROM EMP_BAK3 WHERE 1 = 1;
INSERT INTO EMP_BAK3(DEPTNO,
DNAME,
CT_EMPNO,
AVG_SAL,
DATA_DATE)
SELECT E.DEPTNO, D.DNAME, COUNT(E.EMPNO), ROUND(AVG(E.SAL),2), SYSDATE
FROM EMP E
JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
GROUP BY E.DEPTNO, D.DNAME;
COMMIT;
------------------------------- 同步数据完成----------------------
-- 再次初始化变量
V_SP_STATUS := '完成' ;
V_FS_DATE := SYSDATE ; -- 同步完成以后 将完成时间记录为当前的时间
V_SP_DESC := '完成 全量同步 目标表 EMP_BAK3' ;
-- 同步数据之前记录开始日志
SP_T_LOG(V_SP_NAME ,
V_SP_STATUS ,
V_ST_DATE ,
V_FS_DATE,
V_SP_DESC ) ;
END SP_EMP_BAK3;
----- 通过复制粘贴的方式 完成了 第二个存储过程 监控日志
调用存储过程 验证功能是否正常
BEGIN
SP_EMP_BAK3;
END;
SELECT FROM EMP_BAK3 ;
SELECT FROM T_LOG ;
内容总结
以上是互联网集市为您收集整理的监控日志:将之前写好的存储过程 添加日志全部内容,希望文章能够帮你解决监控日志:将之前写好的存储过程 添加日志所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。