CN105868078B - 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 - Google Patents

基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 Download PDF

Info

Publication number
CN105868078B
CN105868078B CN201610232408.0A CN201610232408A CN105868078B CN 105868078 B CN105868078 B CN 105868078B CN 201610232408 A CN201610232408 A CN 201610232408A CN 105868078 B CN105868078 B CN 105868078B
Authority
CN
China
Prior art keywords
select
sql
capture
dml
dcl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610232408.0A
Other languages
English (en)
Other versions
CN105868078A (zh
Inventor
王贻亮
荣以平
乔学明
孙路远
刘乘麟
朱伟义
王鑫
郭聃
董爽爽
彭暄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Corp of China SGCC
Weihai Power Supply Co of State Grid Shandong Electric Power Co Ltd
Original Assignee
State Grid Corp of China SGCC
Weihai Power Supply Co of State Grid Shandong Electric Power Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Corp of China SGCC, Weihai Power Supply Co of State Grid Shandong Electric Power Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201610232408.0A priority Critical patent/CN105868078B/zh
Publication of CN105868078A publication Critical patent/CN105868078A/zh
Application granted granted Critical
Publication of CN105868078B publication Critical patent/CN105868078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库性能测试领域,具体地说是一种可以用于数据库性能测试基准中性能测试工具的查询生成器设计,用于生产库审计系统,用于生产库的性能监控,应用前景良好的基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于设有SQL解析服务器、RAC Oracle生产库单元,其中SQL解析服务器设有SELECT操作捕获模块、DML/DCL操作捕获模块、断点续传模块以及RAC心跳检测模块,其中SELECT操作捕获模块包括SELECT捕获模块、SELECT SQL生成模块;DML/DCL操作捕获模块包括DML/DCL SQL解封模块、DML/DCL SQL捕获模块,本发明与现有技术相比,具有极强的稳定性和可靠性,具有不间断严密监视数据库的一举一动同时又不影响正常的业务执行效率等特点。

Description

基于动态视图监控的Oracle RAC数据库SQL流捕获方法及 系统
技术领域
本发明涉及数据库性能测试领域,具体地说是一种可以用于数据库性能测试基准中性能测试工具的查询生成器设计,用于生产库审计系统,用于生产库的性能监控,应用前景良好的基于动态视图监控的Oracle RAC数据库SQL流捕获方法。
背景技术
Oracle数据库中的日志不对查询操作——即select语句作任何记录。利用日志解析只能实现对Oracle数据库中的DML(Data Manipulation Language)和DCL(Data ControlLanguage)操作的捕获。Oracle细粒度审计FGA(Fined Grained Auditing)支持对select查询操作的捕获,但是细粒度审计的代价极其昂贵,无法用于对大规模的生产系统进行全库监控。
由于Oracle 生产系统具有7*24小时不间断运行的特点,这要求SQL流捕获系统具有极强的稳定性和可靠性,必须具有不间断严密监视数据库的一举一动同时又不影响正常的业务执行效率等特点。
发明内容
本发明针对现有技术中存在的缺点和不足,提出了一种可以用于数据库性能测试基准中性能测试工具的查询生成器设计,用于生产库审计系统,用于生产库的性能监控,应用前景良好的基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统。
本发明可以通过以下措施达到:
一种基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于包括以下步骤:
步骤1: select 查询语句的捕获,select语句捕获模块通过ASH视图的监视,并结合采集来的用户会话(session)信息,结合历史执行的SQL语句视图,设计专门的select查询语句解析算法,实现select sql流及其相关信息的全方位的捕获,例如:select语句、会话(session)信息、登录时间信息,登录IP地址信息;
步骤2:DDL/DCL/DML语句捕获,通过对重做日志(redo)的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DCL/DML SQL语句;
步骤3:步骤1及步骤2所捕获的数据通过支持断网重传的网络通讯模块进行传输,并进行数据的加密传输。
本发明所述步骤1中select 查询语句的捕获具体包括以下内容:
步骤1-1:Oracle RAC生产库端 动态视图监控与采集;
Oracle数据库中的ASH(Active Session History)对Oracle数据库执行的所有操作进行采样,包括:DDL、DML、DCL,以及select查询操作;通过对Oracle数据库中ASH视图的监控,辅之以其它相关视图对ASH所采集SQL语句进行解析,实现select操作的捕获,只要能够被ASH采集到的所有select操作,都可以捕获到,Oracle数据库ASH采集周期限定为1秒钟一次,因此所捕获的Select的时间粒度为0.5秒;除了对Oracle ASH中所保存的历史SQL执行记录进行采集以外,用户登录会话信息(session)也至关重要,RAC服务器采集的ASH信息,附之以会话信息,并结合SQL语句视图,可以用于还原select执行的历史记录,从而实现select的捕获。
步骤1-2:在解析服务器一端,专门设计了select捕获算法,利用RAC 生产库采集来的信息:ASH视图信息,用户会话信息(session),以及sql动态视图,实现select语句全方位信息的捕获,包括:select语句、select语句相关联的会话(session)信息、select语句关联会话的登录时间,以及会话登录IP等信息;SELECT捕获模块通过对ASH信息的扩充来提取select语句执行的历史记录,ASH视图表结构如表1所示:
表1 ASH动态视图结构
字段名称 类型
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
USER_ID NUMBER
SQL_ID VA Rchar2(13)
SQL_CHILD_NUMBER NUMBER
SQL_PLAN_HASH_VALUE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
SQL_OPCODE NUMBER
SERVICE_HASH NUMBER
SESSION_TYPE VARchar2(10)
SESSION_STATE VARchar2(7)
QC_SESSION_ID NUMBER
QC_INSTANCE_ID NUMBER
BLOCKING_SESSION NUMBER
BLOCKING_SESSION_STATUS VARchar2(11)
BLOCKING_SESSION_SERIAL# NUMBER
EVENT VARchar2(64)
EVENT_ID NUMBER
EVENT# NUMBER
SEQ# NUMBER
P1TEXT VARchar2(64)
P1 NUMBER
P2TEXT VARchar2(64)
P2 NUMBER
P3TEXT VARchar2(64)
P3 NUMBER
WAIT_CLASS VARchar2(64)
WAIT_CLASS_ID NUMBER
WAIT_TIME NUMBER
TIME_WAITED NUMBER
XID RAW(8)
CURRENT_OBJ# NUMBER
CURRENT_FILE# NUMBER
CURRENT_BLOCK# NUMBER
PROGRAM VARchar2(64)
MODULE VARchar2(48)
ACTION VARchar2(32)
CLIENT_ID VARchar2(64)
扩充后的ASH信息如表2所示。通过扩充,构建sql语句执行历史的链表数据结构,实现了对select语句执行历史的捕获;
表 2 ASH信息增加字段
步骤1-3:解析服务器端SELECT SQL流生成。
本发明步骤2中DML/DDL/DCL语句捕获包括以下步骤:
步骤2-1:重做日志解析:DDL/DCL/DML语句的捕获通过对重做日志(redo)的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DML/DCL SQL语句,其基本步骤如下:首先添加并加载数据字典,之后启动解析重做日志并生成解析视图,一次解析完成后,更新解析时戳,结束解析进程的操作,实际上解析周期,可以根据生产库的实际数据量来配置,在下一个解析周期开始时,解析模块从新的时戳点开始解析。解析出来的重做日志动态视图v$logcontents视图结构如表3所示。
表 3 重做日志解析结果
字段名称 类型
SCN NUMBER
CSCN NUMBER
TIMESTAMP DATE
COMMIT_TIMESTAMP DATE
THREAD# NUMBER
LOG_ID NUMBER
XIDUSN NUMBER
XIDSLT NUMBER
XIDSQN NUMBER
PXIDUSN NUMBER
PXIDSLT NUMBER
PXIDSQN NUMBER
RBASQN NUMBER
RBABLK NUMBER
RBABYTE NUMBER
UBAFIL NUMBER
UBABLK NUMBER
UBAREC NUMBER
UBASQN NUMBER
ABS_FILE# NUMBER
REL_FILE# NUMBER
DATA_BLK# NUMBER
DATA_OBJ# NUMBER
DATA_OBJD# NUMBER
SEG_OWNER VARchar2(32)
SEG_NAME VARchar2(256)
TABLE_NAME VARchar2(32)
SEG_TYPE NUMBER
SEG_TYPE_NAME VARchar2(32)
TABLE_SPACE VARchar2(32)
ROW_ID VARchar2(18)
SESSION# NUMBER
SERIAL# NUMBER
USERNAME VARchar2(30)
SESSION_INFO VARchar2(4000)
TX_NAME VARchar2(256)
ROLLBACK NUMBER
OPERATION VARchar2(32)
OPERATION_CODE NUMBER
SQL_REDO VARchar2(4000)
SQL_UNDO VARchar2(4000)
RS_ID VARchar2(32)
SEQUENCE# NUMBER
SSN NUMBER
CSF NUMBER
INFO VARchar2(32)
STATUS NUMBER
REDO_VALUE NUMBER
UNDO_VALUE NUMBER
SQL_COLUMN_TYPE VARchar2(30)
SQL_COLUMN_NAME VARchar2(30)
REDO_LENGTH NUMBER
REDO_OFFSET NUMBER
UNDO_LENGTH NUMBER
UNDO_OFFSET NUMBER
DATA_OBJV# NUMBER
SAFE_RESUME_SCN NUMBER
XID RAW(8)
PXID RAW(8)
AUDIT_SESSIONID NUMBER
步骤2-2:DDL/DML/DCL数据文件生成:生产库运行时一般处于归档模式,为避免归档日志的产生,需要将解析出来的DDL/DML/DCL原始记录,生成文本文件发送给捕获服务器,可以将解析出来的重做日志视图内容重定向成文本文件,这就避免了create table生成归档日志的问题;
步骤2-3:重做日志数据解封;
步骤2-4:DDL/DML/DCL捕获:在解析服务器一端负责解析接收到的重做日志文本文件,将各个字段还原到sql捕获服务器中,实现DDL/DML/DCL的捕获。SQL流捕获系统分别获得SELECT语句与DDL/DCL/DML语句进行合并,构成完整的RAC是Oracle服务器执行的SQL流的全图。
实际上,重做日志解析模块可以根据生产库的不同要求,灵活地安排在解析服务器一端或生产库一端进行。安排在在解析服务器一端,可以进一步降低对于生产库性能的影响;但这要求解析服务器与生产库具有相同的Oracle版本和OS版本。
本发明还提出了一种基于动态视图监控的Oracle RAC数据库SQL流捕获系统,其特征在于设有SQL解析服务器、RAC Oracle生产库单元,其中SQL解析服务器设有SELECT操作捕获模块、DML/DCL操作捕获模块、断点续传模块以及RAC心跳检测模块,其中SELECT操作捕获模块包括SELECT捕获模块、SELECT SQL生成模块;DML/DCL操作捕获模块包括DML/DCLSQL解封模块、DML/DCL SQL捕获模块。
本发明所述RAC Oracle生产库单元设有redo日志解析模块、数据文件打包生成模块、支持断点续传的数据传输模块以及心跳检测模块。
本发明与现有技术相比,具有极强的稳定性和可靠性,具有不间断严密监视数据库的一举一动同时又不影响正常的业务执行效率等特点。
附图说明:
附图1是本发明的系统框图。
附图标记:SQL解析服务器1、RAC Oracle生产库单元2、SELECT操作捕获模块3、DML/DCL操作捕获模块4、断点续传模块5、RAC心跳检测模块6、SELECT捕获模块7、SELECTSQL生成模块8、DML/DCL SQL解封模块9、DML/DCL SQL捕获模块10、redo日志解析模块11、数据文件打包生成模块12。
具体实施方式:
下面结合附图对本发明作进一步的说明。
一种基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于包括以下步骤:
步骤1: select 查询语句的捕获,select语句捕获模块通过ASH视图的监视,并结合采集来的用户会话(session)信息,结合历史执行的SQL语句视图,设计专门的select查询语句解析算法,实现select sql流及其相关信息的全方位的捕获,例如:select语句、会话(session)信息、登录时间信息,登录IP地址信息;
步骤2:DDL/DCL/DML语句捕获,通过对重做日志(redo)的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DCL/DML SQL语句;
步骤3:步骤1及步骤2所捕获的数据通过支持断网重传的网络通讯模块进行传输,并进行数据的加密传输。
本发明所述步骤1中select 查询语句的捕获具体包括以下内容:
步骤1-1:Oracle RAC生产库端 动态视图监控与采集;
Oracle数据库中的ASH(Active Session History)对Oracle数据库执行的所有操作进行采样,包括:DDL、DML、DCL,以及select查询操作;通过对Oracle数据库中ASH视图的监控,辅之以其它相关视图对ASH所采集SQL语句进行解析,实现select操作的捕获,只要能够被ASH采集到的所有select操作,都可以捕获到,Oracle数据库ASH采集周期限定为1秒钟一次,因此所捕获的Select的时间粒度为0.5秒;除了对Oracle ASH中所保存的历史SQL执行记录进行采集以外,用户登录会话信息(session)也至关重要,RAC服务器采集的ASH信息,附之以会话信息,并结合SQL语句视图,可以用于还原select执行的历史记录,从而实现select的捕获。
步骤1-2:在解析服务器一端,专门设计了select捕获算法,利用RAC 生产库采集来的信息:ASH视图信息,用户会话信息(session),以及sql动态视图,实现select语句全方位信息的捕获,包括:select语句、select语句相关联的会话(session)信息、select语句关联会话的登录时间,以及会话登录IP等信息;SELECT捕获模块通过对ASH信息的扩充来提取select语句执行的历史记录,ASH视图表结构如表1所示:
表1 ASH动态视图结构
字段名称 类型
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
USER_ID NUMBER
SQL_ID VA Rchar2(13)
SQL_CHILD_NUMBER NUMBER
SQL_PLAN_HASH_VALUE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
SQL_OPCODE NUMBER
SERVICE_HASH NUMBER
SESSION_TYPE VARchar2(10)
SESSION_STATE VARchar2(7)
QC_SESSION_ID NUMBER
QC_INSTANCE_ID NUMBER
BLOCKING_SESSION NUMBER
BLOCKING_SESSION_STATUS VARchar2(11)
BLOCKING_SESSION_SERIAL# NUMBER
EVENT VARchar2(64)
EVENT_ID NUMBER
EVENT# NUMBER
SEQ# NUMBER
P1TEXT VARchar2(64)
P1 NUMBER
P2TEXT VARchar2(64)
P2 NUMBER
P3TEXT VARchar2(64)
P3 NUMBER
WAIT_CLASS VARchar2(64)
WAIT_CLASS_ID NUMBER
WAIT_TIME NUMBER
TIME_WAITED NUMBER
XID RAW(8)
CURRENT_OBJ# NUMBER
CURRENT_FILE# NUMBER
CURRENT_BLOCK# NUMBER
PROGRAM VARchar2(64)
MODULE VARchar2(48)
ACTION VARchar2(32)
CLIENT_ID VARchar2(64)
扩充后的ASH信息如表2所示。通过扩充,构建sql语句执行历史的链表数据结构,实现了对select语句执行历史的捕获;
表 2 ASH信息增加字段
步骤1-3:解析服务器端SELECT SQL流生成。
本发明步骤2中DML/DDL/DCL语句捕获包括以下步骤:
步骤2-1:重做日志解析:DDL/DCL/DML语句的捕获通过对重做日志(redo)的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DML/DCL SQL语句,其基本步骤如下:首先添加并加载数据字典,之后启动解析重做日志并生成解析视图,一次解析完成后,更新解析时戳,结束解析进程的操作,实际上解析周期,可以根据生产库的实际数据量来配置,在下一个解析周期开始时,解析模块从新的时戳点开始解析。解析出来的重做日志动态视图v$logcontents视图结构如表3所示。
表 3 重做日志解析结果
字段名称 类型
SCN NUMBER
CSCN NUMBER
TIMESTAMP DATE
COMMIT_TIMESTAMP DATE
THREAD# NUMBER
LOG_ID NUMBER
XIDUSN NUMBER
XIDSLT NUMBER
XIDSQN NUMBER
PXIDUSN NUMBER
PXIDSLT NUMBER
PXIDSQN NUMBER
RBASQN NUMBER
RBABLK NUMBER
RBABYTE NUMBER
UBAFIL NUMBER
UBABLK NUMBER
UBAREC NUMBER
UBASQN NUMBER
ABS_FILE# NUMBER
REL_FILE# NUMBER
DATA_BLK# NUMBER
DATA_OBJ# NUMBER
DATA_OBJD# NUMBER
SEG_OWNER VARchar2(32)
SEG_NAME VARchar2(256)
TABLE_NAME VARchar2(32)
SEG_TYPE NUMBER
SEG_TYPE_NAME VARchar2(32)
TABLE_SPACE VARchar2(32)
ROW_ID VARchar2(18)
SESSION# NUMBER
SERIAL# NUMBER
USERNAME VARchar2(30)
SESSION_INFO VARchar2(4000)
TX_NAME VARchar2(256)
ROLLBACK NUMBER
OPERATION VARchar2(32)
OPERATION_CODE NUMBER
SQL_REDO VARchar2(4000)
SQL_UNDO VARchar2(4000)
RS_ID VARchar2(32)
SEQUENCE# NUMBER
SSN NUMBER
CSF NUMBER
INFO VARchar2(32)
STATUS NUMBER
REDO_VALUE NUMBER
UNDO_VALUE NUMBER
SQL_COLUMN_TYPE VARchar2(30)
SQL_COLUMN_NAME VARchar2(30)
REDO_LENGTH NUMBER
REDO_OFFSET NUMBER
UNDO_LENGTH NUMBER
UNDO_OFFSET NUMBER
DATA_OBJV# NUMBER
SAFE_RESUME_SCN NUMBER
XID RAW(8)
PXID RAW(8)
AUDIT_SESSIONID NUMBER
步骤2-2:DDL/DML/DCL数据文件生成:生产库运行时一般处于归档模式,为避免归档日志的产生,需要将解析出来的DDL/DML/DCL原始记录,生成文本文件发送给捕获服务器,可以将解析出来的重做日志视图内容重定向成文本文件,这就避免了create table生成归档日志的问题;
步骤2-3:重做日志数据解封;
步骤2-4:DDL/DML/DCL捕获:在解析服务器一端负责解析接收到的重做日志文本文件,将各个字段还原到sql捕获服务器中,实现DDL/DML/DCL的捕获。SQL流捕获系统分别获得SELECT语句与DDL/DCL/DML语句进行合并,构成完整的RAC是Oracle服务器执行的SQL流的全图。
实际上,重做日志解析模块可以根据生产库的不同要求,灵活地安排在解析服务器一端或生产库一端进行。安排在在解析服务器一端,可以进一步降低对于生产库性能的影响;但这要求解析服务器与生产库具有相同的Oracle版本和OS版本。
本发明还提出了一种基于动态视图监控的Oracle RAC数据库SQL流捕获系统,其特征在于设有SQL解析服务器1、RAC Oracle生产库单元2,其中SQL解析服务器1设有SELECT操作捕获模块3、DML/DCL操作捕获模块4、断点续传模块5以及RAC心跳检测模块6,其中SELECT操作捕获模块3包括SELECT捕获模块7、SELECT SQL生成模块8;DML/DCL操作捕获模块4包括DML/DCL SQL解封模块9、DML/DCL SQL捕获模块10。
本发明所述RAC Oracle生产库单元设有redo日志解析模块11、数据文件打包生成模块12、支持断点续传的数据传输模块5以及心跳检测模块6。
本发明采用专门的 SQL捕获服务器1 与 Oracle RAC生产库单元2相连,实现生产库运行SQL流的捕获,Select 操作捕获模块,DDL/DML/DCL操作捕获模块,数据传输模块,RAC心跳检测模块。
Select 操作捕获系统包括:Oracle RAC生产库一端的动态视图监控与信息采集模块,和SQL解析服务器端的SELECT 捕获模块,和SELECT SQL 生成模块。Select 操作捕获系统需要部署响应的采集机构,例如:数据库连接,数据库触发器等。
DDL/DML/DCL操作捕获模块包括:redo日志解析模块,数据文件打包生成模块,DDL/DML/DCL SQL解封模块,DDL/DML/DCL SQL捕获模块。DDL/DML/DCL操作捕获系统、需要安装安装、部署logmnier,部署定时器等。
select 查询语句捕获系统
通过对Oracle内置ASH(Active Session History)等动态视图的监控来实现select语句捕获。ASH视图定时对Oracle系统执行的SQL流进行采集, select语句捕获系统通过对ASH视图的监视,并利用采集来的会话(session)信息,结合历史执行的SQL语句视图,完成了select sql流及其相关信息的全方位的捕获,例如:select语句、会话(session)信息、登录时间信息,登录IP地址信息等。elect 查询语句捕获系统 需要部署,数据库连接、触发器、定时器并设置定时任务等,对相关重要视图进行采集。
Oracle RAC生产库 动态视图采集模块:Oracle数据库中的ASH(Active SessionHistory)对Oracle数据库执行的所有操作进行采样,包括:DDL、DML、DCL,以及select查询操作。本专利通过对Oracle数据库中ASH视图的监控,辅之以其它相关视图对ASH所采集SQL语句进行解析,实现select操作的捕获。只要能够被ASH采集到的所有select操作,本系统都可以捕获到。从理论上来说,Oracle数据库ASH采集周期限定为1秒钟一次,因此本系统所捕获的Select的理论上的时间粒度为0.5秒。除了对Oracle ASH中所保存的历史SQL执行记录进行采集以外,用户登录会话信息(session)也至关重要。RAC服务器采集的ASH信息,附之以会话信息,并结合SQL语句视图,可以用于还原select执行的历史记录,从而实现select的捕获。
解析服务器端SELECT捕获模块:在解析服务器一端,专门设计了select捕获算法,利用RAC 生产库采集来的信息:ASH视图信息,用户会话信息(session),以及sql动态视图,实现select语句全方位信息的捕获,包括:select语句、select语句相关联的会话(session)信息、select语句关联会话的登录时间,以及会话登录IP信息。具体来说,要捕获select语句,只有ASH信息是不够的,还需要select语句相关的会话v$session信息,执行sql的视图信息v$sql_area等,才可以实现select语句的捕获。
select语句生成模块: 实际上就是实现所捕获select语句的物化。综上, select查询语句捕获系统,中的Oracle RAC生产库 动态视图采集模块,解析服务器端SELECT捕获模块, select语句生成模块,实现select语句全方位信息的捕获,包括:select语句、select语句相关联的会话(session)信息、select语句关联会话的登录时间,以及会话登录IP等信息。
DML/DCL语句的捕获通过对重做日志(redo)的监控来实现。使用logminer方法定时解析Oracle 重做日志,捕获DML/DDL SQL语句。由于生产库运行时大部处于归档模式,为避免归档日志的产生,将解析出来的DML/DDL数据生成文本文件传输给捕获服务器。鉴于数据量巨大,传输过程需要考虑安全性与断网等因素,因此数据发送采用加密方式可靠传输(例如:SSH协议),并设计断网续传功能。SQL流捕获系统分别获得SELECT语句,与DML/DDL/DCL语句,并根据相关信息将其合并,构成完整的RAC是Oracle服务器执行的SQL流的全图。DDL/DML/DCL语句捕获系统需要部署Logminer以及定时任务,实现DML/DCL/DDL的采集、传输与解析。
重做日志解析模块的功能为:DDL/DML/DCL语句的捕获通过对重做日志(redo)的监控来实现。使用logminer方法定时解析Oracle 重做日志,捕获DDL/DML/DCL SQL语句。其基本步骤如下:首先添加并加载数据字典,之后启动解析重做日志并生成解析视图,一次解析完成后更新解析时戳,结束解析进程的操作。实际上解析周期,可以根据生产库的实际数据量来配置。在下一个解析周期开始时,解析模块从新时戳点开始解析。
DDL/DML/DCL数据文件生成模块的功能为:生产库运行时一般处于归档模式,为避免归档日志的产生,需要将解析出来的DDL/DML/DCL原始记录,生成文本文件发送给捕获服务器。可以将解析出来的重做日志视图内容重定向成文本文件,这就避免了create table生成归档日志的问题。实践证明该方法非常完美,同时效率也非常高。
重做日志数据解封模块,DDL/DML/DCL捕获模块的功能为:在解析服务器一端负责解析接收到的重做日志文本文件,将各个字段还原到sql捕获服务器中,实现DDL/DML/DCL的捕获。SQL流捕获系统分别获得SELECT语句与DDL/DML/DCL语句进行合并,构成完整的RAC是Oracle服务器执行的SQL流的全图。
实际上,重做日志解析模块可以根据生产库的不同要求,灵活地安排在解析服务器一端或生产库一端进行。安排在在解析服务器一端,可以进一步降低对于生产库性能的影响;但这要求解析服务器与生产库具有相同的Oracle版本和OS版本。
支持断点续传的数据传输模块的功能为:鉴于数据量巨大,传输过程需要考虑安全性与断网等诸多因素,因此数据发送采用加密方式可靠传输,并需要设计断网续传机制。
推荐采用SSH协议进行数据加密传输,这既保证了传输的可靠性,同时又加强了数据传输的安全性和保密性。
数据传输模块支持断网重传机制,当生产库到捕获服务器的网络出现异常时,生产库生成的文本文件会保存在本地,当网络再次可用时再重新发送。
RAC心跳检测模块的功能为:由于生产库大部分采用RAC模式,RAC具有透明应用切换的功能,当一台数据库服务器怠机后,另一台机器可以正常运行,不会因为数据库怠机而使应用停止服务。由于解析重做日志是通过外部程序执行,当生产库宕机后,使得sql流捕获程序停止工作。
在两台RAC生产库上分别部署心跳监测机制;
在解析服务器一端,对心跳监测机制进行支持,实现sql流捕获的鲁棒运行。
本发明与现有技术相比,具有极强的稳定性和可靠性,具有不间断严密监视数据库的一举一动同时又不影响正常的业务执行效率等特点。

Claims (3)

1.一种基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于包括以下步骤:
步骤1: select 查询语句的捕获,select语句捕获模块通过ASH视图的监视,并结合采集来的用户会话session信息,结合历史执行的SQL语句视图,设计专门的select查询语句解析算法,实现select sql流及其相关信息的全方位的捕获,包括select语句、会话session信息、登录时间信息,登录IP地址信息;
步骤2:DDL/DCL/DML语句捕获,通过对重做日志redo的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DCL/DML SQL语句;
步骤3:步骤1及步骤2所捕获的数据通过支持断网重传的网络通讯模块进行传输,并进行数据的加密传输。
2.根据权利要求1所述的一种基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于所述步骤1中select 查询语句的捕获具体包括以下内容:
步骤1-1:Oracle RAC生产库端 动态视图监控与采集;Oracle数据库中的ASH对Oracle数据库执行的所有操作进
行采样,包括:DDL、DML、DCL,以及select查询操作;通过对Oracle数据库中视图的监控,辅之对ASH所采集SQL语句进行解析,实现select操作的捕获,只要能够被ASH采集到的所有select操作,都可以捕获到,Oracle数据库ASH采集周期限定为1秒钟一次,因此所捕获的Select的时间粒度为0 .5秒;除了对Oracle ASH中所保存的历史SQL执行记录进行采集以外,用户登录会话信息session也至关重要,RAC服务器采集的ASH信息,附之以会话信息,并结合SQL语句视图 ,可以用于还原select执行的历史记录,从而实现select的捕获;
步骤1-2:在解析服务器一端,专门设计了select捕获算法,利用RAC 生产库采集来的信息:ASH视图信息,用户会话信息session,以及sql动态视图,实现select语句全方位信息的捕获,包括:select语句、select语句相关联的会话session信息、select语句关联会话的登录时间,以及会话登录IP等信息;SELECT捕获模块通过对ASH信息的扩充来提取select语句执行的历史记录,通过扩充,构建sql语句执行历史的链表数据结构,实现了对select语句执行历史的捕获;
步骤1-3:解析服务器端SELECT SQL流生成。
3.根据权利要求1所述的一种基于动态视图监控的Oracle RAC数据库SQL流捕获方法,其特征在于步骤2中DML/DDL/DCL语句捕获包括以下步骤:
步骤2-1:重做日志解析:DDL/DCL/DML语句的捕获通过对重做日志(redo)的监控来实现,使用logminer方法定时解析Oracle 重做日志,捕获DDL/DML/DCL SQL语句,其基本步骤如下:首先添加并加载数据字典,之后启动解析重做日志并生成解析视图,一次解析完成
后,更新解析时戳,结束解析进程的操作,实际上解析周期,可以根据生产库的实际数据量来配置,在下一个解析周期开始时,解析模块从新的时戳点开始解析;
步骤2-2:DDL/DML/DCL数据文件生成:生产库运行时一般处于归档模式,为避免归档日志的产生,需要将解析出来的DDL/DML/DCL原始记录,生成文本文件发送给捕获服务器,可以将解析出来的重做日志视图内容重定向成文本文件,这就避免了create table生成归档日志的问题步骤2-3:重做日志数据解封;
步骤2-4:DDL/DML/DCL捕获:在解析服务器一端负责解析接收到的重做日志文本文件,将各个字段还原到sql捕获服务器中,实现DDL/DML/DCL的捕获 ,SQL流捕获系统分别获得SELECT语句与DDL/DCL/DML语句进行合并,构成完整的RAC是Oracle服务器执行的SQL流的全图。
CN201610232408.0A 2016-04-14 2016-04-14 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 Active CN105868078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610232408.0A CN105868078B (zh) 2016-04-14 2016-04-14 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610232408.0A CN105868078B (zh) 2016-04-14 2016-04-14 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统

Publications (2)

Publication Number Publication Date
CN105868078A CN105868078A (zh) 2016-08-17
CN105868078B true CN105868078B (zh) 2019-03-08

Family

ID=56637681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610232408.0A Active CN105868078B (zh) 2016-04-14 2016-04-14 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统

Country Status (1)

Country Link
CN (1) CN105868078B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109492015A (zh) * 2018-10-31 2019-03-19 武汉达梦数据库有限公司 实时采集并展示活动会话完整信息的方法及设备
CN110569142A (zh) * 2019-08-29 2019-12-13 天津大学 一种oracle数据增量同步系统及方法
CN110727548B (zh) * 2019-09-29 2022-03-04 上海英方软件股份有限公司 一种基于数据库dml同步的持续数据保护方法及装置
CN113515573B (zh) * 2021-05-08 2023-01-17 上海英方软件股份有限公司 一种oracle数据库一对多协商复制断点的方法及系统
CN113342605B (zh) * 2021-06-07 2024-02-02 北京许继电气有限公司 一种PostgreSQL数据库监控和溯源分析的方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945256A (zh) * 2012-10-18 2013-02-27 福建省海峡信息技术有限公司 海量sql语句合并归类的方法及装置
CN103678630A (zh) * 2013-12-19 2014-03-26 北京用友政务软件有限公司 一种数据库监控方法及系统
CN103745016A (zh) * 2006-03-10 2014-04-23 甲骨文国际公司 利用恢复日志检测数据库事件

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477692B2 (en) * 2012-10-01 2016-10-25 Oracle International Corporation Systems and methods for applying an analytical model to performance analysis

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103745016A (zh) * 2006-03-10 2014-04-23 甲骨文国际公司 利用恢复日志检测数据库事件
CN102945256A (zh) * 2012-10-18 2013-02-27 福建省海峡信息技术有限公司 海量sql语句合并归类的方法及装置
CN103678630A (zh) * 2013-12-19 2014-03-26 北京用友政务软件有限公司 一种数据库监控方法及系统

Also Published As

Publication number Publication date
CN105868078A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN105868078B (zh) 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统
Mai et al. Chi: A scalable and programmable control plane for distributed stream processing systems
US20180129579A1 (en) Systems and Methods with a Realtime Log Analysis Framework
US20120005174A1 (en) Method and a system for replaying database workload with transactional consistency
CN104506484A (zh) 一种私有协议分析与识别方法
Sang et al. Precise, scalable, and online request tracing for multitier services of black boxes
CN103618652A (zh) 一种业务数据的审计和深度分析系统及其方法
CN105119762A (zh) 云平台基于日志实现交易回放和重做的系统及方法
CN111949633A (zh) 一种基于并行流处理的ict系统运行日志分析方法
CN105471635B (zh) 一种系统日志的处理方法、装置和系统
US20210089426A1 (en) Parsing hierarchical session log data for search and analytics
CN105930427A (zh) 数据库审计方法及装置
CN103235807A (zh) 一种支持高并发大数据量的数据抽取处理方法
CN103812679A (zh) 一种海量日志统计分析系统和方法
KR101191832B1 (ko) 네트워크 패킷 분석을 통한 데이터베이스 복제 방법 및 시스템
CN102323975B (zh) 基于iec61850模型文件的报文正确性判别方法
Khanna et al. Automated online monitoring of distributed applications through external monitors
Srivastava et al. Enabling real time data analysis
Liu et al. SAND: A fault-tolerant streaming architecture for network traffic analytics
KR101736382B1 (ko) 이엠에스 서버 및 이의 로그 데이터 관리 방법
CN101404590B (zh) 下级网管向上级网管上报数据的方法和网管设备
CN104102583A (zh) 一种高可用集群软件分布式自动化测试框架
Hwang et al. Borealis-r: a replication-transparent stream processing system for wide-area monitoring applications
CN106844147A (zh) 一种监控系统及方法
CN110019524A (zh) 基于触发器sql文件的隔离网闸数据库同步技术

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant