`
accpxudajian
  • 浏览: 458114 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle使用存储过程实现日志记录.sql

阅读更多

--这段sql语句是用来实现oracle后台记录操作日志的,代替或者补充应用系统的操作日志。

--1.对应的日志记录表
-------------------------------------------------------------------
create table TEST
(
  T_ID   NUMBER(4),
  T_NAME VARCHAR2(20),
  T_AGE  NUMBER(2),
  T_SEX  CHAR(1)
);
----------------------对应的日志记录表---------------------------END

--2.建立触发器(触发器实现日志记录)

--2.1开启屏幕输出:(需要在命令行登陆sqlplus后执行)
sql>set serveroutput on;--在doc窗口和tomcat下可以捕捉到这些输出信息。
------------------------------------------------------------------

CREATE OR REPLACE TRIGGER test_trigger
AFTER DELETE OR INSERT OR UPDATE ON test for each row -- for each row是为了使用:new和old
DECLARE
v_type VARCHAR2(15);
BEGIN
IF INSERTING THEN
  v_type := 'INSERT'||:new.T_NAME;--oracle添加链接字符串使用||
  DBMS_OUTPUT.PUT_LINE('记录'||:new.T_NAME||'已经成功插入,并已记录到日志');--添加 只有new
ELSIF UPDATING THEN
  v_type := 'UPDATE'||:old.T_NAME;
  DBMS_OUTPUT.PUT_LINE('记录'||:old.T_NAME||'已经成功更新,并已记录到日志');--更新有new和old
ELSIF DELETING THEN
  v_type := 'DELETE'||:old.T_NAME;
  DBMS_OUTPUT.PUT_LINE('记录'||:old.T_NAME||'已经成功删除,并已记录到日志');--删除只有old
END IF;
  my_pro(v_type);
END;
----------------------建立触发器------------------------------------END

--3.建立日志表。
----------------------------------------------------------------
create table TEST_LOG_1
(
  L_USER VARCHAR2(15),
  L_TYPE VARCHAR2(15),
  L_DATE VARCHAR2(30)
);
--------------------建立日志表---------------------------------END


--4.建存储过程(注意一定要加上PRAGMA AUTONOMOUS_TRANSACTION;让这个存储过程有自治的事务控制,不然会影响A的事务控制)
----------------------------------------------------------------
create or replace procedure my_pro(v_type varchar2)
as
PRAGMA AUTONOMOUS_TRANSACTION;--设置为自治事务且必须加上commit,否则报commit非法。
begin
       INSERT INTO TEST_LOG_1 VALUES(user,v_type,TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss'));
       commit;
end;
-------------------建存储过程-------------------------------------END

--最后我们在A中输入以下测试语句:
INSERT INTO test VALUES(1,'zhao',22,'M');
UPDATE test SET t_name = '30' WHERE t_id = 1;
DELETE test WHERE t_id = 1;

SELECT * FROM test;
SELECT * FROM TEST_LOG_1;

 

 

 

分享到:
评论

相关推荐

    oracle jdbc dirver

    它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...

    Oracle-SQL基础到存储过程下载(第四阶段)

    068.sql全套_程序设计_动态sql.mp4 069.sql全套_程序设计_存储过程.mp4 070.sql全套_程序设计_全量抽数.mp4 071.sql全套_程序设计_增量抽数.mp4 072.sql全套_程序设计_merge_into.mp4 073.sql全套_程序设计_传入传出...

    For.Dummies.Oracle.PL.SQL.For.Dummies.Jun.2006.

    根据提供的文件信息,我们可以推断出这是一本关于Oracle PL/SQL编程的指南书籍,书名为《Oracle PL/SQL For Dummies》,出版于2006年6月,作者是Michael Rosenblum和Dr. Paul Dorsey。下面将对书中可能涉及的一些...

    精通oracle.10g.pl.sql编程.pdf

    触发器可以用来维护数据完整性、执行审计日志记录等任务。 ### 性能调优技巧 1. **索引使用**:合理创建和使用索引可以显著提高查询速度。 2. **批量处理**:尽量减少网络往返次数,比如使用批量插入、更新等操作...

    查看登录oracle数据库用户记录.docx

    要查看登录 Oracle 数据库的用户记录,可以使用触发器来实现。触发器是一种特殊的存储过程,它可以在特定的事件发生时自动执行。要查看登录 Oracle 数据库的用户记录,可以创建一个临时日志表,并建立一个数据库表...

    精通Oracle.10g.Pl.SQL编程

    9. 错误处理和日志记录:学习如何在PL/SQL中捕获和处理错误,以及如何有效地记录和追踪程序运行日志。 10. Oracle API和连接工具:了解如何使用Oracle提供的API与其他编程语言(如.NET、Java、C#、Struts)进行交互...

    深入分析oracle日志文件

    Oracle 日志文件是 Oracle 数据库管理员 (DBA) 实现数据库恢复和追踪用户操作的重要工具。通过分析 Oracle 日志文件,可以追踪用户的恶意操作、恢复误删除的数据、执行事后审计等。Oracle 公司提供的 LogMiner 是一...

    linux可用11g的Hr_main.sql

    4. **日志和错误处理**:在执行脚本时,开启日志记录,以便分析和调试可能出现的问题。 5. **备份与恢复**:在执行重要操作前,应先备份数据库,以防意外情况。 总的来说,这个Hr_main.sql脚本提供了在Linux环境下...

    com.oracle.ojdbc7jar包下载.zip

    这个jar文件是Oracle JDBC驱动程序的一部分,它实现了Java Database Connectivity (JDBC) API,允许Java开发者通过编写Java代码来执行SQL语句,管理Oracle数据库的数据。 首先,我们来深入了解JDBC。JDBC是Java平台...

    精通Oracle 10g PL.SQL编程

    4. **集合和记录类型**:学习使用PL/SQL内置的集合类型(如VARRAY和NESTED TABLE),以及自定义记录类型,实现更复杂的逻辑操作。 5. **动态SQL**:理解动态SQL的概念,如何使用EXECUTE IMMEDIATE和PREPARE语句执行...

    Oracle-SQL.rar_oracle_oracle sql_sql

    在“Oracle-SQL.rar”这个压缩包中,包含了一份名为“Oracle SQL.ppt”的文件,这可能是一个PowerPoint演示文稿,用于详细讲解Oracle数据库的基础知识和SQL语言的使用。下面,我们将深入探讨一些Oracle SQL的基础...

    加密Oracle存储过程.doc

    Oracle数据库中的存储过程是数据库管理员和开发者常用的工具,用于封装一系列的SQL和PL/SQL语句,以便在需要时重复调用。为了增强安全性,有时我们需要对这些存储过程进行加密,防止未授权的访问和阅读。本文将详细...

    OCA.Oracle.Database.11g.SQL.Fundamentals.I.Exam.Guide.Exam.1Z0-051.May.2008.eBook-DDU

    《OCA.Oracle.Database.11g.SQL.Fundamentals.I.Exam.Guide.Exam.1Z0-051.May.2008.eBook-DDU》是针对Oracle数据库11g SQL基础I认证考试(1Z0-051)的一本指南。这个电子书详细介绍了备考者需要掌握的关键概念和技术...

    记使用Oracle SQL Developer 迁移MySql 数据至 Oracle.docx

    本文将详细讲解如何使用Oracle SQL Developer工具进行这样的迁移过程,以及如何解决在迁移过程中遇到的问题。 首先,确保你拥有正确的工具。在这个案例中,你需要MySQL 5.6.37、Oracle 11g以及Oracle SQL Developer...

    通过Mybatis拦截器自动定位慢SQL并记录日志

    // 实现日志记录逻辑,例如使用Log4j或SLF4J } } ``` 在这里,我们需要定义一个慢SQL的阈值(SLOW_SQL_THRESHOLD),当SQL执行时间超过这个阈值时,我们就认为它是慢SQL,并将其记录下来。`logSlowSql`方法则负责...

    SQLserver、Oracle、Mysql语法与用法对比.doc

    - SQL Server 提供 `sp_grantlogin` 和 `sp_addlogin` 存储过程 - Oracle 和 MySQL 方法未详述 19. **创建数据库用户**: - SQL Server 使用 `EXEC sp_grantdbaccess 'windows 域名\密码', '数据库用户名'` - ...

    Oracle.Database.11g.PL.SQL.Programming

    - **C#**:通过ADO.NET等技术,C#应用程序可以直接调用Oracle数据库中的PL/SQL存储过程。 #### 5. 实战案例分析 - **数据迁移**:使用PL/SQL编写脚本进行数据转换和迁移。 - **报表生成**:通过PL/SQL脚本自动化...

    pl sql批量执行多个sql文件和存储过程

    本文将详细介绍如何使用PL/SQL Developer来实现这一功能。 #### 一、环境准备 为了确保能够顺利执行批量操作,首先需要进行一些基础设置: 1. **Oracle环境**:确保已经安装了Oracle数据库服务器,并且创建了一个...

Global site tag (gtag.js) - Google Analytics