溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

【Oracle】簡(jiǎn)單參數(shù)也有講究,JOB_QUEUE_PROCESS參數(shù)調(diào)研

發(fā)布時(shí)間:2020-08-05 09:55:44 來源:ITPUB博客 閱讀:299 作者:neverinit 欄目:關(guān)系型數(shù)據(jù)庫

調(diào)研背景



因?yàn)樵跍y(cè)試procedure+dbms_job組合的任務(wù)時(shí),調(diào)用失?。粗褪侨蝿?wù)沒跑)。經(jīng)過查詢數(shù)據(jù)庫參數(shù),發(fā)現(xiàn)是JOB_QUEUE_PROCESS的值為0。



調(diào)研內(nèi)容



本次調(diào)研數(shù)據(jù)主要來源為Oracle官方文檔和MOS,以條目的形式展示JOB_QUEUE_PROCESS參數(shù)相關(guān)的資料。下面查看展示的條目。


參數(shù)的作用



JOB_QUEUE_PROCESS指定了Oracle數(shù)據(jù)庫的每個(gè)instance在執(zhí)行  DBMS_JOB和 DBMS_SCHEDULER任務(wù)時(shí),能夠創(chuàng)建的最大的子任務(wù)數(shù)量。


參數(shù)允許的數(shù)值范圍



12.1及之前版本, 參數(shù)允許的默認(rèn)值是0到1000。在12.2及18c版本中,參數(shù)允許的默認(rèn)值是0到4000。


參數(shù)在不同版本中的默認(rèn)值



在9i和10g中,默認(rèn)值是0;在11g和12cR1版本中,默認(rèn)值為1000,在12cR2和18c版本中,默認(rèn)值為4000。

    

【Oracle】簡(jiǎn)單參數(shù)也有講究,JOB_QUEUE_PROCESS參數(shù)調(diào)研 這里就很尷尬了,誰把我的數(shù)據(jù)庫參數(shù)改成0的(數(shù)據(jù)庫版本是11.2.0.4 )


修改參數(shù)值的方法



job_queue_processes參數(shù)值可以動(dòng)態(tài)修改,默認(rèn)是scope=both

alter system set job_queue_processes=<integer>;


在RAC數(shù)據(jù)庫中,執(zhí)行命令

alter system set job_queue_processes=<integer> sid='*';


參數(shù)值為0的情況



在10g和11gR1中,將JOB_QUEUE_PROCESSES設(shè)置為0只會(huì)導(dǎo)致DBMS_JOB作業(yè)無法運(yùn)行,但DBMS_SCHEDULER作業(yè)未受影響且仍將運(yùn)行。


從11gR2開始,將JOB_QUEUE_PROCESSES設(shè)置為0會(huì)導(dǎo)致DBMS_SCHEDULER和DBMS_JOB作業(yè)都無法運(yùn)行。


將JOB_QUEUE_PROCESS設(shè)置為0將禁用下列功能以及使用Oracle Scheduler或DBMS_JOB的任何其他功能或特性:

  • 高級(jí)復(fù)制(Advanced Replication)使用Oracle Scheduler進(jìn)行數(shù)據(jù)刷新。

  • Oracle AQ( Oracle Streams Advanced Queuing )使用Oracle Scheduler進(jìn)行消息傳播。

  • 物化視圖(Materialized Views)使用Oracle Scheduler進(jìn)行自動(dòng)刷新。 


注意:Oracle數(shù)據(jù)庫在升級(jí)模式下會(huì)覆蓋job queue設(shè)置,以禁用調(diào)度任務(wù)。 因此,升級(jí)Oracle數(shù)據(jù)庫時(shí)無需更改參數(shù)設(shè)置。


確保參數(shù)的合理性



如果需要將JOB_QUEUE_PROCESSES設(shè)置為較低的值,則應(yīng)考慮以下因素:


理想情況下,JOB_QUEUE_PROCESSES值應(yīng)大于數(shù)據(jù)庫中運(yùn)行的所有并發(fā)作業(yè)。讓JOB_QUEUE_PROCESSES大于調(diào)度的作業(yè)總數(shù)(使用scheduler + dbms_job)是個(gè)好主意。這將確保即使某些作業(yè)超過其常規(guī)運(yùn)行持續(xù)時(shí)間,我們也不會(huì)耗盡JOB_QUEUE_PROCESSES。


另外,由下列方法生成的調(diào)度程序作業(yè),也可能會(huì)產(chǎn)生相應(yīng)的進(jìn)程開銷:

  • 任何高級(jí)復(fù)制(Advanced Replication )刷新

  • Oracle AQ流式消息 傳輸

  • 物化視圖(Materialized Views) 刷新

  • DBMS_REDEFINITION數(shù)據(jù)表重定義


除此之外,可能還有一些可以手動(dòng)或通過某些第三方工具在數(shù)據(jù)庫中執(zhí)行的臨時(shí)作業(yè)。 JOB_QUEUE_PROCESSES也應(yīng)該滿足這些。


多租戶數(shù)據(jù)庫的參數(shù)特性



在12.1.0.1中,job_queue_process是容器數(shù)據(jù)庫(CDB)可修改參數(shù)(全局級(jí)別)。

在12.1.0.2中,job_queue_process參數(shù)不是CDB可修改的; 相反的,它是PDB可以修改的,但是每個(gè)pdb都無法正確使用自己的job_queue_processes值。

從12.2開始,JOB_QUEUE_PROCESSES是PDB可修改的:

  • 如果ROOT中的job_queue_processes為0,則在所有PDB中禁用Scheduler,包括ROOT。

  • 如果在除ROOT之外的特定PDB中將job_queue_processes設(shè)置為0,則僅在該P(yáng)DB中禁用Scheduler。


調(diào)研結(jié)果



如果要保證系統(tǒng)高峰期Oracle也能運(yùn)行各種任務(wù),那么需要將JOB_QUEUE_PROCESS參數(shù)設(shè)置為一個(gè)合理值。采用“技術(shù)手段獲取”+“經(jīng)驗(yàn)判斷”相結(jié)合的方式,是一種不錯(cuò)的solution。



各位讀者朋友也可關(guān)注作者微信公眾號(hào)“IT技術(shù)佳肴”,與作者交流。

【Oracle】簡(jiǎn)單參數(shù)也有講究,JOB_QUEUE_PROCESS參數(shù)調(diào)研

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI