热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

multienantoracle_OracleDatabase12c新特性:多线程模式MultithreadedModel

OracleDatabase12c新特性:多线程模式-Multi-threadedModel在OracleDatabase12c中,Oracle引入了多线程模式&#x

Oracle Database12c新特性:多线程模式- Multi-threaded Model

在Oracle Database 12c中,Oracle引入了多线程模式,允许在Windows平台之外的Unix、Linux系统使用多线程模式,结合多进程与多线程模式,Oracle可以改进进程管理与性能。

先来看一下多进程与多线程模式下,Oracle后台进程的对比。下图是多进程模式:

下图是多线程模式下,Oracle数据库启动的后台进程:

Multi-process ,Multi-threaded Model 现在作为两种运行模式被支持。如下在Linux系统,缺省的数据库会启动一系列的后台进程:

oracle    1727     1  0 Jul11 ?        00:00:57 ora_pmon_core

oracle    1729     1  0 Jul11 ?        00:01:21 ora_psp0_core

oracle    1731     1  3 Jul11 ?        02:30:26 ora_vktm_core

oracle    1735     1  0 Jul11 ?        00:00:24 ora_gen0_core

oracle    1737     1  0 Jul11 ?        00:00:11 ora_mman_core

oracle    1741     1  0 Jul11 ?        00:00:20 ora_diag_core

oracle    1743     1  0 Jul11 ?        00:00:18 ora_dbrm_core

oracle    1745     1  0 Jul11 ?        00:05:02 ora_dia0_core

oracle    1747     1  0 Jul11 ?        00:00:28 ora_dbw0_core

oracle    1749     1  0 Jul11 ?        00:00:14 ora_lgwr_core

oracle    1751     1  0 Jul11 ?        00:01:54 ora_ckpt_core

oracle    1753     1  0 Jul11 ?        00:00:07 ora_lg00_core

oracle    1755     1  0 Jul11 ?        00:00:04 ora_lg01_core

oracle    1757     1  0 Jul11 ?        00:00:15 ora_smon_core

oracle    1759     1  0 Jul11 ?        00:00:03 ora_reco_core

oracle    1761     1  0 Jul11 ?        00:00:12 ora_lreg_core

oracle    1763     1  0 Jul11 ?        00:04:43 ora_mmon_core

oracle    1765     1  0 Jul11 ?        00:03:31 ora_mmnl_core

oracle    1767     1  0 Jul11 ?        00:00:05 ora_d000_core

oracle    1769     1  0 Jul11 ?        00:00:05 ora_s000_core

oracle    1781     1  0 Jul11 ?        00:00:08 ora_p000_core

oracle    1783     1  0 Jul11 ?        00:00:08 ora_p001_core

oracle    1785     1  0 Jul11 ?        00:00:04 ora_tmon_core

oracle    1787     1  0 Jul11 ?        00:00:15 ora_tt00_core

oracle    1789     1  0 Jul11 ?        00:00:12 ora_smco_core

oracle    1791     1  0 Jul11 ?        00:00:05 ora_fbda_core

oracle    1793     1  0 Jul11 ?        00:00:07 ora_w000_core

oracle    1795     1  0 Jul11 ?        00:00:03 ora_aqpc_core

oracle    1799     1  0 Jul11 ?        00:00:08 ora_p002_core

oracle    1801     1  0 Jul11 ?        00:00:08 ora_p003_core

oracle    1803     1  0 Jul11 ?        00:00:08 ora_p004_core

oracle    1805     1  0 Jul11 ?        00:00:08 ora_p005_core

oracle    1807     1  0 Jul11 ?        00:00:08 ora_p006_core

oracle    1809     1  0 Jul11 ?        00:00:08 ora_p007_core

oracle    1811     1  0 Jul11 ?        00:01:49 ora_cjq0_core

oracle    1813     1  0 Jul11 ?        00:00:04 ora_qm02_core

oracle    1817     1  0 Jul11 ?        00:00:04 ora_q002_core

oracle    1819     1  0 Jul11 ?        00:00:03 ora_q003_core

oracle    1933     1  0 Jul11 ?        00:00:07 ora_w001_core

oracle    1971     1  0 Jul11 ?        00:00:07 ora_w002_core

oracle    3175     1  0 Jul11 ?        00:00:06 ora_w003_core

oracle    4941     1  0 Jul12 ?        00:00:06 ora_w004_core

oracle    9621     1  0 Jul12 ?        00:00:04 ora_w005_core

oracle   23548     1  0 06:00 ?        00:02:17 ora_vkrm_core

从数据库内部也可以看到详细的进程信息:

SQL> select addr,pname,program from v$process

2  /

ADDR         PNAME PROGRAM

---------------- ----- ------------------------------------------------

00000000C2965BE0       PSEUDO

00000000C2966D40 PMON  oracle@enmocoredb (PMON)

00000000C2967EA0 PSP0  oracle@enmocoredb (PSP0)

00000000C2969000 VKTM  oracle@enmocoredb (VKTM)

00000000C296A160 GEN0  oracle@enmocoredb (GEN0)

00000000C296B2C0 MMAN  oracle@enmocoredb (MMAN)

00000000C296C420 W001  oracle@enmocoredb (W001)

00000000C296D580 DIAG  oracle@enmocoredb (DIAG)

00000000C296E6E0 DBRM  oracle@enmocoredb (DBRM)

00000000C296F840 DIA0  oracle@enmocoredb (DIA0)

