1 .一种基于事务并发解析的oracle数据库增量数据采集方法,其特征在于,包括:
根据SCN起点、终点,基于logmnr操作产生Oracle日志结果集;
事务管理线程依次获取Oracle日志结果集的每一条日志结果行,根据日志结果行的事
务号XID分配到对应的事务缓存;
事务管理线程将事务提交给事务解析线程池并发解析;
各事务解析线程获取要解析的完整事务,同时自增分配事务序号;
当前事务的事务解析线程对当前事务进行解析,解析完成后尝试拿锁;若上一条事务
尚未完成解析和数据发送,锁状态尚未释放,则等待;若上一条事务已完成解析和数据发
送,锁状态已释放,则当前事务的事务解析线程拿到锁,将当前事务的数据发送到事件队列
中,然后释放锁。
2 .如权利要求1所述的基于事务并发解析的oracle数据库增量数据采集方法,其特征
在于,所述锁包括自定义同步锁,锁的内部自定义从1开始的自增序号,与事务序号一一对
应,当事务解析线程尝试拿锁时,只有当前事务序号和当前锁序号一致才可以拿到锁,独占
进行数据发送,数据发送完成后锁被释放,锁序号自增1。
3 .如权利要求1所述的基于事务并发解析的oracle数据库增量数据采集方法,其特征
在于,所述事务管理线程将事务提交给事务解析线程池并发解析步骤之前,还包括大事务
筛选步骤,包括:
判断当前事务缓存是否是大事务缓存,如果是,更新记录大事务SCN起点、终点和事务
号XID,继续获取下一条日志结果行,等待该事务提交下发进行大事务解析;如果不是,则将
该事务分配到对应的普通事务缓存;
判断当前普通事务缓存是否超过大事务阈值,如果没有超过阈值,则继续获取下一条
日志结果行,等待该事务提交下发进行普通事务解析;如果超过阈值,则清空日志结果行记
录缓存,只记录事务SCN起点、终点和事务号XID,标记为大事务缓存,然后继续获取下一条
日志结果行,等待该事务提交下发进行大事务解析。
4 .如权利要求3所述的基于事务并发解析的oracle数据库增量数据采集方法,其特征
在于,还包括大事务解析步骤,包括:
事务解析线程按照大事务SCN起点、终点和事务号XID进行logmnr解析操作,过滤出该
事务的redo日志结果集,依次对日志结果行进行解析,当增量数据达到批次阈值时,将解析
到的增量数据分发到采集数据队列,直到该大事务全部解析完。
5 .一种基于事务并发解析的oracle数据库增量数据采集装置,其特征在于,包括:
日志结果集生成模块,用于根据SCN起点、终点,基于logmnr操作产生Oracle日志结果
集;
缓存分配模块,用于事务管理线程依次获取Oracle日志结果集的每一条日志结果行,
根据日志结果行的事务号XID分配到事务缓存中;
事务提交模块,用于事务管理线程将事务提交给事务解析线程池并发解析;
事务序号分配模块,用于各事务解析线程获取要解析的完整事务,同时自增分配事务
序号;
事务解析模块,用于当前事务的事务解析线程对当前事务进行解析,解析完成后尝试
拿锁;若上一条事务尚未完成解析和数据发送,锁状态尚未释放,则等待;若上一条事务已
权 利 要 求 书
1/2 页
2
文档被以下合辑收录
相关文档
评论