Oracle DML操作实时监控系统(oracledml监控)

Oracle DML操作实时监控系统简介

Oracle DML操作实时监控系统是一个基于Oracle数据库的监控系统,主要监控DML(Data Manipulation Language)类型的操作,如INSERT、UPDATE、DELETE等操作,实时检测出影响系统表数据的变化,然后可以通过针对性的处理达到数据安全、正确性和一致性的要求。

Oracle DML操作实时监控系统的实现

Oracle DML操作实时监控系统的实现主要靠Oracle的Packaged 和UDT(User Defined Type)实现:

(1) 首先,创建一个Package,定义一些检测监控需要的类型(Type),主要包括以下几个阶段:

— 创建需要实时跟踪的表类型

create or replace TYPE table_list AS TABLE OF VARCHAR2(100);

— 创建需要实时跟踪的字段类型

create or replace TYPE field_list AS TABLE OF VARCHAR2(100);

— 创建需要实时准备实时监控SQL语句类型

create or replaceTYPE watch_sql AS TABLE OF VARCHAR2(400);

(2) 定义类型完毕后,在Package中定义一些变量来保存实时检测的参数,比如:

table_list tables;

field_list fields;

watch_sql sqls;

(3) 然后定义实时监控函数watch_dml(),检测Oracle DML操作:

function watch_dml

begin

— 使用条件检测是否存在DML操作

if tables.exists() then

— 遍历每个表,构建一条SQL语句

for i in tables.first()..tables.last()

loop

— 判断是否有指定字段,如果有用指定字段,否则,默认全部字段

if fields.exists() then

sqls.extend;

sqls(sqls.last) := ‘select ‘ || fields.first;

for j in fields.first()+1..fields.last()

loop

sqls(sqls.last) := sqls(sqls.last) || ‘, ‘ || fields(j);

end loop;

sqls(sqls.last) := sqls(sqls.last) ||

‘ from ‘ || tables(i);

else

sqls.extend;

sqls(sqls.last) := ‘select ‘ * ‘ from ‘ || tables(i);

end if;

end loop;

end if;

return sqls;

end watch_dml;

(4) 最后,使用定义的函数,使用SQL语句检测实时监控:

for i in sqls.first()..sqls.last() loop

begin

cursor cur_sql is select regtime, old_rec, new_rec from table_ name where rowid in

(select rowid from old_table minus select rowid from new_table);

open cursor cur_sql;

fetch cursor cur_sql into l_regtime, l_old_rec, l_new_rec;

add into log_table (regtime, old_rec, new_rec);

update log_table set regtime=l_regtime, old_rec=l_old_rec, new_rec=l_new_rec

end loop;

end;

Oracle DML操作实时监控系统的优势

Oracle DML操作实时监控系统能够快速准确地监控数据库表中DML类型的变更,并且可以定期把检测到的变更进行数据记录,以实现数据安全性,正确性和一致性的要求。同时,Oracle DML操作实时监控系统不仅实现了数据记录的功能,同时也具备应急恢复的能力,如果发现数据的异常及时发现,可以快速恢复原有数据。


数据运维技术 » Oracle DML操作实时监控系统(oracledml监控)