專利名稱::一種基于審計(jì)功能的oracle數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種統(tǒng)計(jì)ORACLE數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)訪問(wèn)率的技術(shù)實(shí)現(xiàn),用于實(shí)現(xiàn)select查詢后自動(dòng)觸發(fā)數(shù)據(jù)查詢統(tǒng)計(jì)的功能,尤其用于統(tǒng)計(jì)重要數(shù)據(jù)資料的使用情況即數(shù)據(jù)點(diǎn)擊率。
背景技術(shù):
:目前,網(wǎng)站利用點(diǎn)擊率統(tǒng)計(jì)該網(wǎng)站的用戶訪問(wèn)量,用戶的訪問(wèn)量越大,說(shuō)明該網(wǎng)站的知名度大,從而網(wǎng)站的廣告效益也就更大。數(shù)據(jù)庫(kù)的點(diǎn)擊率即通過(guò)在數(shù)據(jù)庫(kù)表中添加點(diǎn)擊率字段來(lái)統(tǒng)計(jì)數(shù)據(jù)的使用情況,從而統(tǒng)計(jì)出數(shù)據(jù)資料的重要性。目前,ORACLE數(shù)據(jù)庫(kù)只提供了INSERT、UPDATE、DELETE語(yǔ)句的觸發(fā)器功能,而沒(méi)有提供SELECT語(yǔ)句的觸發(fā)器功能,因而不能利用觸發(fā)器來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)點(diǎn)擊率(即SELECT查詢)的統(tǒng)計(jì)功能。較為傳統(tǒng)和簡(jiǎn)單的方法就是利用應(yīng)用程序進(jìn)行統(tǒng)計(jì)用戶對(duì)數(shù)據(jù)的訪問(wèn)情況,然后將訪問(wèn)信息存儲(chǔ)到數(shù)據(jù)庫(kù)表中的點(diǎn)擊率字段,此種方式統(tǒng)計(jì)信息較為全面,但不一定完整,它的前提是建立在用戶利用指定的應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)資料基礎(chǔ)之上,一旦用戶通過(guò)其它途徑訪問(wèn)數(shù)據(jù)庫(kù)的資料就沒(méi)有辦法確切地統(tǒng)計(jì)數(shù)據(jù)的使用情況,勢(shì)必造成數(shù)據(jù)訪問(wèn)統(tǒng)計(jì)的遺漏現(xiàn)象。
發(fā)明內(nèi)容為了增加對(duì)ORACLE數(shù)據(jù)庫(kù)資料訪問(wèn)的統(tǒng)計(jì)功能,克服傳統(tǒng)統(tǒng)計(jì)方式的缺點(diǎn),本發(fā)明提供了一種基于審計(jì)功能的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),該技術(shù)彌補(bǔ)了ORACLE數(shù)據(jù)庫(kù)無(wú)SELECT觸發(fā)器的缺陷,實(shí)現(xiàn)了對(duì)ORACLE數(shù)據(jù)庫(kù)的SELECT查詢統(tǒng)計(jì)功能,不僅能夠統(tǒng)計(jì)對(duì)ORACLE數(shù)據(jù)庫(kù)資料的訪問(wèn)情況,還能較為完整、詳細(xì)地統(tǒng)計(jì)數(shù)據(jù)的訪問(wèn)信息。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是利用數(shù)據(jù)庫(kù)的審計(jì)功能,詳細(xì)記錄對(duì)數(shù)據(jù)庫(kù)的各種操作,通過(guò)指定特定的審計(jì)級(jí)別與審計(jì)對(duì)象,即可實(shí)現(xiàn)對(duì)SELECT語(yǔ)句的”觸發(fā)器”功能完成對(duì)數(shù)據(jù)庫(kù)資料的訪問(wèn)統(tǒng)計(jì)。用戶對(duì)數(shù)據(jù)庫(kù)資料的訪問(wèn)信息通過(guò)數(shù)據(jù)庫(kù)的審計(jì)(AUDIT)功能,記錄在數(shù)據(jù)表SYS.AUD$內(nèi),DBA_AUDIT_TRAIL是一個(gè)基于AUD$的視圖,其它視圖則是DBA_AUDIT_TRAIL的子視圖。通過(guò)利用定時(shí)作業(yè)每晚定時(shí)對(duì)審計(jì)視圖進(jìn)行查詢統(tǒng)計(jì)與計(jì)算(類似SELECT觸發(fā)器,觸發(fā)間隔每天一次,觸發(fā)時(shí)間夜間0點(diǎn)),并將統(tǒng)計(jì)結(jié)果記錄保存到相應(yīng)數(shù)據(jù)庫(kù)表的點(diǎn)擊率字段,來(lái)達(dá)到統(tǒng)計(jì)數(shù)據(jù)庫(kù)表記錄的訪問(wèn)情況。本發(fā)明的有益效果是,有效地彌補(bǔ)了ORACLE數(shù)據(jù)庫(kù)無(wú)SELECT觸發(fā)器的缺陷,可以較為全面完整地統(tǒng)計(jì)出數(shù)據(jù)庫(kù)資料的使用情況,從而能夠統(tǒng)計(jì)出資料的重要程度,對(duì)科研工作者使用與統(tǒng)計(jì)重要數(shù)據(jù)資料具有很大的幫助意義。圖1中模擬SELECT觸發(fā)器通過(guò)對(duì)SELECT語(yǔ)句的審計(jì)功能,結(jié)合ORACLE數(shù)據(jù)庫(kù)的定時(shí)作業(yè)實(shí)現(xiàn)了對(duì)SELECT語(yǔ)句的查詢統(tǒng)計(jì)功能,定時(shí)作業(yè)的定時(shí)間隔可根據(jù)需要進(jìn)行調(diào)整,為了不影響ORACLE數(shù)據(jù)庫(kù)的正常功能,定時(shí)間隔為1天,定時(shí)時(shí)刻為午夜0點(diǎn),起到了類似SELECT觸發(fā)器的功能。圖2中打開(kāi)審計(jì)功能通常數(shù)據(jù)的審計(jì)功能都是關(guān)閉狀態(tài),若要使用審計(jì)功能,需要先打開(kāi)審計(jì)功能。圖2中移動(dòng)審計(jì)相關(guān)表到其它表空間通常審計(jì)表AUD$與其它審計(jì)相關(guān)視圖都存放到表SYSTEM空間內(nèi),由于SYSTEM表空間存儲(chǔ)ORACLE系統(tǒng)信息且空間有限,為了不影響ORACLE系統(tǒng)的運(yùn)行,需要將審計(jì)相關(guān)表移動(dòng)到其它表空間內(nèi)。圖2中建立對(duì)象的SELECT審計(jì)即通過(guò)對(duì)表指定SELECT審計(jì),ORACLE系統(tǒng)將會(huì)記錄對(duì)表的一切SELECT操作信息。圖2中數(shù)據(jù)庫(kù)定時(shí)作業(yè)通過(guò)建立數(shù)據(jù)庫(kù)的定時(shí)作業(yè)(過(guò)程),每晚12點(diǎn)定時(shí)執(zhí)行,檢查數(shù)據(jù)審計(jì)信息。圖2中更新記錄內(nèi)點(diǎn)擊率字段即通過(guò)執(zhí)行定時(shí)作業(yè),將當(dāng)天對(duì)數(shù)據(jù)的SELECT操作進(jìn)行統(tǒng)計(jì)查詢與運(yùn)算,并更新記錄內(nèi)相應(yīng)的點(diǎn)擊率字段,實(shí)現(xiàn)數(shù)據(jù)的訪問(wèn)統(tǒng)計(jì)功能。具體實(shí)施例方式首先,檢查數(shù)據(jù)庫(kù)系統(tǒng)是否開(kāi)啟審計(jì)功能。在SQLPLUS下以DBA身份登錄數(shù)據(jù)庫(kù),并執(zhí)行showparameteraudit指令,查看審計(jì)功能是否開(kāi)啟。查詢結(jié)果中有兩個(gè)重要參數(shù)Audit_sys_operations與Audit_trail。Audit_sys_operations默認(rèn)為false,當(dāng)設(shè)置為true時(shí),所有sys用戶(包括以sysdbii,sysoper身份登錄的用戶)的操作都會(huì)被記錄。Audit_trail的值有以下幾種None:是默認(rèn)值,不做審計(jì);DBJfaudittrail記錄在數(shù)據(jù)庫(kù)的審計(jì)相關(guān)表中,如aud$,審計(jì)的結(jié)果只有連接信息;DB,Extended這樣審計(jì)結(jié)果里面除了連接信息還包含了當(dāng)時(shí)執(zhí)行的具體語(yǔ)句;OS將audittrail記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;XMLIOg里新增的,將audittrail記錄在XML文件中。注這兩個(gè)參數(shù)是static參數(shù),需要重新啟動(dòng)數(shù)據(jù)庫(kù)才能生效。^Audit_sys_operations=false;Audit_trail=None;貝U1-白勺Φ"it功能未開(kāi)啟,需要執(zhí)行以下命令,開(kāi)啟審計(jì)功能。SQL>altersystemsetaudit_sys_operations=TRUEscope=spfile;SQL>altersystemsetaudit_trail=db,extendedscope=spfile;重啟數(shù)據(jù)庫(kù)即可開(kāi)啟審計(jì)功能。其次,移動(dòng)審計(jì)相關(guān)的表至其它表空間。通常審計(jì)表AUD$與其它視圖均默認(rèn)存放在SYSTEM表空間內(nèi),為了不影響ORACLE系統(tǒng)的性能,將審計(jì)相關(guān)的表均移動(dòng)到其它新建表空間〈newtablespace〉內(nèi)。執(zhí)行以下命令SQL>altertableaud$movetablespace<newtablespace>;SQL>alterindexI_audlrebuildonlinetablespace<newtablespace>;SQL>altertableaudit$movetablespace<newtablespace>;SQL>alterindexi_auditrebuildonlinetablespace<newtablespace>;SQL>altertableaudit_actionsmovetablespace〈newtablespace〉;SQL>alterindexi_audit_actionsrebuildonlinetablespace〈newtablespace>;第三,確定審計(jì)級(jí)別,進(jìn)行數(shù)據(jù)庫(kù)審計(jì)。通常審計(jì)級(jí)別有三種,一是語(yǔ)句審計(jì),對(duì)某種類型的SQL語(yǔ)句審計(jì),不指定結(jié)構(gòu)或?qū)ο?。二是?quán)限審計(jì),當(dāng)用戶使用了該權(quán)限則被審計(jì)。特別地用戶是自己表的所有者,所以用戶訪問(wèn)自己的表不會(huì)被審計(jì)。三是對(duì)象審計(jì),對(duì)一特殊模式對(duì)象上的指定語(yǔ)句的審計(jì).如審計(jì)ON關(guān)鍵字指定對(duì)象的相關(guān)操作,若用戶是表的所有者,則采用對(duì)象審計(jì)方式,即執(zhí)行下述命令SQL>AUDITSELECTTABLEON<TABLENAME>BYACCESS;其中BYACCESS指的是每一個(gè)被審計(jì)的操作都會(huì)生成一條AUDITTRAIL。對(duì)需要進(jìn)行點(diǎn)擊率統(tǒng)計(jì)的表均執(zhí)行該命令后,所有用戶所屬的表都具有了SELECT審計(jì)功能,若執(zhí)行對(duì)表的查詢操作,審計(jì)結(jié)果就會(huì)記錄在AUD$中。第四,數(shù)據(jù)庫(kù)定時(shí)作業(yè)(JOBS),查詢審計(jì)結(jié)果,確定數(shù)據(jù)的點(diǎn)擊率。通過(guò)建立定時(shí)作業(yè),午夜0時(shí)開(kāi)始執(zhí)行過(guò)程,查詢當(dāng)天的審計(jì)結(jié)果,根據(jù)審計(jì)結(jié)果中的SQL_TEXT語(yǔ)句,選擇表中的關(guān)鍵字段與點(diǎn)擊率字段,構(gòu)造新的SELECT語(yǔ)句查詢當(dāng)前點(diǎn)擊率的值,將當(dāng)前點(diǎn)擊率的值加1,再根據(jù)剛才查詢的關(guān)鍵字段重新構(gòu)造UPDATE語(yǔ)句更新記錄內(nèi)的點(diǎn)擊率字段,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)訪問(wèn)的統(tǒng)計(jì)功能。定時(shí)作業(yè)的命令如下SQL>VARIABLENNUMBER;SQL>BEGINSQL>DBMS_J0B.SUBMIT(:N,‘MYJOB;,,SYSDATE,,TRUNC(SYSDATE+1),);SQL>C0MMIT;SQL>END;每天午夜0點(diǎn)執(zhí)行,MYJOB為點(diǎn)擊率更新處理過(guò)程,將統(tǒng)計(jì)點(diǎn)擊率結(jié)果保存到點(diǎn)擊率字段。SELECT語(yǔ)句重構(gòu)造由SQL_TEXT生成新的查詢語(yǔ)句,如SQL_TEXT為SELECT*FROMTABLENAMEWHEREKEY=,XX,;新的查詢語(yǔ)句為SELECTROWID,HITRATEFROMTABLENAMEWHEREKEY=,XX,;將HITRATE進(jìn)行加1運(yùn)算后,得到新的HITRATE值。UPDATE語(yǔ)句構(gòu)造對(duì)每一個(gè)記錄進(jìn)行UPDATE操作,UPDATE語(yǔ)句為UPDATETABLENAMESETHITRATE=’NEffVALUE'WHEREROffID='ROffID';數(shù)據(jù)庫(kù)點(diǎn)擊率的統(tǒng)計(jì)可精確到表、表記錄與指定字段,若與應(yīng)用程序相結(jié)合也可對(duì)訪問(wèn)用戶的IP地址等詳細(xì)信息進(jìn)行統(tǒng)計(jì)。權(quán)利要求1.一種基于審計(jì)功能的ORACLE數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),利用ORACLE數(shù)據(jù)庫(kù)的審計(jì)功能,結(jié)合數(shù)據(jù)庫(kù)的定時(shí)作業(yè),實(shí)現(xiàn)了SELECT查詢觸發(fā)器的功能,彌補(bǔ)了ORACLE數(shù)據(jù)庫(kù)沒(méi)有SELECT引發(fā)觸發(fā)器的缺陷;通過(guò)對(duì)審計(jì)結(jié)果的查詢處理,統(tǒng)計(jì)表記錄與表字段的訪問(wèn)情況,若與應(yīng)用程序結(jié)合也可對(duì)訪問(wèn)用戶的IP地址等詳細(xì)信息進(jìn)行統(tǒng)計(jì)。其特征是利用數(shù)據(jù)庫(kù)的審計(jì)功能,通過(guò)數(shù)據(jù)庫(kù)定時(shí)作業(yè)對(duì)審計(jì)結(jié)果的查詢,獲取SELECT語(yǔ)句內(nèi)容,再根據(jù)SELECT語(yǔ)句條件重新構(gòu)造點(diǎn)擊率查詢語(yǔ)句與點(diǎn)擊率更新語(yǔ)句,進(jìn)行數(shù)據(jù)訪問(wèn)點(diǎn)擊率的統(tǒng)計(jì),實(shí)現(xiàn)SELECT觸發(fā)功能。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),其特征是實(shí)現(xiàn)了對(duì)SELECT查詢觸發(fā)觸發(fā)器功能。3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),其特征是通過(guò)統(tǒng)計(jì)用戶對(duì)數(shù)據(jù)記錄的SELECT查詢統(tǒng)計(jì)點(diǎn)擊率,可精確到對(duì)指定字段的查詢統(tǒng)計(jì)。4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),其特征是利用數(shù)據(jù)庫(kù)的審計(jì)功能,記錄用戶對(duì)數(shù)據(jù)的訪問(wèn)情況。5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),其特征是通過(guò)數(shù)據(jù)庫(kù)的定時(shí)作業(yè)實(shí)現(xiàn)對(duì)審計(jì)結(jié)果的查詢與點(diǎn)擊率運(yùn)算和更新。6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),其特征是若與應(yīng)用程序相結(jié)合可實(shí)現(xiàn)對(duì)訪問(wèn)用戶的IP地址等詳細(xì)信息進(jìn)行統(tǒng)計(jì)。全文摘要一種基于審計(jì)功能的ORACLE數(shù)據(jù)庫(kù)點(diǎn)擊率技術(shù),利用ORACLE數(shù)據(jù)庫(kù)的審計(jì)功能,通過(guò)對(duì)SELECT權(quán)限與表對(duì)象進(jìn)行審計(jì),利用數(shù)據(jù)庫(kù)定時(shí)作業(yè)對(duì)審計(jì)結(jié)果進(jìn)行查詢,獲取SELECT查詢語(yǔ)句內(nèi)容,再根據(jù)SELECT語(yǔ)句條件重新構(gòu)造點(diǎn)擊率查詢語(yǔ)句與點(diǎn)擊率更新語(yǔ)句,進(jìn)行數(shù)據(jù)訪問(wèn)點(diǎn)擊率的統(tǒng)計(jì),實(shí)現(xiàn)SELECT查詢觸發(fā)器的功能。該技術(shù)利用數(shù)據(jù)庫(kù)的審計(jì)功能進(jìn)行數(shù)據(jù)點(diǎn)擊率的統(tǒng)計(jì)不會(huì)遺漏用戶通過(guò)不同途徑對(duì)數(shù)據(jù)進(jìn)行的訪問(wèn),可實(shí)現(xiàn)對(duì)表記錄點(diǎn)擊率或指定字段點(diǎn)擊率的統(tǒng)計(jì),若與應(yīng)用程序結(jié)合可實(shí)現(xiàn)對(duì)訪問(wèn)用戶的登錄IP等詳細(xì)情況進(jìn)行統(tǒng)計(jì),其統(tǒng)計(jì)結(jié)果要大大優(yōu)于單純通過(guò)應(yīng)用程序進(jìn)行數(shù)據(jù)點(diǎn)擊率的統(tǒng)計(jì)情況,同時(shí)彌補(bǔ)了ORACLE數(shù)據(jù)庫(kù)沒(méi)有SELECT觸發(fā)器的缺陷。文檔編號(hào)G06F17/30GK102446170SQ20101029842公開(kāi)日2012年5月9日申請(qǐng)日期2010年10月4日優(yōu)先權(quán)日2010年10月4日發(fā)明者劉堅(jiān),張興國(guó),李盛樂(lè),王子影,閆民正申請(qǐng)人:劉堅(jiān),張興國(guó),李盛樂(lè),王子影,閆民正