CN105868078B - 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 - Google Patents
基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 Download PDFInfo
- 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
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000005540 biological transmission Effects 0.000 claims abstract description 23
- 238000013461 design Methods 0.000 claims abstract description 6
- 239000000725 suspension Substances 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 238000001228 spectrum Methods 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims 1
- 238000005070 sampling Methods 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract description 8
- 238000005259 measurement Methods 0.000 abstract description 5
- 238000012360 testing method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011031 large-scale manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3438—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active 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数据库中的日志不对查询操作——即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流的全图。
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)
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)
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)
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 |
-
2016
- 2016-04-14 CN CN201610232408.0A patent/CN105868078B/zh active Active
Patent Citations (3)
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 |