当前位置:我的异常网» Oracle技术 » oracle 怎么 监控数据变化

oracle 怎么 监控数据变化

www.myexceptions.net  网友分享于:2013-03-06  浏览:200次

oracle 如何 监控数据变化

oracle 有没有办法监控 一个试图或者一个查询语句的结果发生变化,当查询结果发生变化的时候发出通知。

另外就是性能问题,我的这个表每年会由3亿条数据,而且新增操作非常频繁,每秒新增6条数据以上。

现在要做的是当出现符合条件的数据就向前台发通知,怎么样做效率会更高。

------解决方案--------------------

1.Connect to the database AS SYSDBA.

2.Grant the required privileges to HR:

GRANT EXECUTE ON DBMS_CQ_NOTIFICATION TO HR;

GRANT CHANGE NOTIFICATION TO HR;

3.Enable the JOB_QUEUE_PROCESSES parameter to receive notifications:

ALTER SYSTEM SET "JOB_QUEUE_PROCESSES"=4;

4.Connect to the database as a non-SYS user (such as HR).

5.Create database tables to hold records of notification events received:

-- Create table to record notification events.

DROP TABLE nfevents;

CREATE TABLE nfevents (

regid NUMBER,

event_type NUMBER

);

-- Create table to record notification queries:

DROP TABLE nfqueries;

CREATE TABLE nfqueries (

qid NUMBER,

qop NUMBER

);

-- Create table to record changes to registered tables:

DROP TABLE nftablechanges;

CREATE TABLE nftablechanges (

qid NUMBER,

table_name VARCHAR2(100),

table_operation NUMBER

);

-- Create table to record ROWIDs of changed rows:

DROP TABLE nfrowchanges;

CREATE TABLE nfrowchanges (

qid NUMBER,

table_name VARCHAR2(100),

row_id VARCHAR2(2000)

);

CREATE OR REPLACE PROCEDURE chnf_callback (

ntfnds IN CQ_NOTIFICATION$_DESCRIPTOR

)

IS

regid NUMBER;

tbname VARCHAR2(60);

event_type NUMBER;

numtables NUMBER;

operation_type NUMBER;

numrows NUMBER;

row_id VARCHAR2(2000);

numqueries NUMBER;

qid NUMBER;

qop NUMBER;

BEGIN

regid := ntfnds.registration_id;

event_type := ntfnds.event_type;

INSERT INTO nfevents (regid, event_type)

VALUES (chnf_callback.regid, chnf_callback.event_type);

numqueries :=0;

IF (event_type = DBMS_CQ_NOTIFICATION.EVENT_QUERYCHANGE) THEN

numqueries := ntfnds.query_desc_array.count;

FOR i IN 1..numqueries LOOP -- loop over queries

qid := ntfnds.query_desc_array(i).queryid;

qop := ntfnds.query_desc_array(i).queryop;

INSERT INTO nfqueries (qid, qop)

VALUES(chnf_callback.qid, chnf_callback.qop);

numtables := 0;

numtables := ntfnds.query_desc_array(i).table_desc_array.count;

FOR j IN 1..numtables LOOP -- loop over tables

tbname :=

ntfnds.query_desc_array(i).table_desc_array(j).table_name;

operation_type :=

ntfnds.query_desc_array(i).table_desc_array(j).Opflags;

INSERT INTO nftablechanges (qid, table_name, table_operation)

VALUES (

chnf_callback.qid,

tbname,

operation_type

);

IF (bitand(operation_type, DBMS_CQ_NOTIFICATION.ALL_ROWS) = 0) THEN

numrows := ntfnds.query_desc_array(i).table_desc_array(j).numrows;

ELSE

numrows :=0; -- ROWID info not available

END IF;

-- Body of loop does not run when numrows is zero.

FOR k IN 1..numrows LOOP -- loop over rows

Row_id :=

ntfnds.query_desc_array(i).table_desc_array(j).row_desc_array(k).row_id;

INSERT INTO nfrowchanges (qid, table_name, row_id)

VALUES (chnf_callback.qid, tbname, chnf_callback.Row_id);

END LOOP; -- loop over rows

END LOOP; -- loop over tables

END LOOP; -- loop over queries

END IF;

COMMIT;

END;

/

DECLARE

reginfo CQ_NOTIFICATION$_REG_INFO;

mgr_id NUMBER;

dept_id NUMBER;

v_cursor SYS_REFCURSOR;

文章评论

oracle 表变化监控,oracle 怎么 监控数据变化相关推荐

  1. oracle表空间 unifor,Oracle 表空间的监控

    现在所有业务系统上面都部署了各种类型针对各方面的监控,那么咱们Oracle也不例外,也需要做关于oracle方面的监控,比如实例的存活状况,监听器的存活状况,系统的运行情况(包括,磁盘使用率,进程数, ...

  2. oracle表数据转换成sql,ORACLE8I转换数据到SQLSERVER数据库

    最近做一个项目的DOTNET版,说是升级,从ASP升为DOTNET,可因为项目架构原因,数据库得从ORACLE转为SQL SERVER...^_|| ,之前未使用过ORACLE,转换数据过程中碰到了不 ...

  3. oracle表分层,sql – 对非分层数据的Oracle分层查询

    我将一个Oracle表中的数据组织成可以包含循环的图(参见示例). CREATE TABLE T (parent INTEGER,child INTEGER) AS select 1 parent,2 ...

  4. oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置

    查看Oracle表中的指定记录位置 select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid, dbms_ro ...

  5. 查看Oracle表中的指定记录在数据文件中的位置

    查看Oracle表中的指定记录位置 select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid,        ...

  6. oracle 表空间 碎片,Oracle表空间碎片整理

    作为影响数据库性能的一个因素,数据库表空间碎片,应当引起DBA的重视,及时发现并整理碎片是DBA基本维护内容,以提高数据库性能. Oracle数据库表空间.段.区.块简述 表空间(tablesapce ...

  7. oracle表启用online,Oracle数据库启动与关闭

    C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>dir oracle.exe 驱动器 C 中的卷没有标签. 卷的序列号是 7E6 ...

  8. oracle表对比同步,Oracle表双向同步问题

    开发同学说有一个需求,需要在两个库之间同步一张表的数据 涉及到两个业务系统,这张表的内容用于页面展示 暂且称为A库和B库,表名都相同,称为T 该表只是新增,思考了下,有两个比较方便的方法: 1.定时将 ...

  9. oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)

    本文主要向大家介绍了Oracle数据库之Oracle表恢复(truncate),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.模拟truncate操作: SQL> c ...

  10. oracle表空间 设置,Oracle表空间怎么设置和管理

    前言 表空间是 Oracle 特有的一种逻辑结构,是管理和组织 Oracle 数据文件一种方式,一个Oracle 数据库能够有一个或多个表空间,而一个表空间则对应一个或多个物理的数据库文件.Oracl ...

最新文章

  1. Windows Azure 如何学习Azure
  2. 创建私有CA详细图解
  3. 桥牌笔记:当其它希望不存在时,才进行飞张
  4. javascript数据类型一览
  5. linux shell脚本写法,linux: 常用shell脚本写法
  6. Django入门:DoesNotExist: User matching query does not exist.
  7. 求解出n以内所有能被5整除的正整数的乘积_所有最常见最经典的算法题都在这里了...
  8. 五万pv的小程序需要什么服务器,一个公式,告诉你PV千万的刷屏小程序都是怎么玩的...
  9. 正则表达式--内功心法
  10. 学习嵌入式和单片机有没有必要,价值体现在哪
  11. 万字长文带你回顾Java集合框架
  12. 供水管道泄漏检测用水听器侦听系统的原因
  13. C#_.NET 类库简介
  14. linux ps -ang,PS顶级一键人像修图插件-DeliciousRetouchPlus
  15. 芝诺数解|「五」千言万语,都在锅里——重庆火锅
  16. linux系统显卡显存容量,Linux下检查显存大小
  17. 不借助idea开发工具构建一个Javaweb项目
  18. 前端开发中遇到常见问题总结
  19. java 从已知日期计算干支纪日_天干地支纪日怎么计算?
  20. 蓝光播放器中应用的触摸芯片

热门文章

  1. GiB 是什么?像 GB 是一样的吗?
  2. 基于浏览器的http普通请求与ajax请求
  3. 旧款华为笔记本解锁智慧语音教程
  4. 长篇好文,手机充电放电架构与工作流程原理讲解
  5. 实现简单的校园网自动登录
  6. APP软件项目迭代开发
  7. SHA-256算法实现
  8. ArcMap地理配准
  9. 【StringUtils】
  10. 什么是推挽输出,开漏输出?