一種數(shù)據(jù)庫(kù)監(jiān)控方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)庫(kù)監(jiān)控方法及系統(tǒng),首先根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中,并設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑;在啟動(dòng)應(yīng)用服務(wù)器,加載SQL監(jiān)控程序,根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句,并對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式,最后將加工后的SQL語(yǔ)句按照配置的輸出路徑輸出。通過(guò)本發(fā)明所述的方法及系統(tǒng),使在沒(méi)有程序開(kāi)發(fā)背景的操作人員可以快速的獲取數(shù)據(jù)庫(kù)執(zhí)行日志,以幫助完成對(duì)應(yīng)用程序的修改、分析、調(diào)優(yōu)等相關(guān)工作。
【專(zhuān)利說(shuō)明】一種數(shù)據(jù)庫(kù)監(jiān)控方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,具體涉及一種數(shù)據(jù)庫(kù)監(jiān)控方法及系統(tǒng)。
【背景技術(shù)】
[0002]SQL TRACE是Oracle公司提供的用于進(jìn)行SQL跟蹤的技術(shù)手段,在日常的數(shù)據(jù)庫(kù)SQL問(wèn)題診斷和解決中,SQL TRACE的純Dos界面操作、復(fù)雜的SQL命令撰寫(xiě)(包含SQLTRACE的啟用、禁用、范圍界定等等)讓一些無(wú)軟件程序開(kāi)發(fā)基礎(chǔ)或是初級(jí)程序開(kāi)發(fā)人員在日常的工作中無(wú)法得到應(yīng)用。
[0003]SQL TRACE—次跟蹤可以分為以下幾步:
[0004]1、界定需要跟蹤的目標(biāo)范圍
[0005]2、使命令啟用所需跟蹤
[0006]3、經(jīng)過(guò)一段時(shí)間后,停止跟蹤。此時(shí)應(yīng)該產(chǎn)生了一個(gè)跟蹤結(jié)果文件。
[0007]4、找到跟蹤文件,并對(duì)其進(jìn)行格式化,然后閱讀或分析
[0008]由于SQL TRACE無(wú)簡(jiǎn)單清晰的界面操作,使用過(guò)程全部由命令行進(jìn)行控制輸入輸出,操作起來(lái)會(huì)有一定的難度,只有專(zhuān)業(yè)的軟件高級(jí)開(kāi)發(fā)人員可以利用SQL TRACE進(jìn)行SQL問(wèn)題診斷和操作,由于工具周期使用過(guò)程復(fù)雜,而對(duì)于一些軟件初級(jí)開(kāi)發(fā)人員、測(cè)試人員、實(shí)施人員卻不能應(yīng)用。SQL TRACE無(wú)法通過(guò)用戶(hù)配置的SQL執(zhí)行效率閾值進(jìn)行智能輸出;t匕如,用戶(hù)只想查找數(shù)據(jù)庫(kù)執(zhí)行耗時(shí)大于8000毫秒的SQL語(yǔ)句,低于8000毫秒的SQL語(yǔ)句不在輸出,目的是想分析哪些SQL語(yǔ)句更耗時(shí),以最快的速度解除數(shù)據(jù)庫(kù)查詢(xún)瓶頸,提高查詢(xún)效率進(jìn)行系統(tǒng)優(yōu)化,而使用SQL TRACE并不能夠?qū)崿F(xiàn)該功能。
[0009]此外,SQL TRACE輸出的文件類(lèi)型單一且無(wú)法定制,比如用戶(hù)想把輸出結(jié)果以某一個(gè)擴(kuò)展名的形式展現(xiàn)出來(lái)(比如.HTML、.SQL、DOC、.TXT的類(lèi)型文件),在SQL TRACE無(wú)法定制。SQL TRACE輸出的結(jié)果中也無(wú)法確定某一句SQL語(yǔ)句的執(zhí)行開(kāi)始時(shí)間、結(jié)束時(shí)間以及SQL的數(shù)據(jù)庫(kù)真正的執(zhí)行耗時(shí),比如SQL語(yǔ)句“SELECT*FR0M TABLEA"是何時(shí)執(zhí)行、何時(shí)結(jié)束、合計(jì)耗時(shí)是多少,在SQL TRACE中無(wú)法直觀的看到。SQL TRACE輸出的結(jié)果閱讀、分析困難,大多數(shù)用戶(hù)喜歡使用第三方工具Tkprof格式化SQL TRACE產(chǎn)生的文件,以方便可以容易的看懂SQL TRACE生成的內(nèi)容。SQL TRACE輸出的結(jié)果是以Session為范圍,在生成的SQL文件中無(wú)法獲取到某個(gè)操作部分SQL語(yǔ)言,最后呈現(xiàn)給用戶(hù)的時(shí)候某個(gè)范圍中所有的SQL,而與業(yè)務(wù)系統(tǒng)無(wú)法取得聯(lián)系,比如,用戶(hù)進(jìn)行業(yè)務(wù)系統(tǒng),只想看到審核按鈕執(zhí)行了哪些SQL在SQL TRACE無(wú)法單獨(dú)獲取。
【發(fā)明內(nèi)容】
[0010]針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種數(shù)據(jù)庫(kù)監(jiān)控方法及系統(tǒng),使操作人員不必用于程序開(kāi)發(fā)背景,即可快速獲取數(shù)據(jù)庫(kù)執(zhí)行日志。
[0011]為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:一種數(shù)據(jù)庫(kù)監(jiān)控方法,包括以下步驟:[0012](I)根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出模塊;
[0013](2)通過(guò)輸出配置模塊設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑;
[0014](3)啟動(dòng)應(yīng)用服務(wù)器,加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句;
[0015](4)SQL語(yǔ)句加工模塊對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式;
[0016](5)通過(guò)監(jiān)控結(jié)果輸出模塊將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。
[0017]進(jìn)一步,如上所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,步驟(2)中,所述的監(jiān)控結(jié)果輸出格式包括SQL格式、html格式、word格式和xml格式。
[0018]進(jìn)一步,如上所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,步驟(2)中,監(jiān)控結(jié)果輸出模塊還用于設(shè)置SQL監(jiān)控程序的監(jiān)控時(shí)間閾值。
[0019]再進(jìn)一步,如上所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,步驟(4)中,將截獲的SQL語(yǔ)句加工成監(jiān)控結(jié)果輸出模塊所配置的輸出格式的具體方式為:
[0020]獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù),并將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式;所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間。
[0021]更進(jìn)一步,如上所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,步驟(I)中,所述的應(yīng)用服務(wù)器包括Tomcat服務(wù)器和Weblogic服務(wù)器。
[0022]一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng),包括:
[0023]監(jiān)控程序嵌入模塊,根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出模塊;其中:
[0024]輸出配置模塊,用于設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑;
[0025]SQL語(yǔ)句截獲模塊,用于啟動(dòng)應(yīng)用服務(wù)器用于加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句;
[0026]SQL語(yǔ)句加工模塊,用于對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式;
[0027]監(jiān)控結(jié)果輸出模塊,用于將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。
[0028]進(jìn)一步,所述的一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng),所述的SQL語(yǔ)句加工模塊包括:
[0029]參數(shù)獲取單元,用于獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù);所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間;
[0030]語(yǔ)句轉(zhuǎn)換單元,用于將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式。
[0031]本發(fā)明的有益效果在于:通過(guò)本發(fā)明所述的方法,軟件開(kāi)發(fā)人員、軟件測(cè)試人員、軟件性能調(diào)優(yōu)人員、軟件實(shí)施人員可以快速的獲取數(shù)據(jù)庫(kù)執(zhí)行日志,以幫助完成對(duì)應(yīng)用程序的修改、分析、調(diào)優(yōu)等相關(guān)工作;使在沒(méi)有程序開(kāi)發(fā)背景的軟件測(cè)試人員、軟件實(shí)施人員能快速使用該工具,用戶(hù)不用安裝、用戶(hù)不寫(xiě)一句代碼、不寫(xiě)一行命令,要求配置簡(jiǎn)潔、生成的結(jié)果一看即懂。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0032]圖1為本發(fā)明【具體實(shí)施方式】中一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)的結(jié)構(gòu)框圖;
[0033]圖2為本發(fā)明【具體實(shí)施方式】中一種數(shù)據(jù)庫(kù)監(jiān)控方法的流程圖。
【具體實(shí)施方式】
[0034]下面結(jié)合說(shuō)明書(shū)附圖與【具體實(shí)施方式】對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說(shuō)明。
[0035]圖1示出了本發(fā)明【具體實(shí)施方式】中一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)的結(jié)構(gòu)框圖,該系統(tǒng)包括監(jiān)控程序嵌入模塊11、輸出配置模塊12、SQL語(yǔ)句截獲模塊13、SQL語(yǔ)句加工模塊14和監(jiān)控結(jié)果輸出模塊15,其中:
[0036]監(jiān)控程序嵌入模塊11根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出模塊;其中:
[0037]輸出配置模塊12用于設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑;
[0038]SQL語(yǔ)句截獲模塊13用于啟動(dòng)應(yīng)用服務(wù)器用于加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句;
[0039]SQL語(yǔ)句加工模塊14用于對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式;用于獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù)的參數(shù)獲取單元,所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間;以及用于將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式的語(yǔ)句轉(zhuǎn)換單元;
[0040]監(jiān)控結(jié)果輸出模塊15用于將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。
[0041]圖2示出本【具體實(shí)施方式】中了基于圖1中所示系統(tǒng)的一種數(shù)據(jù)庫(kù)監(jiān)控方法的流程圖,該方法包括以下步驟:
[0042]步驟S21:將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;
[0043]根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出1吳塊。
[0044]本發(fā)明目的在于能夠記錄應(yīng)用服務(wù)器在啟動(dòng)到結(jié)束整個(gè)生命周期內(nèi),能夠記錄用戶(hù)在業(yè)務(wù)系統(tǒng)所有業(yè)務(wù)操作(如數(shù)據(jù)庫(kù)中業(yè)務(wù)數(shù)據(jù)的增加、刪除、修改、查詢(xún)、刷新或其它自動(dòng)任務(wù)等)的SQL語(yǔ)句,為實(shí)現(xiàn)該目的,本【具體實(shí)施方式】中需要將所述的SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中,以便在啟動(dòng)應(yīng)用服務(wù)器進(jìn)行上述業(yè)務(wù)操作時(shí),能夠在動(dòng)啟動(dòng)SQL監(jiān)控程序進(jìn)行SQL語(yǔ)句的監(jiān)控。
[0045]本【具體實(shí)施方式】中的應(yīng)用服務(wù)器包括但不限于Tomcat服務(wù)器和Weblogic服務(wù)器(也可稱(chēng)為T(mén)omcat中間件和Weblogic中間件),Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶(hù)不是很多的場(chǎng)合下被普遍使用;WebLogic是美商O(píng)racle的主要產(chǎn)品之一,是商業(yè)市場(chǎng)上主要的Java (J2EE)應(yīng)用服務(wù)器軟件(application server)之一。在將SQL監(jiān)控程序日嵌入到Tomcat中間件或Weblogic中間件的啟動(dòng)加載目錄時(shí),需要嚴(yán)格遵從Tomcat或Weblogic的配置規(guī)范,只有遵從其配置規(guī)范,應(yīng)用中間件Tomcat或Weblogic在啟動(dòng)時(shí),才會(huì)去加載上述SQL監(jiān)控程序。
[0046]本【具體實(shí)施方式】中將SQL監(jiān)控程序稱(chēng)為DBListener,在具體實(shí)現(xiàn)時(shí),可以將DBListener以標(biāo)準(zhǔn)的第三方j(luò)ar包形式對(duì)外公布,在將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中時(shí)將其程序主包DBListener.jar嵌入即可。如在將DBListener嵌入到Tomcat中間件的啟動(dòng)加載目錄時(shí),是將DBListener.jar放入到“apache_tomcat-\webapps\project\WEB_INF\lib” 下即可。在將 DBListener 嵌入到 Weblogic 中間件的啟動(dòng)加載目錄時(shí),以Weblogic中間件的版本10系列為例,將DBListener.jar直接放到“ \weblogiclO\pro ject\domains\test_domain\lib” 下即可。
[0047]SQL監(jiān)控程序的輸出配置模塊其作用主要是讓用戶(hù)可手工配置SQL監(jiān)控程序輸出結(jié)果的形式,比如輸出到控制臺(tái)、輸出到HTML、輸出到Word文件、輸出到XML文件等類(lèi),以及配置SQL監(jiān)控工具輸出結(jié)果的路徑信息;及配置SQL監(jiān)控工具運(yùn)行的閾值,比如過(guò)濾篩選設(shè)定時(shí)間的SQL語(yǔ)句;監(jiān)控結(jié)果輸出模塊則是將SQL語(yǔ)句按照輸出配置模塊的配置輸出監(jiān)控結(jié)果。
[0048]在具體實(shí)施時(shí),在Windows系統(tǒng)中可將輸出配置模塊和監(jiān)控結(jié)果輸出模塊設(shè)置為.exe文件,,即DBListener.exe文件,而因?yàn)樵贚inux系統(tǒng)以及Unix系統(tǒng)中是不支持.exe文件,可根據(jù)需要將輸出配置模塊和監(jiān)控結(jié)果輸出模塊設(shè)置為.sh文件,即DBListener.shD
[0049]步驟S22:設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑;
[0050]通過(guò)輸出配置模塊設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑,由步驟S21可知,可以通過(guò)運(yùn)行上述的DBListener.exe文件或DBListener.sh文件,設(shè)置SQL監(jiān)控程序的輸出格式和輸出格式,其中,輸出格式包括但不限于SQL格式、html格式、word格式和xml格式等,在設(shè)置輸出格式和輸出路徑的同時(shí),也可以根據(jù)需要設(shè)置SQL監(jiān)控程序的監(jiān)控時(shí)間閾值,即監(jiān)控的時(shí)間段,獲取對(duì)應(yīng)時(shí)間段的SQL語(yǔ)句信息。
[0051]步驟S23:啟動(dòng)應(yīng)用服務(wù)器,加載SQL監(jiān)控程序,截獲應(yīng)用服務(wù)器中JDBC驅(qū)動(dòng)的SQL語(yǔ)句;
[0052]啟動(dòng)應(yīng)用服務(wù)器,加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句。
[0053]用戶(hù)在業(yè)務(wù)系統(tǒng)進(jìn)行相關(guān)業(yè)務(wù)操作時(shí),由于SQL監(jiān)控程序已經(jīng)嵌入到了應(yīng)用服務(wù)器的啟動(dòng)加載目錄中,所以在啟動(dòng)應(yīng)用服務(wù)器時(shí),會(huì)加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句期間,SQL語(yǔ)句截獲模塊會(huì)截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句。其中,本【具體實(shí)施方式】中的數(shù)據(jù)庫(kù)是用戶(hù)業(yè)務(wù)系統(tǒng)中存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫(kù)。
[0054]JDBC (Java Data Base Connectivity, java 數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行 SQL 語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。本【具體實(shí)施方式】中,為了實(shí)現(xiàn)對(duì)SQL語(yǔ)句實(shí)時(shí)監(jiān)控截獲,通過(guò)SQL語(yǔ)句截獲模塊截獲JDBC的SQL語(yǔ)句前,必須首先向SQL監(jiān)控程序注冊(cè)JDBC驅(qū)動(dòng),也就是說(shuō)更改應(yīng)用服務(wù)器的數(shù)據(jù)庫(kù)驅(qū)動(dòng)為SQL監(jiān)控程序的驅(qū)動(dòng),注冊(cè)成功后再利用java著名的有界緩沖區(qū)(生產(chǎn)者-消費(fèi)者問(wèn)題)技術(shù)進(jìn)入7*24待命狀態(tài),只要一旦發(fā)現(xiàn)用戶(hù)提交SQL語(yǔ)句,即可馬上截獲、馬上輸出到用戶(hù)端。
[0055]步驟S24:將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式;
[0056]步驟S25:將加工后的SQL語(yǔ)句按照配置的輸出路徑輸出。
[0057]SQL語(yǔ)句加工模塊對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式,并通過(guò)監(jiān)控結(jié)果輸出模塊將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。其中,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式的方式可以采用現(xiàn)有技術(shù)實(shí)現(xiàn)。本【具體實(shí)施方式】中將截獲的SQL語(yǔ)句加工成監(jiān)控結(jié)果輸出模塊所配置的輸出格式的具體方式為:
[0058]獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù),并將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式;所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間。
[0059]在實(shí)際操作中,在將截獲的SQL語(yǔ)句按照用戶(hù)設(shè)置的輸出格式和輸出路徑輸出后,再將原始的SQL語(yǔ)句即加工前的SQL語(yǔ)句重新發(fā)送給原來(lái)的JDBC驅(qū)動(dòng)(應(yīng)用服務(wù)器的數(shù)據(jù)庫(kù)驅(qū)動(dòng))進(jìn)行相應(yīng)的工作,根據(jù)用戶(hù)操作請(qǐng)求完成相應(yīng)的操作。
[0060]本發(fā)明所述的方法及系統(tǒng)可為軟件開(kāi)發(fā)人員、軟件測(cè)試人員、軟件性能調(diào)優(yōu)人員、軟件實(shí)施人員使用的一種快速獲取數(shù)據(jù)庫(kù)執(zhí)行日志,以幫助完成對(duì)應(yīng)用程序的修改、分析、調(diào)優(yōu)等相關(guān)工作,使在沒(méi)有程序開(kāi)發(fā)背景的軟件測(cè)試人員、軟件實(shí)施人員能快速使用該工具,用戶(hù)不寫(xiě)一句代碼、不寫(xiě)一行命令,即可根據(jù)自己的需要得到相應(yīng)的監(jiān)控結(jié)果,本發(fā)明的SQL監(jiān)控程序的可移植性和跨平臺(tái)性,可適應(yīng)不同的數(shù)據(jù)庫(kù)、中間件、操作系統(tǒng),工具與用戶(hù)的交互,實(shí)現(xiàn)用戶(hù)對(duì)工具的個(gè)性化定制,該程序可以對(duì)外界以輕量級(jí)第三方Jar包的形式發(fā)布。本發(fā)明的監(jiān)控工具DBListener目前已廣泛應(yīng)用到主流的Tomcat中間件以及Weblogic中間件中。
[0061]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其同等技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)庫(kù)監(jiān)控方法,包括以下步驟: (1)根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出1吳塊; (2)通過(guò)輸出配置模塊設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑; (3)啟動(dòng)應(yīng)用服務(wù)器,加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),通過(guò)SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句; (4)SQL語(yǔ)句加工模塊對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式; (5)通過(guò)監(jiān)控結(jié)果輸出模塊將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。
2.如權(quán)利要求1所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,其特征在于,步驟(2)中,所述的監(jiān)控結(jié)果輸出格式包括SQL格式、html格式、word格式和xml格式。
3.如權(quán)利要求1所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,其特征在于,步驟(2)中,監(jiān)控結(jié)果輸出模塊還用于設(shè)置SQL監(jiān)控程序的監(jiān)控時(shí)間閾值。
4.如權(quán)利要求1至3之一所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,其特征在于,步驟(4)中,將截獲的SQL語(yǔ)句加工成監(jiān)控結(jié)果輸出模塊所配置的輸出格式的具體方式為: 獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù),并將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式;所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間。
5.如權(quán)利要求1所述的一種數(shù)據(jù)庫(kù)監(jiān)控方法,其特征在于,步驟(I)中,所述的應(yīng)用服務(wù)器包括Tomcat服務(wù)器和Weblogic服務(wù)器。
6.一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng),包括: 監(jiān)控程序嵌入模塊,根據(jù)應(yīng)用服務(wù)器的配置規(guī)范,將SQL監(jiān)控程序嵌入到應(yīng)用服務(wù)器的啟動(dòng)加載目錄中;所述的SQL監(jiān)控程序包括輸出配置模塊、SQL語(yǔ)句截獲模塊、SQL語(yǔ)句加工模塊和監(jiān)控結(jié)果輸出模塊;其中: 輸出配置模塊,用于設(shè)置SQL監(jiān)控程序的監(jiān)控結(jié)果輸出格式和輸出路徑; SQL語(yǔ)句截獲模塊,用于啟動(dòng)應(yīng)用服務(wù)器用于加載SQL監(jiān)控程序,在根據(jù)用戶(hù)的操作請(qǐng)求執(zhí)行SQL語(yǔ)句時(shí),通過(guò)SQL語(yǔ)句截獲模塊截獲數(shù)據(jù)庫(kù)中JDBC驅(qū)動(dòng)的SQL語(yǔ)句; SQL語(yǔ)句加工模塊,用于對(duì)截獲的SQL語(yǔ)句進(jìn)行加工,將截獲的SQL語(yǔ)句加工成輸出配置模塊所配置的輸出格式; 監(jiān)控結(jié)果輸出模塊,用于將加工后的SQL語(yǔ)句按照輸出配置模塊所配置的輸出路徑輸出。
7.如權(quán)利要求6所述的一種數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng),其特征在于,所述的SQL語(yǔ)句加工模塊包括: 參數(shù)獲取單元,用于獲取截獲的SQL語(yǔ)句的查詢(xún)參數(shù)和運(yùn)行參數(shù);所述的運(yùn)行參數(shù)包括SQL語(yǔ)句開(kāi)始時(shí)間和結(jié)束時(shí)間; 語(yǔ)句轉(zhuǎn)換單元,用于將查詢(xún)參數(shù)和運(yùn)行參數(shù)將截獲的SQL語(yǔ)句組合成監(jiān)控結(jié)果輸出模塊所配置的輸出格式。
【文檔編號(hào)】G06F17/30GK103678630SQ201310704049
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】馮德貞, 于貴鎖, 陳欣, 胡錦鋒 申請(qǐng)人:北京用友政務(wù)軟件有限公司