一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库访问错误监测、分析方法、装置和电子设备与流程

2022-06-01 00:04:05 来源:中国专利 TAG:
1.本公开涉及数据处理
技术领域
:,尤其涉及数据库访问错误监测、分析方法、装置和电子设备。
背景技术
::2.很多应用使用数据库,当访问数据库时出现错误时,很难定位该错误发生的原因,导致用户体验下降,业务受损。3.相关技术中,处理方法根据应用的异常日志进行分析。然而,基于数据库访问错误日志分析错误原因难以实时准确的分析数据库错误发生的根因。技术实现要素:4.本公开提供了一种数据库访问错误监测、分析方法、装置和电子设备,以至少实现数据库访问的监测。5.根据本公开的一方面,提供了一种数据库访问错误监测方法,包括:监听业务请求的数据库访问;在监听到数据库访问的情况下,获取数据库访问对应的数据库实例信息和数据库命令;在检测到数据库访问发生错误的情况下,获取错误的错误类型和错误消息;将错误类型和错误消息与数据库实例信息和数据库命令关联,形成业务请求对应的数据库访问错误数据。6.根据本公开的另一方面,提供了一种数据库访问错误分析方法,包括:在数据库实例的数据库访问错误数据的第一集合中,确定目标错误类型在第一集合中对应的第二集合,其中,数据库访问错误数据包括错误类型、错误消息、数据库实例信息和数据库命令,目标错误类型选自第一集合中的错误类型;对第二集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第二集合中对应的第三集合;对目标命令聚类表示对应的第三集合中的错误消息进行第二聚类,得到目标命令聚类表示对应的消息聚类表示,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示。7.根据本公开的又一方面,提供了一种数据库访问错误分析方法,包括:对数据库实例的数据库访问错误数据的第一集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第一集合中对应的第二集合,其中,数据库访问错误数据包括:错误类型、错误消息、数据库实例信息和数据库命令;在目标命令聚类表示对应的第二集合中,确定目标命令聚类表示包含的错误类型及其在第二集合中对应的第三集合,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示;对目标错误类型对应的第三集合中的错误消息进行第二聚类,得到目标错误类型对应的消息聚类表示,其中,目标错误类型选自目标命令聚类表示包含的错误类型。8.根据本公开的又一方面,提供了一种数据库访问错误监测装置,包括:监听模块,用于监听业务请求的数据库访问;第一获取模块,用于在监听到数据库访问的情况下,获取数据库访问对应的数据库实例信息和数据库命令;第二获取模块,用于在检测到数据库访问发生错误的情况下,获取错误的错误类型和错误消息;关联模块,用于将错误类型和错误消息与数据库实例信息和数据库命令关联,形成业务请求对应的数据库访问错误数据。9.根据本公开的又一方面,提供了一种数据库访问错误分析装置,包括:确定模块,用于在数据库实例的数据库访问错误数据的第一集合中,确定目标错误类型在第一集合中对应的第二集合,其中,数据库访问错误数据包括错误类型、错误消息、数据库实例信息和数据库命令,目标错误类型选自第一集合中的错误类型;第一聚类模块,用于对第二集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第二集合中对应的第三集合;第二聚类模块,用于对目标命令聚类表示对应的第三集合中的错误消息进行第二聚类,得到目标命令聚类表示对应的消息聚类表示,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示。10.根据本公开的又一方面,提供了一种数据库访问错误分析装置,包括:第一聚类模块,用于对数据库实例的数据库访问错误数据的第一集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第一集合中对应的第二集合,其中,数据库访问错误数据包括:错误类型、错误消息、数据库实例信息和数据库命令;确定模块,用于在目标命令聚类表示对应的第二集合中,确定目标命令聚类表示包含的错误类型及其在第二集合中对应的第三集合,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示;第二聚类模块,用于对目标错误类型对应的第三集合中的错误消息进行第二聚类,得到目标错误类型对应的消息聚类表示,其中,目标错误类型选自目标命令聚类表示包含的错误类型。11.根据本公开的又一方面,提供了一种电子设备,包括:处理器;以及存储程序的存储器,其中,程序包括指令,指令在由处理器执行时使处理器执行本公开实施例的数据库访问错误监测方法或数据库访问错误分析方法。12.根据本公开的再一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开实施例的数据库访问错误监测方法或数据库访问错误分析方法。13.本公开实施例中提供的一个或多个技术方案,实现对业务请求的数据库访问的监测,将错误类型和错误消息与数据库实例信息和数据库命令关联,形成业务请求对应的数据库访问错误数据,便于分析数据库访问错误原因。附图说明14.在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:15.图1示出了本公开示例性实施例的数据库访问错误监测方法的流程图;16.图2示出了本公开示例性实施例的基于调用链追踪的数据库访问错误监测方法的流程图;17.图3示出了本公开示例性实施例的基于apmagent获取数据库访问错误数据的方法的流程图;18.图4示出了本公开示例性实施例的数据库访问错误分析方法的流程图;19.图5示出了本公开示例性实施例的错误类型的统计指标的图形用户界面;20.图6示出了本公开示例性实施例的命令聚类表示的统计指标的图形用户界面;21.图7示出了本公开示例性实施例的数据库访问错误分析方法的另一流程图;22.图8示出了本公开示例性实施例的数据库访问错误监测装置的示意性框图;23.图9示出了本公开示例性实施例的数据库访问错误分析装置的示意性框图;24.图10示出了本公开示例性实施例的数据库访问错误分析装置的另一示意性框图;25.图11示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。具体实施方式26.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。27.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。28.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。29.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。30.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。31.本公开的一些实施例涉及数据库访问错误监测的改进,本公开的另一些实施例涉及数据库访问错误分析的改进。下面结合附图对本公开的方案进行描述。32.本公开示例性实施例提供了一种数据库访问错误监测方法,下面以采集探针实现数据库访问错误监测方法为例进行说明,采集探针采集应用的数据,对应用的业务请求进行监测,该应用可包括但不限于单体应用、微服务系统中的服务单元。33.图1示出了本公开示例性实施例的数据库访问错误监测方法的流程图,如图1所示,该方法包括步骤s101至步骤s104。34.步骤s101,采集探针监听业务请求的数据库访问。35.步骤s102,采集探针在监听到数据库访问的情况下,获取数据库访问对应的数据库实例信息和数据库命令。36.步骤s103,采集探针在检测到数据库访问发生错误的情况下,获取错误的错误类型和错误消息。37.步骤s104,采集探针将错误类型和错误消息与数据库实例信息和数据库命令关联,形成业务请求对应的数据库访问错误数据。38.在本实施例中,实现了数据库访问错误数据的采集和关联,可降低数据库访问错误分析的成本,提高数据库访问错误分析的效果。39.作为一种实施方式,在步骤s101中,响应于业务请求,监听数据库驱动中被标识为数据库访问的方法。采集探针可采用埋点等方式监听被标识为数据库访问的方法,本实施例对此不作限定。40.在步骤s102中,数据库实例信息可用于标识数据库实例,数据库实例信息可包括但不限于:数据库类型(例如mysql、oracle、tidb等)、数据库地址(例如数据库服务所在的主机ip或域名,比如10.2.193.214,db.demo.com)和数据库服务进程对应的端口(例如3306,1521等)。作为一种实施方式,将数据库实例信息联合形成数据库实例的标识。作为一个示例,数据库实例的标识可表示为mysql/10.2.193.214:3306。41.在一些实施例中,采集探针在监听到数据库访问的情况下,还可获取数据库访问对应的数据库库名(schema),将数据库库名与数据库访问错误数据关联。对于一个数据库实例操作多个数据库的情形,可分别分析数据库实例的不同数据库库名对应的数据库访问错误,实现更为精细化的分析。作为一种实施方式,将数据库实例信息和数据库库名联合形成不同数据库实例的数据库库名的标识。作为一个示例,数据库实例的数据库库名的标识可表示为mysql/10.2.193.214:3306/vens_conf,其中vens_conf为数据库库名。42.在一些实施例中,采集探针响应于业务请求,获取业务请求对应的用户信息;将用户信息与数据库访问错误数据关联。将用户信息和数据库访问关联,可用于分析数据库访问错误对用户的影响,例如,一个或多个数据库访问错误影响的用户数。作为一种示例,用户信息可包括用户标识,用户标识的示例可包括但不限于用户名、手机号、卡号等。43.作为一种实施方式,通过调用链追踪将用户信息与数据库访问错误数据关联。作为一中示例,微服务系统中,在业务请求开始时,进行调用链跟踪,创建业务请求对应的调用链id,采集探针将业务请求的用户信息与调用链id关联。调用链在服务单元之间传递,采集探针从传递的调用链中获取用户信息,或者将数据库访问错误数据关联到调用链,在调用链路上传递。例如,采集探针在调用链路上的首个服务单元获取用户信息并关联到调用链,并在调用链路上传递,采集探针在调用链下游监测到数据库访问错误时将数据库访问错误数据与调用链关联,并在调用链路上传递。44.在一些实施例中,采集探针响应于业务请求,获取业务请求对应的业务数据,将业务数据与数据库访问错误数据关联。将业务请求过程中产生的业务数据采集出来与数据库访问关联,可用于评估数据库访问错误对业务的影响。业务数据的示例可包括但不限于:租户id、渠道号、订单号、产品id、转账金额等。数据库访问错误对业务的影响可包括但不限于:受影响的租户、受影响的订单号、受影响的转账总金额等。45.作为一种实施方式,通过调用链追踪将业务数据与数据库访问错误数据关联。对于业务数据分布于不同的服务单元的情形,调用链追踪可获得完整的业务数据。作为一种示例,微服务系统中,在业务请求开始时,进行调用链跟踪,创建业务请求对应的调用链id,采集探针在一个或多个服务单元获取业务请求的业务数据并与调用链id关联。调用链在服务单元之间传递,采集探针从传递的调用链中获取业务数据,或者将数据库访问错误数据关联到调用链,在调用链路上传递。例如,采集探针将调用链路上的一个或多个服务单元中获取部分业务数据关联到调用链,并在调用链路上传递,采集探针在监测到数据库访问错误时将数据库访问错误数据与调用链关联,并在调用链路上传递,可获得完整的业务数据并将其与数据库访问错误数据关联。46.在一些实施例中,采集探针将数据库访问错误数据与业务请求对应的调用链关联。在微服务系统中,通过将数据库访问错误数据关联到调用链,可将多个服务单元的数据库访问错误数据关联起来,可用于对业务请求全过程分析。作为一种实施方式,数据库访问错误数据作为调用链数据的一部分。作为另一种实施方式,将数据库访问错误数据与调用链id关联起来,从而基于数据库访问错误数据关联的调用链id,获得对应的调用链数据。47.下面对基于调用链追踪的数据库访问错误监测方法进行说明。48.图2示出了本公开示例性实施例的基于调用链追踪的数据库访问错误监测方法的流程图,如图2所示,该方法包括步骤s201至步骤s208。49.步骤s201,响应于业务请求,采集探针为该业务请求创建调用链。调用链具有调用链id。50.步骤s202,采集探针在执行该业务请求的一个或多个服务单元采集用户信息和/或业务数据,并将用户信息和/或业务数据关联到调用链。51.在步骤s202中,用户信息可包括用户名等,业务数据可包括购买的商品名称、支付的订单金额等。52.步骤s203,采集探针监听是否出现数据库访问,在监听到数据库访问的情况下,进入步骤s204。53.步骤s204,采集探针获取数据库访问的数据库实例信息。在步骤s204中,可获取数据库类型、数据库地址和数据库服务进程对应的端口,还可获取数据库库名。54.步骤s205,采集探针获取数据库访问的数据库命令。数据库命令可包括sql语句及sql参数。55.步骤s206,采集探针监听数据库访问是否出现错误,在监听到数据库访问出现错误的情况下,进入步骤s207。56.步骤s207,采集探针获取错误类型及错误消息。例如通过对exceptionhandler进行hook来获取错误类型及错误消息,但不限于此。57.步骤s208,采集探针将获取的数据关联到调用链。58.请求结束后,采集探针将调用链的数据发送到服务器。该调用链的数据中包括调用链id、数据库实例信息、数据库库名(可选)、数据库命令、错误类型和错误消息,以及其他一项或多项调用链监测数据。59.图3示出了本公开示例性实施例的基于apmagent(代理)获取数据库访问错误数据的方法的流程图,如图3所示,该方法包括步骤s301至步骤s304。60.步骤s301,应用启动时,嵌入apmagent,apmagent启动开始。61.步骤s302,对exceptionhandler进行hook。62.步骤s303,对数据库驱动进行适配,标识数据库驱动中特定方法的执行为数据库访问。63.步骤s304,apmagent启动结束。64.apmagent启动结束后进行调用链追踪和数据库访问错误监测。65.本公开示例性实施例提供了一种数据库访问错误分析方法,该方法由一个或多个位置中一个或多个计算机上实现。该一个或多个位置中的一个或多个计算机可包括终端和/或服务端及其他具备计算能力的设备。下面以服务端实现数据库访问错误分析方法为例进行说明。66.图4示出了本公开示例性实施例的数据库访问错误分析方法的流程图,该方法可定位数据库访问错误的原因,如图4所示,该方法包括步骤s401至步骤s403。67.步骤s401,服务器在数据库实例的数据库访问错误数据的第一集合中,确定目标错误类型在第一集合中对应的第二集合。68.数据库访问错误数据包括错误类型、错误消息、数据库实例信息和数据库命令。数据库访问错误数据可通过本公开前述实施例的方法采集。69.步骤s401中基于数据库实例信息确定数据库访问错误数据对应的数据库实例。70.步骤s401中的第一集合可根据一个或多个条件确定,例如时间范围等,本实施例对此不作限定。71.第一集合中可包含一种或多种错误类型,可选择一种或多种错误类型作为目标错误类型,对选择的目标错误类型进行分析。72.在本实施例中,对每个目标错误类型分别进行分析。每个目标错误类型对应于一个第二集合。例如,选择第一错误类型为目标错误类型,则第二集合为错误类型为第一错误类型的数据库访问错误数据。选择第一错误类型为第一目标错误类型,同时选择第二错误类型为第二目标错误类型,则第一目标错误类型对应的第二集合为错误类型为第一错误类型的数据库访问错误数据,则第二目标错误类型对应的第二集合为错误类型为第二错误类型的数据库访问错误数据。73.在本实施例中,以选择一个目标错误类型为例进行说明。在选择多个目标错误类型时,多个目标错误类型可分别进行类似的分析。74.步骤s402,服务器对第二集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第二集合中对应的第三集合。75.在步骤s402中,通过进行第一聚类将第二集合中的数据库命令分成由类似的数据库命令组成的多个类。由聚类所生成的簇是一组数据库命令的集合,这些数据库命令与同一个簇中的数据库命令彼此相似,与其他簇中的数据库命令相异。76.命令聚类表示用于描述聚类生成的簇,命令聚类表示描述簇中的数据库命令的相似特征。77.在步骤s402中,多个数据库命令可聚类为一个命令聚类表示。例如,第二集合中包括m个数据库访问错误数据,具有m个数据库命令,经过第一聚类可得到n个命令聚类表示,其中,n一般小于或远远小于m。n个命令聚类表示中的每个命令聚类表示由相应的数据库命令聚类得到,例如,命令聚类表示n1由m1个数据库命令得到,命令聚类表示n1则对应于该m1个数据库访问错误数据,命令聚类表示n1在第二集合中对应的第三集合为该m1个数据库访问错误数据。其中,该m1个数据库命令为聚类生成的簇,命令聚类表示n1为该m1个数据库命令的相似特征的描述。78.步骤s403,服务器对目标命令聚类表示对应的第三集合中的错误消息进行第二聚类,得到目标命令聚类表示对应的消息聚类表示。79.步骤s403中,目标命令聚类表示选自步骤s402进行第一聚类得到的一个或多个命令聚类表示。80.步骤s403中,可选择一个或多个目标命令聚类表示。在本实施例中,以选择一个目标命令聚类表示为例进行说明。在选择多个目标命令聚类表示时,可对每个目标命令聚类表示分别进行处理。81.在步骤s403中,通过进行第二聚类将目标命令聚类表示对应的第三集合中的错误消息分成由类似的错误消息组成的多个类。由聚类所生成的簇是一组错误消息的集合,这些错误消息与同一个簇中的错误消息彼此相似,与其他簇中的错误消息相异。82.消息聚类表示用于描述聚类生成的簇,消息聚类表示描述簇中的错误消息的相似特征。83.接前述示例,选择命令聚类表示n1为目标命令聚类表示,目标命令聚类表示对应的第三集合为前述m1个数据库访问错误数据,对该m1个数据库访问错误数据中的错误消息进行第二聚类,得到消息聚类表示。84.进一步的示例,该m1个数据库访问错误数据中可包含m1个错误消息,m1个错误消息可聚类得到p个消息聚类表示,一般p小于或远远小于m1。85.在本实施例中,对一个或多个错误类型分别进行分析,对于每个错误类型,对错误类型对应的数据库命令进行聚类,确定出该错误类型对应的命令聚类表示,从而得到导致该错误类型的数据库命令的归类,也就是哪几类数据库命令导致了该错误类型;进一步的,对一个或多个命令聚类表示分别进行分析,对于每个命令聚类表示,对命令聚类表示对应的数据库命令关联的错误消息进行聚类,确定出消息聚类表示,从而得到该类数据库命令导致数据库访问错误的原因归类。由此定位出数据库访问错误的原因。并且,基于错误类型和数据库命令的分析,缩小分析范围,可得到更精确的错误原因。86.在一些实施例中,可确定第二聚类得到的消息聚类表示的第一统计指标。该第一统计指标可包括但不限于各个消息聚类表示在目标命令聚类表示对应的第三集合中的数据库访问错误出现的次数和/或占比。作为一种示例,p个消息聚类表示对应于目标命令聚类表示对应的第三集合所包含的q个数据库访问错误,其中,消息聚类表示p1对应于q1个数据库访问错误,则消息聚类表示p1对应的占比为q1/q。类似的,p2对应于q2个数据库访问错误,p2对应的占比为q2/q。87.在一些实施例中,可确定第一集合中包含的错误类型的第二统计指标。该第二统计指标可包括但不限于第一集合中包含的各个错误类型在第一集合中的数据库访问错误出现的次数和/或占比。88.作为一种实施方式,基于第二统计指标和第一预设规则确定目标错误类型。作为一种示例,将第二统计指标中次数最多的错误类型作为目标错误类型。作为另一种示例,将第二统计指标中次数超过预设次数的错误类型作为目标错误类型。在确定出多个目标错误类型时,对每个目标错误类型分别进行步骤s402和步骤s403的处理。89.作为另一种实施方式,将第二统计指标提供给用户,例如显示第二统计指标的图形用户界面,示例性的图形用户界面如图5所示。由此,可使用户获知每个错误类型的严重程度。进一步的,接收用户选择的错误类型,例如,第二统计指标中次数最多的错误类型,以用户选择的错误类型为目标错误类型。在确定出多个目标错误类型时,对每个目标错误类型分别进行步骤s402和步骤s403的处理。90.在一些实施例中,可确定第一聚类得到的命令聚类表示的第三统计指标。该第三统计指标包括第一聚类得到的各个命令聚类表示在第二集合中的数据库访问错误出现的次数和/或占比。91.作为一种实施方式,基于第三统计指标和第二预设规则确定目标命令聚类表示。作为一种示例,将第三统计指标中次数最多的命令聚类表示作为目标命令聚类表示。作为另一种示例,将第三统计指标中次数超过预设次数的命令聚类表示作为目标命令聚类表示。在确定出多个目标命令聚类表示时,对每个目标命令聚类表示分别进行步骤s403的处理。92.作为另一种实施方式,将第三统计指标提供给用户,例如显示第三统计指标的图形用户界面,示例性的图形用户界面如图6所示。由此,可使用户获知每个命令聚类表示的严重程度。进一步的,接收用户选择的命令聚类表示,例如,第三统计指标中次数最多的命令聚类表示,以用户选择的命令聚类表示为目标命令聚类表示。在确定出多个目标命令聚类表示时,对每个命令聚类表示类型分别进行步骤s403的处理。93.在一些实施例中,可确定第一集合中包含的错误类型的第二统计指标,该第二统计指标可包括但不限于第一集合中包含的错误类型在第一集合中的数据库访问错误出现的次数和/或占比,基于第二统计指标和第一预设规则确定目标错误类型。进一步的,可确定第一聚类得到的命令聚类表示的第三统计指标,该第三统计指标包括第一聚类得到的各个命令聚类表示在第二集合中的数据库访问错误出现的次数和/或占比,基于第三统计指标和第二预设规则确定目标命令聚类表示。进一步的,可确定第二聚类得到的消息聚类表示的第一统计指标,该第一统计指标可包括但不限于各个消息聚类表示在目标命令聚类表示对应的第三集合中的数据库访问错误出现的次数和/或占比。94.在一些实施例,可确定第一集合中包含的错误类型的第二统计指标,该第二统计指标可包括但不限于第一集合中包含的各个错误类型在第一集合中的数据库访问错误出现的次数和/或占比,将第二统计指标提供给用户,例如显示第二统计指标的图形用户界面,示例性的图形用户界面如图5所示;接收用户选择的错误类型,例如,第二统计指标中次数最多的错误类型,以用户选择的错误类型为目标错误类型。进一步的,可确定第一聚类得到的命令聚类表示的第三统计指标,该第三统计指标包括第一聚类得到的各个命令聚类表示在第二集合中的数据库访问错误出现的次数和/或占比,将第三统计指标提供给用户,例如显示第三统计指标的图形用户界面,示例性的图形用户界面如图6所示;接收用户选择的命令聚类表示,例如,第三统计指标中次数最多的命令聚类表示,以用户选择的命令聚类表示为目标命令聚类表示。进一步的,可确定第二聚类得到的消息聚类表示的第一统计指标,该第一统计指标可包括但不限于各个消息聚类表示在目标命令聚类表示对应第三集合中的数据库访问错误出现的次数和/或占比,将第一统计指标提供给用户。95.在一些实施例中,数据库访问错误数据与用户信息关联。可基于数据库访问错误数据关联的用户信息,分析数据库访问错误对用户的影响。96.作为一种实施方式,根据用户信息确定第二聚类得到的消息聚类表示在目标命令聚类表示对应的第三集合中的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定各个消息聚类表示对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,接前述示例,消息聚类表示p1对应于目标命令聚类表示对应的第三集合所包含的q1个数据库访问错误,q1个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。97.作为一种实施方式,根据用户信息确定第一集合中包含的错误类型在第一集合中的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定各个错误类型对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,第一集合包括y种错误类型,错误类型y1对应于y11个数据库访问错误,y11个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。98.作为一种实施方式,根据用户信息确定第一聚类得到的命令聚类表示在第二集合的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定各个命令聚类表示对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,接前述示例,命令聚类表示n1对应于第二集合所包含的m1个数据库访问错误,m1个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。99.在一些实施中,数据库访问错误数据与业务数据关联。可基于数据库访问错误数据关联的业务数据分析数据库访问错误对业务的影响。100.作为一种实施方式,根据业务数据确定第二聚类得到的消息聚类表示在目标命令聚类表示对应的第三集合中的业务统计信息。作为一种示例,确定各个消息聚类表示对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,消息聚类表示p1对应于目标命令聚类表示对应的第三集合所包含的q1个数据库访问错误,q1个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个消息聚类表示对应的转账金额,确定每个消息聚类表示对应的转账总金额。例如,消息聚类表示p1对应于目标命令聚类表示对应的第三集合所包含的q1个数据库访问错误,q1个数据库访问错误包括x个转账金额,则消息聚类表示p1对应的转账总金额可为x个转账金额之和。101.作为一种实施方式,根据业务数据确定第一集合中包含的错误类型在第一集合中的业务统计信息。作为一种示例,确定各个错误类型对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,第一集合包括y种错误类型,错误类型y1对应于y11个数据库访问错误,y11个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个错误类型对应的转账金额,确定每个消息聚类表示对应的转账总金额。例如,第一集合包括y种错误类型,错误类型y1对应于y11个数据库访问错误,y11个数据库访问错误对应于x个转账金额,则错误类型y1对应的转账总金额可为x个转账金额之和。102.作为一种实施方式,根据业务数据确定第一聚类得到的命令聚类表示在第二集合的业务统计信息。作为一种示例,确定各个命令聚类表示对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,命令聚类表示n1对应于第二集合所包含的m1个数据库访问错误,m1个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个命令聚类表示对应的转账金额,确定每个命令聚类表示对应的转账总金额。例如,命令聚类表示n1对应于第二集合所包含的m1个数据库访问错误,m1个数据库访问错误对应于x个转账金额,则命令聚类表示n1对应的转账总金额可为x个转账金额之和。103.本公开示例性实施例还提供了另一种数据库访问错误分析方法。104.图7示出了本公开示例性实施例的数据库访问错误分析方法的另一流程图,如图7所示,该方法包括步骤s701至步骤s703。105.步骤s701,服务器对数据库实例的数据库访问错误数据的第一集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第一集合中对应的第二集合。106.数据库访问错误数据包括:错误类型、错误消息、数据库实例信息和数据库命令。数据库访问错误数据可通过本公开前述实施例的方法采集。107.步骤s701中基于数据库实例信息确定数据库访问错误数据对应的数据库实例。108.步骤s701中的第一集合可根据一个或多个条件确定,例如时间范围等,本实施例对此不作限定。109.在步骤s701中,通过进行第一聚类将第一集合中的数据库命令分成由类似的数据库命令组成的多个类。由聚类所生成的簇是一组数据库命令的集合,这些数据库命令与同一个簇中的数据库命令彼此相似,与其他簇中的数据库命令相异。110.命令聚类表示用于描述聚类生成的簇,命令聚类表示描述簇中的数据库命令的相似特征。111.在步骤s701中,多个数据库命令可聚类为一个命令聚类表示。例如,第一集合中包括m个数据库访问错误数据,具有m个数据库命令,经过第一聚类可得到n个命令聚类表示,其中,n一般小于或远远小于m。n个命令聚类表示中的每个命令聚类表示由相应的数据库命令聚类得到,例如,命令聚类表示n1由m1个数据库命令得到,命令聚类表示n1则对应于该m1个数据库访问错误数据,命令聚类表示n1在第一集合中对应的第二集合为该m1个数据库访问错误数据。其中,该m1个数据库命令为聚类生成的簇,命令聚类表示n1为该m1个数据库命令的相似特征的描述。112.步骤s702,服务器在目标命令聚类表示对应的第二集合中,确定目标命令聚类表示包含的错误类型及其在第二集合中对应的第三集合。113.在步骤s702中,目标命令聚类表示选自第一聚类得到的命令聚类表示。114.在步骤s702中,可选择一个或多个目标命令聚类表示。在本实施例中,以选择一个目标命令聚类表示为例进行说明。在选择多个目标命令聚类表示时,可对每个目标命令聚类表示分别进行处理。115.接前述示例,选择命令聚类表示n1为目标命令聚类表示,目标命令聚类表示对应的第二集合为前述m1个数据库访问错误数据。该m1个数据库访问错误可包含p种错误类型,每种错误类型包含一个或多个数据库访问错误数据。例如,错误类型p1,包含前述m1个数据库访问错误中的q1个数据库访问错误数据,该q1个数据库访问错误数据即为错误类型p1在第二集合中的第三集合。类似的,错误类型p2,包含前述m1个数据库访问错误中的q2个数据库访问错误数据,该q2个数据库访问错误数据即为错误类型p2在第二集合中的第三集合。116.步骤s703,服务器对目标错误类型对应的第三集合中的错误消息进行第二聚类,得到目标错误类型对应的消息聚类表示。117.在步骤s703中,目标错误类型选自目标命令聚类表示包含的错误类型。118.在本实施例中,对每个目标错误类型分别进行分析。每个目标错误类型对应于一个第三集合。例如,选择第一错误类型为目标错误类型,则第三集合为错误类型为第一错误类型的数据库访问错误数据。选择第一错误类型为第一目标错误类型,同时选择第二错误类型为第二目标错误类型,则第一目标错误类型对应的第三集合为错误类型为第一错误类型的数据库访问错误数据,则第二目标错误类型对应的第三集合为错误类型为第二错误类型的数据库访问错误数据。119.在本实施例中,以选择一个目标错误类型为例进行说明。在选择多个目标错误类型时,多个目标错误类型可分别进行类似的分析。120.在步骤s703中,通过进行第二聚类将目标错误类型对应的第三集合中的错误消息分成由类似的错误消息组成的多个类。由聚类所生成的簇是一组错误消息的集合,这些错误消息与同一个簇中的错误消息彼此相似,与其他簇中的错误消息相异。121.消息聚类表示用于描述聚类生成的簇,消息聚类表示描述簇中的错误消息的相似特征。122.接前述示例,选择错误类型p1为目标错误类型,目标错误类型对应的第三集合为前述q1个数据库访问错误数据,对该q1个数据库访问错误数据中的错误消息进行第二聚类,得到消息聚类表示。123.进一步的示例,该q1个数据库访问错误数据中可包含y1个错误消息,y1个错误消息可聚类得到z个消息聚类表示,一般z小于或远远小于y1。124.在本实施例中,对数据库访问错误数据的集合中数据库命令进行聚类,得到数据库命令的归类,确定归类包含的错误类型,可获得数据库命令发生的错误类型。进一步的,对错误类型对应的错误消息进行聚类,得到错误消息的归类,可定位得到错误类型的原因。并且,基于错误类型和数据库命令的分析,缩小分析范围,可得到更精确的错误原因。125.在一些实施例中,可确定第二聚类得到的消息聚类表示的第一统计指标。该第一统计指标可包括但不限于各个消息聚类表示在目标错误类型对应的第三集合中的数据库访问错误出现的次数和/或占比。作为一种示例,z个消息聚类表示对应于在目标错误类型对应的第三集合所包含的q个数据库访问错误,其中,消息聚类表示z1对应于q1个数据库访问错误,则消息聚类表示z1对应的占比为q1/q。类似的,z2对应于q2个数据库访问错误,z2对应的占比为q2/q。126.在一些实施例中,可确定目标命令聚类表示包含的错误类型的第二统计指标。该第二统计指标可包括该各个错误类型在目标命令聚类表示对应的第二集合中的数据库访问错误出现的次数和/或占比。127.作为一种实施方式,基于第二统计指标和第一预设规则确定目标错误类型。作为一种示例,将第二统计指标中次数最多的错误类型作为目标错误类型。作为另一种示例,将第二统计指标中次数超过预设次数的错误类型作为目标错误类型。在确定出多个目标错误类型时,对每个目标错误类型分别进行步骤s703的处理。128.作为另一种实施方式,将第二统计指标提供给用户,例如显示第二统计指标的图形用户界面,示例性的图形用户界面如图5所示。由此,可使用户获知每个错误类型的严重程度。进一步的,接收用户选择的错误类型,例如,第二统计指标中次数最多的错误类型,以用户选择的错误类型为目标错误类型。在确定出多个目标错误类型时,对每个目标错误类型分别进行步骤s703的处理。129.在一些实施例中,可确定第一聚类得到的命令聚类表示的第三统计指标,第三统计指标包括第一聚类得到的命令聚类表示在第一集合中的数据库访问错误出现的次数和/或占比。130.作为一种实施方式,基于第三统计指标和第二预设规则确定目标命令聚类表示。作为一种示例,将第三统计指标中次数最多的命令聚类表示作为目标命令聚类表示。作为另一种示例,将第三统计指标中次数超过预设次数的命令聚类表示作为目标命令聚类表示。在确定出多个目标命令聚类表示时,对每个目标命令聚类表示分别进行步骤s702和步骤s703的处理。131.作为另一种实施方式,将第三统计指标提供给用户,例如显示第三统计指标的图形用户界面,示例性的图形用户界面如图6所示。由此,可使用户获知每个命令聚类表示的严重程度。进一步的,接收用户选择的命令聚类表示,例如,第三统计指标中次数最多的命令聚类表示,以用户选择的命令聚类表示为目标命令聚类表示。在确定出多个目标命令聚类表示时,对每个命令聚类表示类型分别进行步骤s702和步骤s703的处理。132.在一些实施例中,可确定第一聚类得到的命令聚类表示的第三统计指标,该第三统计指标包括第一聚类得到的命令聚类表示在第一集合中的数据库访问错误出现的次数和/或占比,基于第三统计指标和第二预设规则确定目标命令聚类表示。进一步的,可确定目标命令聚类表示对应的第二集合中包含的各个错误类型的第二统计指标,该第二统计指标可包括但不限于该各个错误类型在目标命令聚类表示对应的第二集合中的数据库访问错误出现的次数和/或占比,基于第二统计指标和第一预设规则确定目标错误类型。进一步的,可确定第二聚类得到的消息聚类表示的第一统计指标,该第一统计指标可包括但不限于各个消息聚类表示在目标错误类型对应的第三集合中的数据库访问错误出现的次数和/或占比。133.在一些实施例,可确定第一聚类得到的命令聚类表示的第三统计指标,该第三统计指标包括各个命令聚类表示在第一集合中的数据库访问错误出现的次数和/或占比,将第三统计指标提供给用户,例如显示第三统计指标的图形用户界面,示例性的图形用户界面如图6所示;接收用户选择的命令聚类表示,例如,第三统计指标中次数最多的命令聚类表示,以用户选择的命令聚类表示为目标命令聚类表示。进一步的,可确定目标命令聚类表示对应的第二集合中包含的各个错误类型的第二统计指标,该第二统计指标可包括但不限于该各个错误类型在目标命令聚类表示对应的第二集合中的数据库访问错误出现的次数和/或占比,将第二统计指标提供给用户,例如显示第二统计指标的图形用户界面,示例性的图形用户界面如图5所示;接收用户选择的错误类型,例如,第二统计指标中次数最多的错误类型,以用户选择的错误类型为目标错误类型。进一步的,可确定第二聚类得到的消息聚类表示的第一统计指标,该第一统计指标可包括但不限于各个消息聚类表示在目标错误类型对应的第三集合中的数据库访问错误出现的次数和/或占比,将第一统计指标提供给用户。134.在一些实施例中,数据库访问错误数据于用户信息关联。可基于数据库访问错误数据关联的用户信息,分析数据库访问错误对用户的影响。135.作为一种实施方式,根据用户信息确定第二聚类得到的消息聚类表示在目标错误类型对应的第三集合中的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定各个消息聚类表示对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,接前述示例,消息聚类表示p1对应于目标错误类型对应的第三集合所包含的q1个数据库访问错误,q1个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。136.作为一种实施方式,根据用户信息确定目标命令聚类表示包含的各个错误类型在目标命令聚类表示对应的第二集合中的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定该各个错误类型对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,目标命令聚类表示对应的第二集合包括y种错误类型,错误类型y1对应于y11个数据库访问错误,y11个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。137.作为一种实施方式,根据用户信息确定第一聚类得到的各个命令聚类表示在第一集合中的用户统计信息,该用户统计信息可提供给用户。作为一种示例,确定各个命令聚类表示对应的用户,并统计每个用户对应的数据库访问错误的次数和/或占比。例如,命令聚类表示n1对应于m1个数据库访问错误,m1个数据库访问错误对应于x个用户,用户x1对应于x11次数据库访问错误,用户x2对应于x21次数据库访问错误。138.在一些实施中,数据库访问错误数据与业务数据关联。可基于数据库访问错误数据关联的业务数据分析数据库访问错误对业务的影响。139.作为一种实施方式,根据业务数据确定第二聚类得到的消息聚类表示在目标错误类型对应的第三集合中的业务统计信息。作为一种示例,确定各个消息聚类表示对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,消息聚类表示p1对应于q1个数据库访问错误,q1个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个消息聚类表示对应的转账金额,确定每个消息聚类表示对应的转账总金额。例如,消息聚类表示p1对应于q1个数据库访问错误,q1个数据库访问错误包括x个转账金额,则消息聚类表示p1对应的转账总金额可为x个转账金额之和。140.作为一种实施方式,根据业务数据确定第二集合中包含的错误类型在目标命令聚类表示对应的第二集合中的业务统计信息。作为一种示例,确定各个错误类型对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,目标命令聚类表示对应的第二集合包括y种错误类型,错误类型y1对应于该第二集合包含的y11个数据库访问错误,y11个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个错误类型对应的转账金额,确定每个消息聚类表示对应的转账总金额。例如,目标命令聚类表示对应的第二集合包括y种错误类型,错误类型y1对应于y11个数据库访问错误,y11个数据库访问错误对应于x个转账金额,则错误类型y1对应的转账总金额可为x个转账金额之和。141.作为一种实施方式,根据业务数据确定第一聚类得到的命令聚类表示在第一集合中的业务统计信息。作为一种示例,确定各个命令聚类表示对应的商品,并统计每个商品对应的数据库访问错误的次数和/或占比。例如,命令聚类表示n1对应于第一集合中的m1个数据库访问错误,m1个数据库访问错误对应于x个商品,商品x1对应于x11次数据库访问错误,商品x2对应于x21次数据库访问错误。作为另一种示例,确定各个命令聚类表示对应的转账金额,确定每个命令聚类表示对应的转账总金额。例如,命令聚类表示n1对应于第一集合中的m1个数据库访问错误,m1个数据库访问错误对应于x个转账金额,则命令聚类表示n1对应的转账总金额可为x个转账金额之和。142.下面对本公开示例性实施例的第一聚类和第二聚类进行说明。143.在一些实施例中,基于第一预设规则进行第一聚类,其中,第一预设规则基于数据库命令的语法。作为一种实施方式,基于第一预设规则进行第一聚类,包括以下至少之一:将数据库命令中的参数(parameters)替换为第一字符(例如占位符“?”);将数据库命令中的字段名替换为第二字符(例如“…”);删除数据库命令中对数据库对象的操作之外的其余操作;在数据库命令超过预设字符数时,对数据库命令进行截取,得到预设字符数的部分,例如,数据库命令超过2000个字符时进行截断,预设字符数可配置,如将2000调整为20000。144.在一些实施例中,基于第一聚类模型进行第一聚类。第一聚类模型为机器学习模型。作为一种实施方式,第一聚类模型包括划分聚类模型,例如k-means模型等。作为另一种实施方式,第一聚类模型为神经网络模型,例如自组织映射网络(self-organizingmaps,简称为som)模型等。145.在一些实施例中,基于第一聚类模型和第一预设规则进行第一聚类。146.在一些实施例中,基于第二预设规则进行第二聚类,其中,第二预设规则基于数据库驱动中错误消息的定义。作为一种实施方式,第二预设规则为对错误消息中的变量(例如,纯数字、通用唯一识别码(uuid)、md5等)进行模糊化混淆处理。147.在一些实施例中,基于第二聚类模型进行第二聚类。作为一种实施方式,基于第二聚类模型识别错误消息中的变量;对识别到的变量进行模糊化混淆处理。第二聚类模型可包括划分聚类模型、som模型等。148.在一些实施例中,基于第二聚类模型和第二预设规则进行第二聚类。作为一种实施方式,基于第二预设规则对数据库系统返回的错误消息进行第二聚类,基于第二聚类模型对用户定义的错误的错误消息进行第二聚类。149.下面对公开的一个具体实施例进行描述。150.在本实施例中,通过apm探针实时获取it应用在访问数据库过程中发生的各种错误,将错误的产生都关联访问it系统的用户,请求参数、上下文、业务数据(如订单号、手机号、卡号等),以及完整调用链的数据,数据库访问sql语句,数据库访问sql参数,错误日志、错误消息、代码堆栈、主机、中间件、进程等数据。通过对sql语句、错误消息、代码调用栈进行聚合算法学习、训练,推导错误的根因;通过时序多指标关联分析,分析多指标的相关性分析。151.在本实施例中,自动分析数据库访问错误根因的方法,包括:步骤(1)获取数据库访问错误数据;步骤(2)对错误进行趋势分析;步骤(3)对错误类型进行分类统计汇总;步骤(4)对数据库访问sql进行分类统计汇总;步骤(5)对错误消息进行聚合分析;步骤(6)得出根因。152.步骤(1)中获取数据库访问错误数据使用apm探针,自动注入、拦截exceptionhandle、获取方法参数等。在本实施例中将数据库访问错误定义为:应用在使用数据库驱动访问(查询、插入、更新等)数据库系统时,产生的数据库错误。本步骤中apm探针对不同数据库系统厂商(如:oracle、mysql、sqlserver、postgresql等)提供的驱动进行适配,拦截数据库访问核心方法,从而获取数据库访问时发生的代码错误,并将该错误归类为数据库类型错误,获取错误类型、错误消息、代码堆栈、数据库实例、数据库schema、sql语句、sql参数等信息。153.其中,步骤(1)使用apm代理(agent)获取数据库访问错误数据,包括以下几个步骤:1)、启动时,嵌入apmagent,对exceptionhandler进行hook;2)、对数据库驱动进行适配,标识数据库驱动中特定方法的执行为数据库访问;3)、运行时,当数据库驱动中特定方法的执行发出错误时,获取错误类型和错误消息,数据库实例、数据库schema、sql语句等信息。154.步骤(2)中识别到数据类型错误后,关联到某一个数据库实例和schema上,首先对数据库实例统计错误次数;以数据库实例为单位,对数据库实例进行数据库访问错误的趋势分析。错误相关指标可包括:请求数、错误数、错误率等。155.其中,步骤(2)对数据库访问错误进行汇总统计,可包括1)、数据库实例维度汇总数据库访问错误次数,计算错误占比;2)、数据库实例错误分析维度、按时间序列,统计每分钟数据库访问次数,错误次数,错误率等。156.步骤(3)中对错误类型进行分类统计汇总。对于数据库访问错误类型分类的统计则关注各个分类的错误次数、错误率、影响的用户数(例如,共6位用户受到影响,可列出用户信息和对应的错误次数、错误占比)、业务影响范围(例如,共6个产品受到影响,可列出产品id和对应的错误次、错误占比)。157.在上述步骤中,数据库访问错误的采集中,包含了数据库访问sql语句信息,同一个错误类型,可能有多个sql语句的执行导致,因此在步骤(4)对sql语句进行聚类分析,以缩小根因分析的范围。158.其中,步骤(3)对数据库访问错误类型,通过聚类算法,统计每个错误类型的次数,计算其在所有数据库访问错误中的占比。按照占比倒序排序,列出错误类型列表。同时需要列出影响用户数和业务影响范围。159.用户为访问当前业务的真实用户,通过用户名、手机号、卡号等信息标识。依托apm全链路监控能力,将用户和数据库访问关联,当数据库访问出现错误的时候,即可以知道,该数据库访问错误影响的用户数。160.业务数据是企业服务数据中的核心数据。业务数据经常存储在调用链的各个节点,如:请求参数、方法入参、方法返回值等。依托apm探针的数据采集能力,结合全链路监控能力,将业务访问过程中产生的业务数据(如:租户id、渠道号、订单号、基金产品id、转账金额等)采集出来跟数据库访问关联,当数据库访问出现错误时,即可以评估对业务的影响(如:受影响的租户、受影响的订单号、受影响的转账总金额等)。161.步骤(4)中通过针对某一个特定数据库错误类型,分析引起该错误的sql语句的分类占比。每一次数据库异常发生时,apm探针都可获取sql语句,通过对多次sql的聚合分析,可以得到sql语句的分布情况。例如,如下表所示。162.sql语句(聚类表示)次数insertintotest_user2values(?,to_char(sysdate,?))1232selectxfromtest_user387insertintotest_user(?)values(?)195insertintotest_user(id)values(?)195insertintotest_user(id,name)values(?,to_char(sysdate,?))195163.步骤(4)在上述步骤(3)中,列出了数据库访问错误类型的名称及其占比,选择一个错误类型,分析该类型哪些sql语句产生,包括sql语句、发出错误的次数、以及占比。包含以下几个步骤:1)、采集sql语句;2)、关联sql语句与数据库访问错误;3)、sql聚类统计,统计sql引发数据库访问错误的次数;4)、计算错误占比。164.sql的聚类分析,基于规则或基于机器学习模型,可将sql语句中的变量(如:纯数字、uuid、ai学习的变量等)混淆模糊处理,以保证统计的准确性。165.在步骤(4)中,同一类型的sql参数的错误类型通常一致,基于错误类型 sql语句的分析,缩小根因分析的范围,以便得到更精确的错误根本原因。166.步骤(5)是依据在上述步骤(4)的sql语句的分析,分析该sql在执行过程中,抛出数据库错误的错误消息。错误消息经常包含变量,因此,对错误消息进行聚合学习,例如基于规则或基于机器学习模型,从而得到错误消息的占比,根据占比排序,推导数据库访问异常的根本原因,例如,“100%因为ora-*:tableorviewdoesnotexist”。167.其中,步骤(5)对错误消息进行聚合分析。经过步骤(4)的联合分析,已经锁定一类sql发生的具体错误类型,本步骤将该错误类型的错误消息(指exceptionmessage)进行聚合分析。错误消息具备多样性,分为两种类型:168.类型一由数据库系统返回,数据库驱动中定义,具有一定的规则。类似:[0169]“ora-0001:dup_val_on_index”[0170]“ora-6533:subscript-beyond-count”[0171]“ora-00019:超出最大会话许可数”[0172]“…….”[0173]类型二用户定义的错误等,具有随机性,没有规则。[0174]因此,对错误消息基于规则或基于机器学习模型进行分词、聚类和识别变量。规则包括纯数字、uuid,md5等;基于机器学习模型,可经过学习,以识别错误消息中的变量。识别到变量后,进行模糊化混淆处理,处理的结果再次进行聚合分析统计。统计的结果包含,聚合后的错误消息及其占比。[0175]步骤(6)根据上述步骤,即可得出数据库访问错误的根因。例如前述的“100%因为ora-*:tableorviewdoesnotexist”。可以得到错误类型的占比、sql分布占比以及错误消息占比,三项占比最高的即可认为该错误的根因。[0176]下面对实现本公开实施例的方法的装置进行描述。[0177]图8示出了本公开示例性实施例的数据库访问错误监测装置的示意性框图,如图8所示,该装置包括:监听模块810,用于监听业务请求的数据库访问。第一获取模块820,与舰艇模块810连接,用于在监听到数据库访问的情况下,获取数据库访问对应的数据库实例信息和数据库命令。第二获取模块830,与第一获取模块820连接,用于在检测到数据库访问发生错误的情况下,获取错误的错误类型和错误消息。关联模块840,与第一获取模块820和第二获取模块830连接,用于将错误类型和错误消息与数据库实例信息和数据库命令关联,形成业务请求对应的数据库访问错误数据。[0178]在一些实施例中,数据库访问错误监测装置还包括:用于在监听到数据库访问的情况下,获取数据库访问对应的数据库库名的模块。关联模块840,还用于将数据库库名与数据库访问错误数据关联。[0179]在一些实施例中,数据库访问错误监测装置还包括:用于响应于业务请求,获取业务请求对应的用户信息的模块。关联模块840,还用于将用户信息与数据库访问错误数据关联。[0180]在一些实施例中,数据库访问错误监测装置还包括:用于响应于业务请求,获取业务请求对应的业务数据的模块。关联模块840,还用于将业务数据与数据库访问错误数据关联。[0181]在一些实施例中,关联模块840,还用于将数据库访问错误数据与业务请求对应的调用链关联。[0182]在一些实施例中,监听模块810,用于响应于业务请求,监听数据库驱动中被标识为数据库访问的方法。[0183]图9示出了本公开示例性实施例的数据库访问错误分析装置的示意性框图,如图9所示,该装置包括:确定模块910,用于在数据库实例的数据库访问错误数据的第一集合中,确定目标错误类型在第一集合中对应的第二集合,目标错误类型选自第一集合中的错误类型。第一聚类模块920,与确定模块910连接,用于对第二集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第二集合中对应的第三集合。第二聚类模块930,与第一聚类模块920相连,用于对目标命令聚类表示对应的第三集合中的错误消息进行第二聚类,得到目标命令聚类表示对应的消息聚类表示,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示。[0184]在一些实施例中,确定模块910还用于:[0185]确定第二聚类得到的消息聚类表示的第一统计指标,第一统计指标包括各个消息聚类表示在目标命令聚类表示对应的第三集合中的数据库访问错误出现的次数和/或占比;和/或[0186]确定第一集合中包含的错误类型的第二统计指标,第二统计指标包括第一集合中包含的错误类型在第一集合中的数据库访问错误出现的次数和/或占比;和/或[0187]确定第一聚类得到的命令聚类表示的第三统计指标,第三统计指标包括第一聚类得到的命令聚类表示在第二集合中的数据库访问错误出现的次数和/或占比。[0188]在一些实施例中,确定模块910还用于:[0189]根据用户信息确定第二聚类得到的消息聚类表示在目标命令聚类表示对应的第三集合中的用户统计信息;和/或[0190]根据用户信息确定第一集合中包含的错误类型在第一集合中的用户统计信息;和/或[0191]根据用户信息确定第一聚类得到的命令聚类表示在第二集合中的用户统计信息。[0192]在一些实施例中,确定模块910还用于:[0193]根据业务数据确定第二聚类得到的消息聚类表示在目标命令聚类表示对应的第三集合中的业务统计信息;和/或[0194]根据业务数据确定第一集合中包含的错误类型在第一集合中的业务统计信息;和/或[0195]根据业务数据确定第一聚类得到的命令聚类表示在第二集合中的业务统计信息。[0196]在一些实施例中,第一聚类模块920,用于基于第一预设规则和/或第一聚类模型进行第一聚类,其中,第一预设规则基于数据库命令的语法。[0197]在一些实施例中,第一聚类模块920,用于基于第一预设规则进行第一聚类,包括以下至少之一:将数据库命令中的参数替换为第一字符;将数据库命令中的字段名替换为第二字符;删除数据库命令中对数据库对象的操作之外的其余操作;在数据库命令超过预设字符数时,对数据库命令进行截取,得到预设字符数的部分。[0198]在一些实施例中,第二聚类模块930,用于基于第二预设规则和/或第二聚类模型进行第二聚类,其中,第二预设规则基于数据库驱动中错误消息的定义。[0199]在一些实施例中,第二聚类模块930,用于基于第二聚类模型进行第二聚类,包括:基于第二聚类模型识别错误消息中的变量;对识别到的变量进行模糊化混淆处理。[0200]图10示出了本公开示例性实施例的数据库访问错误分析装置的另一示意性框图,如图10所示,该装置包括:第一聚类模块1010,用于对数据库实例的数据库访问错误数据的第一集合中的数据库命令进行第一聚类,得到命令聚类表示及其在第一集合中对应的第二集合。确定模块1020,与第一聚类模块1010连接,用于在目标命令聚类表示对应的第二集合中,确定目标命令聚类表示包含的错误类型及其在第二集合中对应的第三集合,其中,目标命令聚类表示选自第一聚类得到的命令聚类表示。第二聚类模块1030,与确定模块1020连接,用于对目标错误类型对应的第三集合中的错误消息进行第二聚类,得到目标错误类型对应的消息聚类表示,其中,目标错误类型选自目标命令聚类表示包含的错误类型。[0201]在一些实施例中,确定模块1020还用于:[0202]根据用户信息确定第二聚类得到的消息聚类表示在目标错误类型对应的第三集合中的用户统计信息;和/或[0203]根据用户信息确定目标命令聚类表示包含的错误类型在目标命令聚类表示对应的第二集合中的用户统计信息;和/或[0204]根据用户信息确定第一聚类得到的命令聚类表示在第一集合中的用户统计信息。[0205]在一些实施例中,确定模块1020还用于:[0206]根据业务数据确定第二聚类得到的消息聚类表示在目标错误类型对应的第三集合中的业务统计信息;和/或[0207]根据业务数据确定目标命令聚类表示包含的错误类型在目标命令聚类表示对应的第二集合中的业务统计信息;和/或[0208]根据业务数据确定第一聚类得到的命令聚类表示在第一集合中的业务统计信息。[0209]在一些实施例中,第一聚类模块1010,用于基于第一预设规则和/或第一聚类模型进行第一聚类,其中,第一预设规则基于数据库命令的语法。[0210]在一些实施例中,第一聚类模块1010,用于基于第一预设规则进行第一聚类,包括以下至少之一:将数据库命令中的参数替换为第一字符;将数据库命令中的字段名替换为第二字符;删除数据库命令中对数据库对象的操作之外的其余操作;在数据库命令超过预设字符数时,对数据库命令进行截取,得到预设字符数的部分。[0211]在一些实施例中,第二聚类模块1030,用于基于第二预设规则和/或第二聚类模型进行第二聚类,其中,第二预设规则基于数据库驱动中错误消息的定义。[0212]在一些实施例中,第二聚类模块1030,用于基于第二聚类模型进行第二聚类,包括:基于第二聚类模型识别错误消息中的变量;对识别到的变量进行模糊化混淆处理。[0213]本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。存储器存储有能够被至少一个处理器执行的计算机程序,计算机程序在被至少一个处理器执行时用于使电子设备执行根据本公开实施例的方法。[0214]本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本公开实施例的方法。[0215]本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本公开实施例的方法。[0216]参考图11,现将描述可以作为本公开的服务器或客户端的电子设备1100的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。[0217]如图11所示,电子设备1100包括计算单元1101,其可以根据存储在只读存储器(rom)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(ram)1103中的计算机程序,来执行各种适当的动作和处理。在ram1103中,还可存储设备1100操作所需的各种程序和数据。计算单元1101、rom1102以及ram1103通过总线1104彼此相连。输入/输出(i/o)接口1105也连接至总线1104。[0218]电子设备1100中的多个部件连接至i/o接口1105,包括:输入单元1106、输出单元1107、存储单元1108以及通信单元1109。输入单元1106可以是能向电子设备1100输入信息的任何类型的设备,输入单元1106可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1107可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1104可以包括但不限于磁盘、光盘。通信单元1109允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙tm设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。[0219]计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理。例如,在一些实施例中,数据库访问错误监测方法、数据库访问错误分析方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由rom1102和/或通信单元1109而被载入和/或安装到电子设备1100上。在一些实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据库访问错误监测方法、数据库访问错误分析方法。[0220]用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。[0221]在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。[0222]如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。[0223]为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。[0224]可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。[0225]计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献