00000000C29709A0 DBW0  oracle@enmocoredb (DBW0)

ADDR         PNAME PROGRAM

---------------- ----- ------------------------------------------------

00000000C2971B00 LGWR  oracle@enmocoredb (LGWR)

00000000C2972C60 CKPT  oracle@enmocoredb (CKPT)

00000000C2973DC0 LG00  oracle@enmocoredb (LG00)

00000000C2974F20 LG01  oracle@enmocoredb (LG01)

00000000C2976080 SMON  oracle@enmocoredb (SMON)

00000000C29771E0 RECO  oracle@enmocoredb (RECO)

00000000C2978340 LREG  oracle@enmocoredb (LREG)

00000000C29794A0 MMON  oracle@enmocoredb (MMON)

00000000C297A600 MMNL  oracle@enmocoredb (MMNL)

00000000C297B760 D000  oracle@enmocoredb (D000)

00000000C297C8C0 S000  oracle@enmocoredb (S000)

ADDR         PNAME PROGRAM

---------------- ----- ------------------------------------------------

00000000C297DA20 P000  oracle@enmocoredb (P000)

00000000C297EB80 P001  oracle@enmocoredb (P001)

00000000C297FCE0 TMON  oracle@enmocoredb (TMON)

00000000C2980E40 TT00  oracle@enmocoredb (TT00)

00000000C2981FA0 SMCO  oracle@enmocoredb (SMCO)

00000000C2983100 FBDA  oracle@enmocoredb (FBDA)

00000000C2984260 W000  oracle@enmocoredb (W000)

00000000C29853C0 AQPC  oracle@enmocoredb (AQPC)

00000000C2986520 CJQ0  oracle@enmocoredb (CJQ0)

00000000C2987680 P002  oracle@enmocoredb (P002)

00000000C29887E0 P003  oracle@enmocoredb (P003)

ADDR         PNAME PROGRAM

---------------- ----- ------------------------------------------------

00000000C2989940 P004  oracle@enmocoredb (P004)

00000000C298AAA0 P005  oracle@enmocoredb (P005)

00000000C298BC00 P006  oracle@enmocoredb (P006)

00000000C298CD60 P007  oracle@enmocoredb (P007)

00000000C298DEC0 QM02  oracle@enmocoredb (QM02)

00000000C298F020 W002  oracle@enmocoredb (W002)

00000000C2990180 Q002  oracle@enmocoredb (Q002)

00000000C29912E0 Q003  oracle@enmocoredb (Q003)

00000000C2992440 VKRM  oracle@enmocoredb (VKRM)

00000000C29935A0       oracle@enmocoredb (TNS V1-V3)

00000000C2994700 W003  oracle@enmocoredb (W003)

00000000C2995860 W004  oracle@enmocoredb (W004)

00000000C29969C0 W005  oracle@enmocoredb (W005)

通过设置初始化参数 threaded_execution ,可以启用或关闭多线程模式,该参数缺省值为False,设置为TRUE启用12c的这个新特性:

SQL> show parameter threaded_exec

NAME                     TYPE     VALUE

------------------------------------ ----------- ------------------------------

threaded_execution             boolean     FALSE

SQL> alter system set threaded_execution=true scope=spfile;

System altered.

该参数重新启动数据库后生效,但是注意,多线程模式,不支持操作系统认证,不能直接启动数据库,需要提供SYS的密码认证后方能启动数据库:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORA-01017: invalid username/password; logon denied

以下通过用户名和密码登录数据库:

[oracle@enmocoredb dbs]$ sqlplus sys/oracle as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Jul 14 17:05:54 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> col program for a40

SQL> select addr,pname,program from v$process;

ADDR         PNAME        PROGRAM

---------------- ---------- ----------------------------------------

00000000C2965BE0        PSEUDO

00000000C2966D40 PMON        oracle@enmocoredb (PMON)

00000000C2967EA0 PSP0        oracle@enmocoredb (PSP0)

00000000C2969000 VKTM        oracle@enmocoredb (VKTM)

00000000C296A160 GEN0        oracle@enmocoredb (GEN0)

现在在操作系统上启动的进程只有5个(PMON / PSP0 / VKTM / DBW0 / U004 / U005):

[oracle@enmocoredb dbs]$ ps -ef|grep ora_

oracle   27404     1  0 17:00 ?        00:00:00 ora_pmon_core

oracle   27406     1  0 17:00 ?        00:00:00 ora_psp0_core

oracle   27408     1  3 17:00 ?        00:00:05 ora_vktm_core

oracle   27412     1  0 17:00 ?        00:00:00 ora_u004_core

oracle   27418     1  0 17:00 ?        00:00:00 ora_u005_core

oracle   27424     1  0 17:00 ?        00:00:00 ora_dbw0_core

其中U进程是共享线程的"容器进程",每个进程可以容纳100个线程:

SQL> select spid,count(*) from v$process group by spid;

SPID               COUNT(*)

------------------------ ----------

1

28278                  1

28284                 10

28586                100

28806                 58

28290                100

28296                  1

28280                  1

28276                  1

启用该参数之后,需要设置监听器参数 DEDICATED_THROUGH_BROKER_LISTENER=ON ,如果不设置该参数,网络进程仍然会以进程模式连接。

By eygle on 2013-07-15 22:14 |

Comments (0) |

Oracle12c/11g | 3110 |



推荐阅读
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 数据库技术:execute immediate
    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
author-avatar
huo斌_340
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有