本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法及系統(tǒng)。
背景技術(shù):
目前,當(dāng)用戶維護(hù)擁有幾十套業(yè)務(wù)系統(tǒng)的oracle數(shù)據(jù)庫時(shí),經(jīng)常會(huì)遇到因?yàn)閿?shù)據(jù)庫表的統(tǒng)計(jì)信息更新不及時(shí)而引起的性能問題,其嚴(yán)重影響了終端用戶的體驗(yàn)。為了實(shí)現(xiàn)對數(shù)據(jù)庫表的統(tǒng)計(jì)信息進(jìn)行更新,需要先對數(shù)據(jù)庫表的統(tǒng)計(jì)信息進(jìn)行收集。然而,目前一套復(fù)雜的oracle數(shù)據(jù)庫通常有成千上萬個(gè)表,并且表的大小由幾個(gè)g到幾百g不等,對于7*24小時(shí)的業(yè)務(wù)系統(tǒng),如何收集統(tǒng)計(jì)信息是非常繁瑣的事?,F(xiàn)有技術(shù)中,通常是定義一個(gè)計(jì)劃任務(wù),對所有的表進(jìn)行統(tǒng)一策略的收集,導(dǎo)致許多變化較小的表也進(jìn)行了收集,最終導(dǎo)致系統(tǒng)資源嚴(yán)重浪費(fèi),無法在規(guī)定時(shí)間窗口內(nèi)完成收集任務(wù)。
綜上所述可以看出,如何在對oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息進(jìn)行收集時(shí)避免消耗過多的系統(tǒng)資源是目前有待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法及系統(tǒng),實(shí)現(xiàn)了在對oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息進(jìn)行收集時(shí)避免消耗過多的系統(tǒng)資源的目的。其具體方案如下:
一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法,包括:
確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量;
判斷所述變化量是否小于預(yù)設(shè)變化量閾值,如果是,則禁止收集所述目標(biāo)表的統(tǒng)計(jì)信息,如果否,則對所述目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
可選的,所述確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量的過程,包括:
對dba_tab_modifications視圖進(jìn)行刷新;
獲取刷新后的所述dba_tab_modifications視圖中記錄的所述目標(biāo)表的數(shù)據(jù)變化記錄條數(shù);
利用所述數(shù)據(jù)變化記錄條數(shù),確定出所述目標(biāo)表的變化量。
可選的,所述對所述目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集的過程,包括:
確定出所述目標(biāo)表的容量大小,得到目標(biāo)容量大??;
根據(jù)第一預(yù)設(shè)映射關(guān)系,確定出與所述目標(biāo)容量大小對應(yīng)的采樣比例,得到目標(biāo)采樣比例;其中,容量大小與采樣比例的大小之間呈負(fù)相關(guān)關(guān)系;
根據(jù)第二預(yù)設(shè)映射關(guān)系,確定出與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù),得到目標(biāo)進(jìn)程數(shù);其中,容量大小與并行進(jìn)程數(shù)的大小之間呈正相關(guān)關(guān)系;
按照所述目標(biāo)采樣比例,對所述目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行相應(yīng)的采樣處理,并為本次采樣過程開啟n個(gè)并行服務(wù)進(jìn)程;其中,n值與所述目標(biāo)進(jìn)程數(shù)的大小相一致。
可選的,所述第一映射關(guān)系,包括:
若所述目標(biāo)容量大小小于1g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為100%;
若所述目標(biāo)容量大小大于或等于1g,并且小于10g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為50%;
若所述目標(biāo)容量大小大于或等于10g,并且小于50g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為30%;
若所述目標(biāo)容量大小大于或等于50,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為20%。
可選的,所述第二映射關(guān)系,包括:
若所述目標(biāo)容量大小小于1g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為0;
若所述目標(biāo)容量大小大于或等于1g,并且小于10g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為4;
若所述目標(biāo)容量大小大于或等于10g,并且小于50g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為8;
若所述目標(biāo)容量大小大于或等于50,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為12。
本發(fā)明還相應(yīng)公開了一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集系統(tǒng),包括:
變化量確定模塊,用于確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量;
判斷模塊,用于判斷所述變化量是否小于預(yù)設(shè)變化量閾值;
禁止模塊,用于當(dāng)所述判斷模塊判定所述變化量小于所述預(yù)設(shè)變化量閾值,則禁止收集所述目標(biāo)表的統(tǒng)計(jì)信息;
收集模塊,用于當(dāng)所述判斷模塊判定所述變化量大于或等于所述預(yù)設(shè)變化量閾值,則對所述目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
可選的,所述變化量確定模塊,包括:
視圖刷新單元,用于對dba_tab_modifications視圖進(jìn)行刷新;
變化信息獲取單元,用于獲取刷新后的所述dba_tab_modifications視圖中記錄的所述目標(biāo)表的數(shù)據(jù)變化記錄條數(shù);
變化量確定單元,用于利用所述數(shù)據(jù)變化記錄條數(shù),確定出所述目標(biāo)表的變化量。
可選的,所述收集模塊,包括:
大小確定單元,用于確定出所述目標(biāo)表的容量大小,得到目標(biāo)容量大??;
比例確定單元,用于根據(jù)第一預(yù)設(shè)映射關(guān)系,確定出與所述目標(biāo)容量大小對應(yīng)的采樣比例,得到目標(biāo)采樣比例;其中,容量大小與采樣比例的大小之間呈負(fù)相關(guān)關(guān)系;
進(jìn)程數(shù)確定單元,用于根據(jù)第二預(yù)設(shè)映射關(guān)系,確定出與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù),得到目標(biāo)進(jìn)程數(shù);其中,容量大小與并行進(jìn)程數(shù)的大小之間呈正相關(guān)關(guān)系;
信息采樣單元,按照所述目標(biāo)采樣比例,對所述目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行相應(yīng)的采樣處理,并為本次采樣過程開啟n個(gè)并行服務(wù)進(jìn)程;其中,n值與所述目標(biāo)進(jìn)程數(shù)的大小相一致。
可選的,所述第一映射關(guān)系,包括:
若所述目標(biāo)容量大小小于1g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為100%;
若所述目標(biāo)容量大小大于或等于1g,并且小于10g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為50%;
若所述目標(biāo)容量大小大于或等于10g,并且小于50g,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為30%;
若所述目標(biāo)容量大小大于或等于50,則與所述目標(biāo)容量大小對應(yīng)的采樣比例為20%。
可選的,所述第二映射關(guān)系,包括:
若所述目標(biāo)容量大小小于1g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為0;
若所述目標(biāo)容量大小大于或等于1g,并且小于10g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為4;
若所述目標(biāo)容量大小大于或等于10g,并且小于50g,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為8;
若所述目標(biāo)容量大小大于或等于50,則與所述目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為12。
本發(fā)明中,oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法,包括:確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量;判斷變化量是否小于預(yù)設(shè)變化量閾值,如果是,則禁止收集目標(biāo)表的統(tǒng)計(jì)信息,如果否,則對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
可見,本發(fā)明在對oracle數(shù)據(jù)庫中目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集之前,先確定出目標(biāo)表的變化量,然后判斷該變化量是否大于預(yù)設(shè)變化量閾值,本發(fā)明在上述變化量大于預(yù)設(shè)變化量閾值的情況下,方對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集,否則便禁止對目標(biāo)表進(jìn)行收集,從而可以避免變化量較小的情況下對目標(biāo)表進(jìn)行統(tǒng)計(jì)信息收集處理,由此可以避免消耗過多的系統(tǒng)資源。由上可見,本發(fā)明實(shí)現(xiàn)了在對oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息進(jìn)行收集時(shí)避免消耗過多的系統(tǒng)資源的目的。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開的一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法流程圖;
圖2為本發(fā)明實(shí)施例公開的一種對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集的流程圖;
圖3為本發(fā)明實(shí)施例公開的一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例公開了一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法,參見圖1所示,該方法包括:
步驟s11:確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量。
需要說明的是,上述目標(biāo)表可以是oracle數(shù)據(jù)庫中的任意表。
步驟s12:判斷變化量是否小于預(yù)設(shè)變化量閾值,如果是,則進(jìn)入步驟s13,如果否,則進(jìn)入步驟s14。
步驟s13:禁止收集目標(biāo)表的統(tǒng)計(jì)信息。
步驟s14:對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
可見,本發(fā)明實(shí)施例在對oracle數(shù)據(jù)庫中目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集之前,先確定出目標(biāo)表的變化量,然后判斷該變化量是否大于預(yù)設(shè)變化量閾值,本發(fā)明實(shí)施例在上述變化量大于預(yù)設(shè)變化量閾值的情況下,方對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集,否則便禁止對目標(biāo)表進(jìn)行收集,從而可以避免變化量較小的情況下對目標(biāo)表進(jìn)行統(tǒng)計(jì)信息收集處理,由此可以避免消耗過多的系統(tǒng)資源。由上可見,本發(fā)明實(shí)施例實(shí)現(xiàn)了在對oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息進(jìn)行收集時(shí)避免消耗過多的系統(tǒng)資源的目的。
本發(fā)明實(shí)施例公開了一種具體的oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法,具體包括下面步驟s21至s26:
步驟s21:對dba_tab_modifications視圖進(jìn)行刷新。
步驟s22:獲取刷新后的dba_tab_modifications視圖中記錄的目標(biāo)表的數(shù)據(jù)變化記錄條數(shù)。
步驟s23:利用數(shù)據(jù)變化記錄條數(shù),確定出目標(biāo)表的變化量。
步驟s24:判斷變化量是否小于預(yù)設(shè)變化量閾值,如果是,則進(jìn)入步驟s25,如果否,則進(jìn)入步驟s26。
步驟s25:禁止收集目標(biāo)表的統(tǒng)計(jì)信息。
步驟s26:對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
參見圖2所示,本實(shí)施例中,上述對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集的過程,具體可以包括下面步驟s261至s264:
步驟s261:確定出目標(biāo)表的容量大小,得到目標(biāo)容量大小。
步驟s262:根據(jù)第一預(yù)設(shè)映射關(guān)系,確定出與目標(biāo)容量大小對應(yīng)的采樣比例,得到目標(biāo)采樣比例;其中,容量大小與采樣比例的大小之間呈負(fù)相關(guān)關(guān)系。
具體的,上述第一映射關(guān)系,可以包括:
若目標(biāo)容量大小小于1g,則與目標(biāo)容量大小對應(yīng)的采樣比例為100%;若目標(biāo)容量大小大于或等于1g,并且小于10g,則與目標(biāo)容量大小對應(yīng)的采樣比例為50%;若目標(biāo)容量大小大于或等于10g,并且小于50g,則與目標(biāo)容量大小對應(yīng)的采樣比例為30%;若目標(biāo)容量大小大于或等于50,則與目標(biāo)容量大小對應(yīng)的采樣比例為20%。
步驟s263:根據(jù)第二預(yù)設(shè)映射關(guān)系,確定出與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù),得到目標(biāo)進(jìn)程數(shù);其中,容量大小與并行進(jìn)程數(shù)的大小之間呈正相關(guān)關(guān)系。
具體的,上述第二映射關(guān)系,可以包括:
若目標(biāo)容量大小小于1g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為0;若目標(biāo)容量大小大于或等于1g,并且小于10g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為4;若目標(biāo)容量大小大于或等于10g,并且小于50g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為8;若目標(biāo)容量大小大于或等于50,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為12。
步驟s264:按照目標(biāo)采樣比例,對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行相應(yīng)的采樣處理,并為本次采樣過程開啟n個(gè)并行服務(wù)進(jìn)程;其中,n值與目標(biāo)進(jìn)程數(shù)的大小相一致。
進(jìn)一步的,本發(fā)明實(shí)施例還相應(yīng)公開了一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集系統(tǒng),參見圖3所示,該系統(tǒng)包括:
變化量確定模塊11,用于確定出oracle數(shù)據(jù)庫中目標(biāo)表的變化量;
判斷模塊12,用于判斷變化量是否小于預(yù)設(shè)變化量閾值;
禁止模塊13,用于當(dāng)判斷模塊12判定變化量小于預(yù)設(shè)變化量閾值,則禁止收集目標(biāo)表的統(tǒng)計(jì)信息;
收集模塊14,用于當(dāng)判斷模塊12判定變化量大于或等于預(yù)設(shè)變化量閾值,則對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集。
本實(shí)施例中,上述變化量確定模塊,具體可以包括視圖刷新單元、變化信息獲取單元以及變化量確定單元;其中,
視圖刷新單元,用于對dba_tab_modifications視圖進(jìn)行刷新;
變化信息獲取單元,用于獲取刷新后的dba_tab_modifications視圖中記錄的目標(biāo)表的數(shù)據(jù)變化記錄條數(shù);
變化量確定單元,用于利用數(shù)據(jù)變化記錄條數(shù),確定出目標(biāo)表的變化量。
另外,上述收集模塊,具體可以包括大小確定單元、比例確定單元、進(jìn)程數(shù)確定單元以及信息采樣單元;其中,
大小確定單元,用于確定出目標(biāo)表的容量大小,得到目標(biāo)容量大?。?/p>
比例確定單元,用于根據(jù)第一預(yù)設(shè)映射關(guān)系,確定出與目標(biāo)容量大小對應(yīng)的采樣比例,得到目標(biāo)采樣比例;其中,容量大小與采樣比例的大小之間呈負(fù)相關(guān)關(guān)系;
進(jìn)程數(shù)確定單元,用于根據(jù)第二預(yù)設(shè)映射關(guān)系,確定出與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù),得到目標(biāo)進(jìn)程數(shù);其中,容量大小與并行進(jìn)程數(shù)的大小之間呈正相關(guān)關(guān)系;
信息采樣單元,按照目標(biāo)采樣比例,對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行相應(yīng)的采樣處理,并為本次采樣過程開啟n個(gè)并行服務(wù)進(jìn)程;其中,n值與目標(biāo)進(jìn)程數(shù)的大小相一致。
其中,上述第一映射關(guān)系,具體可以包括:
若目標(biāo)容量大小小于1g,則與目標(biāo)容量大小對應(yīng)的采樣比例為100%;若目標(biāo)容量大小大于或等于1g,并且小于10g,則與目標(biāo)容量大小對應(yīng)的采樣比例為50%;若目標(biāo)容量大小大于或等于10g,并且小于50g,則與目標(biāo)容量大小對應(yīng)的采樣比例為30%;若目標(biāo)容量大小大于或等于50,則與目標(biāo)容量大小對應(yīng)的采樣比例為20%。
進(jìn)一步的,上述第二映射關(guān)系,具體可以包括:
若目標(biāo)容量大小小于1g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為0;若目標(biāo)容量大小大于或等于1g,并且小于10g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為4;若目標(biāo)容量大小大于或等于10g,并且小于50g,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為8;若目標(biāo)容量大小大于或等于50,則與目標(biāo)容量大小對應(yīng)的并行進(jìn)程數(shù)為12。
可見,本發(fā)明實(shí)施例在對oracle數(shù)據(jù)庫中目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集之前,先確定出目標(biāo)表的變化量,然后判斷該變化量是否大于預(yù)設(shè)變化量閾值,本發(fā)明實(shí)施例在上述變化量大于預(yù)設(shè)變化量閾值的情況下,方對目標(biāo)表的統(tǒng)計(jì)信息進(jìn)行收集,否則便禁止對目標(biāo)表進(jìn)行收集,從而可以避免變化量較小的情況下對目標(biāo)表進(jìn)行統(tǒng)計(jì)信息收集處理,由此可以避免消耗過多的系統(tǒng)資源。由上可見,本發(fā)明實(shí)施例實(shí)現(xiàn)了在對oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息進(jìn)行收集時(shí)避免消耗過多的系統(tǒng)資源的目的。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對本發(fā)明所提供的一種oracle數(shù)據(jù)庫表統(tǒng)計(jì)信息收集方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。