Oracle 12c(12.1)中性能优化功能增强之通过参数THR

UNIX/Linux系统上,Oracle用多进程模型。例如:linux上一个常规安装的数据库会有如下进程列:

$ ps -ef | grep [o]ra_

oracle  15356    1  0 10:53 ?        00:00:00 ora_pmon_db12c

oracle  15358    1  0 10:53 ?        00:00:00 ora_psp0_db12c

oracle  15360    1  8 10:53 ?        00:01:27 ora_vktm_db12c

oracle  15364    1  0 10:53 ?        00:00:00 ora_gen0_db12c

oracle  15366    1  0 10:53 ?        00:00:00 ora_mman_db12c

oracle  15370    1  0 10:53 ?        00:00:00 ora_diag_db12c

oracle  15372    1  0 10:53 ?        00:00:00 ora_dbrm_db12c

oracle  15374    1  0 10:53 ?        00:00:00 ora_dia0_db12c

oracle  15376    1  0 10:53 ?        00:00:00 ora_dbw0_db12c

oracle  15378    1  010:53 ?        00:00:00 ora_lgwr_db12c

oracle  15380    1  0 10:53 ?        00:00:00 ora_ckpt_db12c

oracle  15382    1  0 10:53 ?        00:00:00 ora_smon_db12c

oracle  15384    1  0 10:53 ?        00:00:00 ora_reco_db12c

oracle  15386    1  0 10:53 ?        00:00:00 ora_lreg_db12c

oracle  15388    1  0 10:53 ?        00:00:03 ora_mmon_db12c

oracle  15390    1  0 10:53 ?        00:00:00 ora_mmnl_db12c

oracle  15392    1  0 10:53 ?        00:00:00 ora_d000_db12c

oracle  15394    1  010:53 ?        00:00:00 ora_s000_db12c

oracle  15407    1  0 10:54 ?        00:00:00 ora_tmon_db12c

oracle  15409    1  0 10:54 ?        00:00:00 ora_tt00_db12c

oracle  15411    1  0 10:54 ?        00:00:00 ora_smco_db12c

oracle  15413    1  0 10:54 ?        00:00:00 ora_fbda_db12c

oracle  15415    1  0 10:54 ?        00:00:00 ora_aqpc_db12c

oracle  15419    1  0 10:54 ?        00:00:00 ora_p000_db12c

oracle  15421    1  0 10:54 ?        00:00:00 ora_p001_db12c

oracle  15423    1  0 10:54 ?        00:00:00 ora_p002_db12c

oracle  15425    1  0 10:54 ?        00:00:00 ora_p003_db12c

oracle  15435    1  0 10:54 ?        00:00:00 ora_cjq0_db12c

oracle  15459    1  0 10:54 ?        00:00:00 ora_qm02_db12c

oracle  15463    1  0 10:54 ?        00:00:00 ora_q002_db12c

oracle  15465    1  0 10:54 ?        00:00:00 ora_q003_db12c

oracle  15612    1  0 11:04 ?        00:00:00 ora_w000_db12c

oracle  15679    1  0 11:10 ?        00:00:00 ora_j000_db12c

oracle  15681    1  0 11:10 ?        00:00:00 ora_j001_db12c

oracle  15683    1  0 11:10 ?        00:00:00 ora_w001_db12c

$

即使在多进程模型中,某些个别进程内部运行在多线程模式。

相反,在windows系统上,Oracle数据库作为一个多线程进程运行,而每个UNIX/Linux下的进程作为一个或多个线程运行。Oracle12c可以在UNIX/Linux上运行在多线程模式下,就像运行在window上那样。

2.  THREADED_EXECUTION参数

线程模型通过初始化参数THREADED_EXECUTION指定。

1)  THREADED_EXECUTION=FALSE:为默认值,oracle运行在多进程模式下。

2)  THREADED_EXECUTION=TRUE: Oracle以多线程模式运行。

如果想切换到多线程模式,只需设置THREADED_EXECUTION参数并重启数据库就可以。

CONN sys AS SYSDBA

ALTER SYSTEM SET threaded_execution=TRUESCOPE=SPFILE;

SHUTDOWN IMMEDIATE;

STARTUP;

一旦数据库被重启,我们会发现操作系统进程数减少了很多。

$ ps -ef | grep [o]ra_

oracle  15839    1  0 11:26 ?        00:00:00 ora_pmon_db12c

oracle  15841    1  0 11:26 ?        00:00:00 ora_psp0_db12c

oracle  15843    1  8 11:26 ?        00:00:03 ora_vktm_db12c

oracle  15847    1  0 11:26 ?        00:00:00 ora_u004_db12c

oracle  15853    1 34 11:26 ?        00:00:13 ora_u005_db12c

oracle  15859    1  0 11:26 ?        00:00:00 ora_dbw0_db12c

$

另外,需将如下参数添加至"$ORACLE_HOME/network/admin/listener.ora"文件中,以允许产生新线程来支持监听产生的连接,记得要用正确监听名替换

DEDICATED_THROUGH_BROKER_=ON

当需要切换回多进程模型时,只需切换该初始化参数值并重启数据库。

CONN sys AS SYSDBA

ALTER SYSTEM SET threaded_execution=FALSESCOPE=SPFILE;

SHUTDOWN IMMEDIATE;

STARTUP;

记得清楚"listener.ora"文件中的参数。

3.  OS认证

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/eaa5f35ae7fb67aee42a25ab23856c95.html