一种数据解析方法、装置及计算机可读存储介质制造方法及图纸

技术编号:33506435 阅读:7 留言:0更新日期:2022-05-19 01:16
本发明专利技术公开了一种数据解析方法、装置及计算机可读存储介质,涉及通信技术领域,以解决现有对Oracle流量数据中的SQL语句解析方式适用场景固定的问题。该方法包括:获取待解析目标数据库流量数据;依据预先获取的结构化查询语言SQL语句提取特征值,确定所述待解析目标数据库流量数据中的SQL语句的长度和起始位置,其中,所述SQL语句提取特征值包括子功能偏移值常量、SQL语句长度标识位的相对偏移值常量和SQL语句起始位的相对偏移值范围;依据所述SQL语句的长度和起始位置,从所述待解析目标数据库流量数据中提取SQL语句,得到所述待解析目标数据库流量数据中的SQL语句内容。本发明专利技术实施例可适用于对不同场景中的目标数据库流量数据进行SQL语句解析。库流量数据进行SQL语句解析。库流量数据进行SQL语句解析。

【技术实现步骤摘要】
一种数据解析方法、装置及计算机可读存储介质


[0001]本专利技术涉及通信
,尤其涉及一种数据解析方法、装置及计算机可读存储介质。

技术介绍

[0002]目前,很多企业的后台数据库都会选择Oracle数据库来进行数据存储。同时,很多企业需要对数据的读写访问等进行审计,相关技术中,通常选择使用镜像流量的方式,对Oracle客户端与服务端之间产生的流量数据进行关键内容解析,生成流量解析日志,来满足审计需求。
[0003]相关技术中,对Oracle流量数据中的结构化查询语言(Structured Query Language,SQL)语句解析主要是通过固定场景,如某个版本的透明网络底层(Transparent Network Substrate,TNS)协议、某个客户端的流量数据等中的SQL语句偏移规则得到SQL语句的偏移量,然后依据偏移量获取SQL语句,或者是通过检索SQL语句关键词字符串的方式获取。然而,该方式只对特定场景中的流量数据适用,例如,在不同版本的TNS协议、不同的操作系统、不同的客户端、不同的Oracle数据库版本等多种场景产生的oracle流量数据,SQL语句的偏移规则可能都不相同,如果每一种场景都去分析固定的偏移规则的话,需要耗费大量的人工。
[0004]可见,现有对Oracle流量数据中的SQL语句解析方式存在适用场景固定的问题。

技术实现思路

[0005]本专利技术实施例提供一种数据解析方法、装置及计算机可读存储介质,以解决现有对Oracle流量数据中的SQL语句解析方式适用场景固定的问题。
[0006]第一方面,本专利技术实施例提供了一种数据解析方法,包括:
[0007]获取待解析目标数据库流量数据;
[0008]依据预先获取的结构化查询语言SQL语句提取特征值,确定所述待解析目标数据库流量数据中的SQL语句的长度和起始位置,其中,所述SQL语句提取特征值包括子功能偏移值常量、SQL语句长度标识位的相对偏移值常量和SQL语句起始位的相对偏移值范围;
[0009]依据所述SQL语句的长度和起始位置,从所述待解析目标数据库流量数据中提取SQL语句,得到所述待解析目标数据库流量数据中的SQL语句内容。
[0010]可选的,所述依据预先获取的结构化查询语言SQL语句提取特征值,确定所述待解析目标数据库流量数据中的SQL语句的长度和起始位置之前,所述方法还包括:
[0011]获取N条目标数据库抽样流量数据,N为大于1的整数,所述N条目标数据库抽样流量数据包括不同场景中的目标数据库流量数据;
[0012]确定每条目标数据库抽样流量数据的子功能偏移值、SQL语句起始位的相对偏移值和SQL语句长度标识位的相对偏移值;
[0013]基于每条目标数据库抽样流量数据的子功能偏移值,确定子功能偏移值常量;
[0014]基于每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值,确定SQL语句起始位的相对偏移值范围;
[0015]基于每条目标数据库抽样流量数据中的SQL语句长度标识位的相对偏移值,确定SQL语句长度标识位的相对偏移值常量;
[0016]将所述子功能偏移值常量、所述SQL语句起始位的相对偏移值范围和所述SQL语句长度标识位的相对偏移值常量确定为所述SQL语句提取特征值。
[0017]可选的,所述确定每条目标数据库抽样流量数据的子功能偏移值、SQL语句起始位的相对偏移值和SQL语句长度标识位的相对偏移值,包括:
[0018]分别检索每条目标数据库抽样流量数据中的目标子功能值位置,并依据每条目标数据库抽样流量数据中的目标子功能值位置,确定每条目标数据库抽样流量数据的子功能偏移值;
[0019]分别检索每条目标数据库抽样流量数据中的SQL语句起始位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置,确定每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值;
[0020]分别检索每条目标数据库抽样流量数据中的SQL语句结束位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置和SQL语句结束位置,确定每条目标数据库抽样流量数据中的SQL语句长度;
[0021]依据每条目标数据库抽样流量数据中的SQL语句长度,确定每条目标数据库抽样流量数据中的SQL语句长度标识位的相对偏移值。
[0022]可选的,所述分别检索每条目标数据库抽样流量数据中的SQL语句起始位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置,确定每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值,包括:
[0023]将偏移量赋值为第一预设值M,M为大于1的整数;
[0024]获取第一目标数据库抽样流量数据中的第M-1个字节和第M个字节的第一组合值,其中,所述第一目标数据库抽样流量数据为所述N条目标数据库抽样流量数据中的任一条目标数据库抽样流量数据;
[0025]若所述第一组合值为第一目标值,则从所述第一目标数据库抽样流量数据中的第M+1个字节开始,检索第M+1+j个字节及第M+1+j个字节之后的L个字节是否为预设字符,L为正整数,j的初始值为0;
[0026]若检索到第M+1+j个字节不为预设字符,或者第M+1+j个字节之后的L个字节不为预设字符,则将j的值加1,并重复上述检索第M+1+j个字节及第M+1+j个字节之后的L个字节是否为预设字符的步骤,直至检索到第M+1+j个字节及第M+1+j个字节之后的L个字节为预设字符;
[0027]若检索到第M+1+j个字节及第M+1+j个字节之后的L个字节为预设字符,则判断第M+1+j个字节是否为SQL语句的起始位置;
[0028]若确定第M+1+j个字节为SQL语句的起始位置,则确定所述第一目标数据库抽样流量数据中的SQL语句起始位置为第M+1+j个字节,并确定所述第一目标数据库抽样流量数据中的SQL语句起始位的相对偏移值为j。
[0029]可选的,所述判断第M+1+j个字节是否为SQL语句的起始位置,包括:
[0030]从所述第一目标数据库抽样流量数据中的第M+1+j个字节开始,检索第M+1+j+g个字节是否为间隔符,g的初始值为0;
[0031]若检索到第M+1+j+g个字节不为间隔符,则将g的值加1,并重复上述检索第M+1+j+g个字节是否为间隔符的步骤,直至检索到第M+1+j+g个字节为间隔符,或者g等于第二预设值;
[0032]若检索到第M+1+j+g个字节为间隔符,则将第M+1+j个字节至第M+j+g个字节的值相加,得到总值;
[0033]判断所述总值是否属于SQL关键词的值集合,其中,若所述总值属于SQL关键词的值集合,则确定第M+1+j个字节为SQL语句的起始位置。
[0034]可选的,所述方法还包括:
[0035]若所述总值不属于SQL关键词的值集合,或者未检索到间隔符,则确定第M+1+j个字节不为SQL语句的起始位置,并将j本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据解析方法,其特征在于,包括:获取待解析目标数据库流量数据;依据预先获取的结构化查询语言SQL语句提取特征值,确定所述待解析目标数据库流量数据中的SQL语句的长度和起始位置,其中,所述SQL语句提取特征值包括子功能偏移值常量、SQL语句长度标识位的相对偏移值常量和SQL语句起始位的相对偏移值范围;依据所述SQL语句的长度和起始位置,从所述待解析目标数据库流量数据中提取SQL语句,得到所述待解析目标数据库流量数据中的SQL语句内容。2.根据权利要求1所述的方法,其特征在于,所述依据预先获取的结构化查询语言SQL语句提取特征值,确定所述待解析目标数据库流量数据中的SQL语句的长度和起始位置之前,所述方法还包括:获取N条目标数据库抽样流量数据,N为大于1的整数,所述N条目标数据库抽样流量数据包括不同场景中的目标数据库流量数据;确定每条目标数据库抽样流量数据的子功能偏移值、SQL语句起始位的相对偏移值和SQL语句长度标识位的相对偏移值;基于每条目标数据库抽样流量数据的子功能偏移值,确定子功能偏移值常量;基于每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值,确定SQL语句起始位的相对偏移值范围;基于每条目标数据库抽样流量数据中的SQL语句长度标识位的相对偏移值,确定SQL语句长度标识位的相对偏移值常量;将所述子功能偏移值常量、所述SQL语句起始位的相对偏移值范围和所述SQL语句长度标识位的相对偏移值常量确定为所述SQL语句提取特征值。3.根据权利要求2所述的方法,其特征在于,所述确定每条目标数据库抽样流量数据的子功能偏移值、SQL语句起始位的相对偏移值和SQL语句长度标识位的相对偏移值,包括:分别检索每条目标数据库抽样流量数据中的目标子功能值位置,并依据每条目标数据库抽样流量数据中的目标子功能值位置,确定每条目标数据库抽样流量数据的子功能偏移值;分别检索每条目标数据库抽样流量数据中的SQL语句起始位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置,确定每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值;分别检索每条目标数据库抽样流量数据中的SQL语句结束位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置和SQL语句结束位置,确定每条目标数据库抽样流量数据中的SQL语句长度;依据每条目标数据库抽样流量数据中的SQL语句长度,确定每条目标数据库抽样流量数据中的SQL语句长度标识位的相对偏移值。4.根据权利要求3所述的方法,其特征在于,所述分别检索每条目标数据库抽样流量数据中的SQL语句起始位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置,确定每条目标数据库抽样流量数据中的SQL语句起始位的相对偏移值,包括:将偏移量赋值为第一预设值M,M为大于1的整数;获取第一目标数据库抽样流量数据中的第M-1个字节和第M个字节的第一组合值,其
中,所述第一目标数据库抽样流量数据为所述N条目标数据库抽样流量数据中的任一条目标数据库抽样流量数据;若所述第一组合值为第一目标值,则从所述第一目标数据库抽样流量数据中的第M+1个字节开始,检索第M+1+j个字节及第M+1+j个字节之后的L个字节是否为预设字符,L为正整数,j的初始值为0;若检索到第M+1+j个字节不为预设字符,或者第M+1+j个字节之后的L个字节不为预设字符,则将j的值加1,并重复上述检索第M+1+j个字节及第M+1+j个字节之后的L个字节是否为预设字符的步骤,直至检索到第M+1+j个字节及第M+1+j个字节之后的L个字节为预设字符;若检索到第M+1+j个字节及第M+1+j个字节之后的L个字节为预设字符,则判断第M+1+j个字节是否为SQL语句的起始位置;若确定第M+1+j个字节为SQL语句的起始位置,则确定所述第一目标数据库抽样流量数据中的SQL语句起始位置为第M+1+j个字节,并确定所述第一目标数据库抽样流量数据中的SQL语句起始位的相对偏移值为j。5.根据权利要求4所述的方法,其特征在于,所述判断第M+1+j个字节是否为SQL语句的起始位置,包括:从所述第一目标数据库抽样流量数据中的第M+1+j个字节开始,检索第M+1+j+g个字节是否为间隔符,g的初始值为0;若检索到第M+1+j+g个字节不为间隔符,则将g的值加1,并重复上述检索第M+1+j+g个字节是否为间隔符的步骤,直至检索到第M+1+j+g个字节为间隔符,或者g等于第二预设值;若检索到第M+1+j+g个字节为间隔符,则将第M+1+j个字节至第M+j+g个字节的值相加,得到总值;判断所述总值是否属于SQL关键词的值集合,其中,若所述总值属于SQL关键词的值集合,则确定第M+1+j个字节为SQL语句的起始位置。6.根据权利要求4所述的方法,其特征在于,所述分别检索每条目标数据库抽样流量数据中的目标子功能值位置,并依据每条目标数据库抽样流量数据中的目标子功能值位置,确定每条目标数据库抽样流量数据的子功能偏移值,包括:若所述第一组合值为第二目标值,则从所述第一目标数据库抽样流量数据中的第M+1个字节开始,检索第M+1+i个字节和第M+i+2个字节的第二组合值是否为所述第一目标值,i的初始值为0;若所述第二组合值不为所述第一目标值,则将i的值加1,并重复上述检索第M+1+i个字节和第M+i+2个字节的第二组合值是否为所述第一目标值的步骤,直至检索到所述第二组合值为所述第一目标值;若所述第二组合值为所述第一目标值,则确定所述第一目标数据库抽样流量数据中的目标子功能值位置为第M+1+i个字节,并确定所述第一目标数据库抽样流量数据的子功能偏移值为i+2。7.根据权利要求4所述的方法,其特征在于,所述分别检索每条目标数据库抽样流量数据中的SQL语句结束位置,并依据每条目标数据库抽样流量数据中的SQL语句起始位置和SQL语句结束位置,确定每条目标数据库抽样流量数据中的SQL语句长度,包括:
若确定第M+1+j个字节为SQL语句的起始位置,则从所述第一目标数据库抽样流量数据中的第M+1+j个字节开始,检索第M+1+j+k个字节是否为SQL语句的结束标识符,k的初始值为0;若检索到第M+1+j+k个字节不为SQL语句的结束标识符,则将k的值加1,并重复上述检索第M+1+j+k个字节是否为SQL语句的结束标识符,直至检索到第M+1+j+k个字节为SQL语句的结束标识符;若检索到第M+1+j+k个字节为SQL语句的结束标识符,则确定所述第一目...

【专利技术属性】
技术研发人员:刘颖卿张星李春梅吕临颖米婧刘芳
申请(专利权)人:中国移动通信集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1