• Oracle进程


    Oracle中的各个进程要完成某个特定的任务或一组任务,每个进程都会分配内部内存(PGA内存)来完成它的任务。

    Oracle实例主要有3类进程:

    • 服务器进程(server process):这些进程根据客户的请求来完成工作。(专用服务器和共享服务器都是服务器进程)

    • 后台进程(background process):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程、维护自动工作负载存储库(AWR)
    • 从属进程(slave process):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。

    服务器进程

    服务器进程就是代表客户会话完成工作的进程。应用向数据库发送的SQL语句最后就要由这些进程接收并执行。

    • 专用服务器(dedicated server)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程或线程之间存在一对一的映射。
    • 共享服务器(shared server)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。你所连接的是一个数据库调度程序(dispatcher),而不是特意为连接创建的一个专用服务器进程。

    连接(connection)就是客户进程与Oracle实例之间的一条物理路径。

    会话(session)是数据库中的一个逻辑实体,客户进程可以在会话上执行SQL等。

    1.专用服务器连接

    在专用服务器模式下,客户连接和服务器进程(线程)之间会有一个一对一的映射。

    • 远程执行(remote execution):客户应用可能在另一台机器上执行(而不是数据库所在的机器)
    • 地址空间隔离(address space isolation):服务器进程可以读写SGA。如果客户进程和服务器进程物理地链接在一起,客户进程中一个错误的指针就能轻松地破坏SGA中的数据结构。 
    1. sys@cdb$root:orclcdb> ALTER SESSION SET CONTAINER=ORCLPDB1;
    2. Session altered.
    3. sys@cdb$root:orclcdb>
    4. sys@cdb$root:orclcdb>
    5. sys@cdb$root:orclcdb>
    6. sys@cdb$root:orclcdb> grant select on v_$process to SCOTT;
    7. Grant succeeded.
    8. sys@cdb$root:orclcdb> grant select on v_$session to SCOTT;
    9. Grant succeeded.
    10. sys@cdb$root:orclcdb>
    11. select a.pid dedicated_server, b.process clientpid
    12. 2 from v$process a, v$session b
    13. where a.addr = b.paddr
    14. 4 and b.sid = (select sid from v$mystat where rownum = 1);
    15. DEDICATED_SERVER CLIENTPID
    16. ---------------- ------------------------
    17. 53 123960
    18. 1 row selected.
    19. scott@orclpdb1:orclcdb>
    20. scott@orclpdb1:orclcdb>
    21. scott@orclpdb1:orclcdb>
    22. scott@orclpdb1:orclcdb> !/bin/ps -fp 53 123960
    23. UID PID PPID C STIME TTY STAT TIME CMD
    24. oracle 123960 123959 0 15:28 pts/5 Ssl+ 0:00 sqlplus as sysdba
    25. scott@orclpdb1:orclcdb>

    2.共享服务器连接

     

    数据库常驻连接池

    数据库常驻连接池(DRCP)是连接数据库并建立会话的一种新方法。

    连接与会话

    连接只是客户进程和数据库实例之间的一条特殊线路,最常见的就是网络连接。

    这条连接可能连接到一个专用服务器进程,也可能连接到调度程序。

    连接(connection):连接是从客户到Oracle实例的一条物理路径。连接可以在网络上建立,或者通过IPC机制建立。通常会在客户进程与一个专用服务器或一个调度程序之间建立连接。

    会话(session):会话是实例中存在的一个逻辑实体。(会话状态session state),也就是表示特定会话的一组内存中的数据结构。提到“数据库连接”时,大多数人首先想到的就是“会话”,你要在服务器中的会话上执行SQL、提交事务和运行存储过程。

    1. [root@MaxwellDBA ~]# su - oracle
    2. Last login: Fri Sep 30 15:33:22 CST 2022 on pts/6
    3. [oracle@MaxwellDBA ~]$ sqlplus sys/sys as sysdba
    4. SQL*Plus: Release 19.0.0.0.0 - Production on Fri Sep 30 16:07:46 2022
    5. Version 19.3.0.0.0
    6. Copyright (c) 1982, 2019, Oracle. All rights reserved.
    7. Connected to:
    8. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    9. Version 19.3.0.0.0
    10. sys@cdb$root:orclcdb> ALTER SESSION SET CONTAINER=ORCLPDB1;
    11. Session altered.
    12. sys@cdb$root:orclcdb>
    13. sys@cdb$root:orclcdb>
    14. sys@cdb$root:orclcdb> select username,sid,serial#,server,paddr,status
    15. 2 from v$session
    16. 3 where username= USER
    17. 4 /
    18. USERNAME
    19. ----------------------------------------------------------------------------------------------------
    20. SID SERIAL# SERVER PADDR STATUS
    21. ---------- ---------- --------- ---------------- --------
    22. SYS
    23. 4 51998 DEDICATED 000000007E531340 ACTIVE
    24. SYS
    25. 48 3106 DEDICATED 000000007E551440 ACTIVE
    26. SYS
    27. 267 2932 DEDICATED 000000007E575560 INACTIVE
    28. SYS
    29. 271 53486 DEDICATED 000000007E56AA60 INACTIVE
    30. 4 rows selected.
    31. sys@cdb$root:orclcdb>
    32. sys@cdb$root:orclcdb>
    33. sys@cdb$root:orclcdb> set autotrace on statistics
    34. sys@cdb$root:orclcdb>
    35. sys@cdb$root:orclcdb> select username,sid,serial#,server,paddr,status
    36. 2 from v$session
    37. 3 where username= USER
    38. 4 /
    39. USERNAME
    40. ----------------------------------------------------------------------------------------------------
    41. SID SERIAL# SERVER PADDR STATUS
    42. ---------- ---------- --------- ---------------- --------
    43. SYS
    44. 4 51998 DEDICATED 000000007E531340 ACTIVE
    45. SYS
    46. 48 3106 DEDICATED 000000007E551440 ACTIVE
    47. SYS
    48. 267 2932 DEDICATED 000000007E575560 INACTIVE
    49. SYS
    50. 271 53486 DEDICATED 000000007E56AA60 INACTIVE
    51. 4 rows selected.
    52. Statistics
    53. ----------------------------------------------------------
    54. 0 recursive calls
    55. 0 db block gets
    56. 0 consistent gets
    57. 0 physical reads
    58. 0 redo size
    59. 1104 bytes sent via SQL*Net to client
    60. 445 bytes received via SQL*Net from client
    61. 2 SQL*Net roundtrips to/from client
    62. 0 sorts (memory)
    63. 0 sorts (disk)
    64. 4 rows processed
    65. sys@cdb$root:orclcdb>

    专用服务器与共享服务器

    1、什么时候使用专用服务器

    在专用服务器模式中,客户连接与服务器进程之间存在一种一对一的映射。

    专用服务器是Oracle的推荐配置,它能很好地扩展。只要服务器有足够的硬件(CPU和RAM)来应对系统所需的专用服务器进程个数,专用服务器甚至可以用于数千条并发连接。

    2、什么时候使用共享服务器

    共享服务器的设置和配置尽管并不困难,但是比设置专用服务器要多一些。

    3、共享服务器的潜在好处

    共享服务器主要为我们做3件事:

    • 减少操作系统进程/线程数。
    • 刻意地限制并发度。

     

    • 以及减少系统所需的内存。

    这是使用共享服务器最主要的原因之一:它能减少所需的内存量。共享服务器确实能减少内存需求。共享服务器配置中对SGA的需求通常很大。这个内存一般要预分配,从而只能由数据库实例使用。

    4、DRCP

     DRCP非常适用于API本身没有足够连接池的客户进程。

    后台进程

    Oracle实例包括两部分: SGA和一组后台进程。

    后台进程执行保证数据库运行所需的实际维护任务。

    可以使用一个V$视图查看所有可能的Oracle后台进程。确定你的系统中正在使用哪些后台进程。

    1. scott@orclpdb1:orclcdb>
    2. scott@orclpdb1:orclcdb>
    3. scott@orclpdb1:orclcdb> select paddr,name,description
    4. 2 from v$bgprocess
    5. 3 order by paddr desc
    6. 4 /
    7. PADDR NAME DESCRIPTION
    8. ---------------- ----- ----------------------------------------------------------------
    9. 000000007E578020 M002 MMON slave class 1
    10. 000000007E574000 M005 MMON slave class 1
    11. 000000007E571540 W007 space management slave pool
    12. 000000007E56FFE0 W006 space management slave pool
    13. 000000007E56EA80 W005 space management slave pool
    14. 000000007E569500 W004 space management slave pool
    15. 000000007E566A40 W003 space management slave pool
    16. 000000007E5654E0 Q003 QMON MS
    17. 000000007E563F80 P003 Parallel query slave
    18. 000000007E562A20 P002 Parallel query slave
    19. 000000007E5614C0 CJQ0 Job Queue Coordinator
    20. 000000007E55EA00 Q001 QMON MS
    21. 000000007E55D4A0 QM02 QMON MS
    22. 000000007E55BF40 AQPC AQ Process Coord
    23. 000000007E55A9E0 W002 space management slave pool
    24. 000000007E559480 TT02 Redo Transport
    25. 000000007E557F20 TT01 Redo Transport
    26. 000000007E5569C0 TT00 Redo Transport
    27. 000000007E555460 P001 Parallel query slave
    28. 000000007E553F00 P000 Parallel query slave
    29. 000000007E5529A0 M003 MMON slave class 1
    30. 000000007E54FEE0 M004 MMON slave class 1
    31. 000000007E54E980 TMON Transport Monitor
    32. 000000007E54D420 S000 Shared servers
    33. 000000007E54BEC0 D000 Dispatchers
    34. 000000007E54A960 MMON Manageability Monitor Process
    35. 000000007E549400 MMNL Manageability Monitor Process 2
    36. 000000007E549400 FENC IOServer fence monitor
    37. 000000007E547EA0 PXMN PX Monitor
    38. 000000007E546940 W001 space management slave pool
    39. 000000007E5453E0 LREG Listener Registration
    40. 000000007E543E80 W000 space management slave pool
    41. 000000007E542920 RECO distributed recovery
    42. 000000007E5413C0 SMCO Space Manager Process
    43. 000000007E53FE60 LG01 Log Writer Slave
    44. 000000007E53E900 SMON System Monitor Process
    45. 000000007E53D3A0 LG00 Log Writer Slave
    46. 000000007E53BE40 CKPT checkpoint
    47. 000000007E53A8E0 LGWR Redo etc.
    48. 000000007E539380 DBW0 db writer process 0
    49. 000000007E537E20 DIA0 diagnosibility process 0
    50. 000000007E5368C0 PMAN process manager
    51. 000000007E535360 SVCB services background monitor
    52. 000000007E533E00 VKRM Virtual sKeduler for Resource Manager
    53. 000000007E5328A0 SCMN
    54. 000000007E531340 OFSD Oracle File Server BG
    55. 000000007E52FDE0 DIAG diagnosibility process
    56. 000000007E52E880 SCMN
    57. 000000007E52D320 GEN1 generic1
    58. 000000007E52BDC0 DBRM DataBase Resource Manager
    59. 000000007E52A860 MMAN Memory Manager
    60. 000000007E529300 GEN0 generic0
    61. 000000007E527DA0 VKTM Virtual Keeper of TiMe process
    62. 000000007E526840 PSP0 process spawner 0
    63. 000000007E5252E0 CLMN process cleanup
    64. 000000007E523D80 PMON process cleanup
    65. 00 ABMR Auto BMR Background Process
    66. 00 ACFS ACFS CSS
    67. 00 ACMS Atomic Controlfile to Memory Server
    68. 00 AMB1 ASM Background 1
    69. 00 AMB2 ASM Background 2
    70. 00 AMB3 ASM Background 3
    71. 00 ARB0 ASM Rebalance 0
    72. 00 ARB1 ASM Rebalance 1
    73. 00 ARB2 ASM Rebalance 2
    74. 00 ARB3 ASM Rebalance 3
    75. 00 ARB4 ASM Rebalance 4
    76. 00 ARB5 ASM Rebalance 5
    77. 00 ARB6 ASM Rebalance 6
    78. 00 ARB7 ASM Rebalance 7
    79. 00 ARB8 ASM Rebalance 8
    80. 00 ARB9 ASM Rebalance 9
    81. 00 ARBA ASM Rebalance 10
    82. 00 ARC0 Archival Process 0
    83. 00 ARC1 Archival Process 1
    84. 00 ARC2 Archival Process 2
    85. 00 ARC3 Archival Process 3
    86. 00 ARC4 Archival Process 4
    87. 00 ARC5 Archival Process 5
    88. 00 ARC6 Archival Process 6
    89. 00 ARC7 Archival Process 7
    90. 00 ARC8 Archival Process 8
    91. 00 ARC9 Archival Process 9
    92. 00 ARCa Archival Process 10
    93. 00 ARCb Archival Process 11
    94. 00 ARCc Archival Process 12
    95. 00 ARCd Archival Process 13
    96. 00 ARCe Archival Process 14
    97. 00 ARCf Archival Process 15
    98. 00 ARCg Archival Process 16
    99. 00 ARCh Archival Process 17
    100. 00 ARCi Archival Process 18
    101. 00 ARCj Archival Process 19
    102. 00 ARCk Archival Process 20
    103. 00 ARCl Archival Process 21
    104. 00 ARCm Archival Process 22
    105. 00 ARCn Archival Process 23
    106. 00 ARCo Archival Process 24
    107. 00 ARCp Archival Process 25
    108. 00 ARCq Archival Process 26
    109. 00 ARCr Archival Process 27
    110. 00 ARCs Archival Process 28
    111. 00 ARCt Archival Process 29
    112. 00 ASMB ASM Background
    113. 00 BW36 db writer process 36
    114. 00 BW37 db writer process 37
    115. 00 BW38 db writer process 38
    116. 00 BW39 db writer process 39
    117. 00 BW40 db writer process 40
    118. 00 BW41 db writer process 41
    119. 00 BW42 db writer process 42
    120. 00 BW43 db writer process 43
    121. 00 BW44 db writer process 44
    122. 00 BW45 db writer process 45
    123. 00 BW46 db writer process 46
    124. 00 BW47 db writer process 47
    125. 00 BW48 db writer process 48
    126. 00 BW49 db writer process 49
    127. 00 BW50 db writer process 50
    128. 00 BW51 db writer process 51
    129. 00 BW52 db writer process 52
    130. 00 BW53 db writer process 53
    131. 00 BW54 db writer process 54
    132. 00 BW55 db writer process 55
    133. 00 BW56 db writer process 56
    134. 00 BW57 db writer process 57
    135. 00 BW58 db writer process 58
    136. 00 BW59 db writer process 59
    137. 00 BW60 db writer process 60
    138. 00 BW61 db writer process 61
    139. 00 BW62 db writer process 62
    140. 00 BW63 db writer process 63
    141. 00 BW64 db writer process 64
    142. 00 BW65 db writer process 65
    143. 00 BW66 db writer process 66
    144. 00 BW67 db writer process 67
    145. 00 BW68 db writer process 68
    146. 00 BW69 db writer process 69
    147. 00 BW70 db writer process 70
    148. 00 BW71 db writer process 71
    149. 00 BW72 db writer process 72
    150. 00 BW73 db writer process 73
    151. 00 BW74 db writer process 74
    152. 00 BW75 db writer process 75
    153. 00 BW76 db writer process 76
    154. 00 BW77 db writer process 77
    155. 00 BW78 db writer process 78
    156. 00 BW79 db writer process 79
    157. 00 BW80 db writer process 80
    158. 00 BW81 db writer process 81
    159. 00 BW82 db writer process 82
    160. 00 BW83 db writer process 83
    161. 00 BW84 db writer process 84
    162. 00 BW85 db writer process 85
    163. 00 BW86 db writer process 86
    164. 00 BW87 db writer process 87
    165. 00 BW88 db writer process 88
    166. 00 BW89 db writer process 89
    167. 00 BW90 db writer process 90
    168. 00 BW91 db writer process 91
    169. 00 BW92 db writer process 92
    170. 00 BW93 db writer process 93
    171. 00 BW94 db writer process 94

    这个视图中PADDR不是00的行都是系统配置和运行的进程(线程)

    中心后台进程

    有一个中心(focused)用途的Oracle后台进程。

    后台启动的后台进程:

    1. scott@orclpdb1:orclcdb> select paddr,name,description
    2. 2 from v$bgprocess
    3. 3 where paddr <> '00'
    4. 4 order by paddr desc
    5. 5 /
    6. PADDR NAME DESCRIPTION
    7. ---------------- ----- ----------------------------------------------------------------
    8. 000000007E578020 M002 MMON slave class 1
    9. 000000007E574000 M005 MMON slave class 1
    10. 000000007E571540 W007 space management slave pool
    11. 000000007E56FFE0 W006 space management slave pool
    12. 000000007E56EA80 W005 space management slave pool
    13. 000000007E569500 W004 space management slave pool
    14. 000000007E566A40 W003 space management slave pool
    15. 000000007E5654E0 Q003 QMON MS
    16. 000000007E563F80 P003 Parallel query slave
    17. 000000007E562A20 P002 Parallel query slave
    18. 000000007E5614C0 CJQ0 Job Queue Coordinator
    19. 000000007E55EA00 Q001 QMON MS
    20. 000000007E55D4A0 QM02 QMON MS
    21. 000000007E55BF40 AQPC AQ Process Coord
    22. 000000007E55A9E0 W002 space management slave pool
    23. 000000007E559480 TT02 Redo Transport
    24. 000000007E557F20 TT01 Redo Transport
    25. 000000007E5569C0 TT00 Redo Transport
    26. 000000007E555460 P001 Parallel query slave
    27. 000000007E553F00 P000 Parallel query slave
    28. 000000007E5529A0 M003 MMON slave class 1
    29. 000000007E54FEE0 M004 MMON slave class 1
    30. 000000007E54E980 TMON Transport Monitor
    31. 000000007E54D420 S000 Shared servers
    32. 000000007E54BEC0 D000 Dispatchers
    33. 000000007E54A960 MMON Manageability Monitor Process
    34. 000000007E549400 MMNL Manageability Monitor Process 2
    35. 000000007E549400 FENC IOServer fence monitor
    36. 000000007E547EA0 PXMN PX Monitor
    37. 000000007E546940 W001 space management slave pool
    38. 000000007E5453E0 LREG Listener Registration
    39. 000000007E543E80 W000 space management slave pool
    40. 000000007E542920 RECO distributed recovery
    41. 000000007E5413C0 SMCO Space Manager Process
    42. 000000007E53FE60 LG01 Log Writer Slave
    43. 000000007E53E900 SMON System Monitor Process
    44. 000000007E53D3A0 LG00 Log Writer Slave
    45. 000000007E53BE40 CKPT checkpoint
    46. 000000007E53A8E0 LGWR Redo etc.
    47. 000000007E539380 DBW0 db writer process 0
    48. 000000007E537E20 DIA0 diagnosibility process 0
    49. 000000007E5368C0 PMAN process manager
    50. 000000007E535360 SVCB services background monitor
    51. 000000007E533E00 VKRM Virtual sKeduler for Resource Manager
    52. 000000007E5328A0 SCMN
    53. 000000007E531340 OFSD Oracle File Server BG
    54. 000000007E52FDE0 DIAG diagnosibility process
    55. 000000007E52E880 SCMN
    56. 000000007E52D320 GEN1 generic1
    57. 000000007E52BDC0 DBRM DataBase Resource Manager
    58. 000000007E52A860 MMAN Memory Manager
    59. 000000007E529300 GEN0 generic0
    60. 000000007E527DA0 VKTM Virtual Keeper of TiMe process
    61. 000000007E526840 PSP0 process spawner 0
    62. 000000007E5252E0 CLMN process cleanup
    63. 000000007E523D80 PMON process cleanup
    64. 56 rows selected.
    65. scott@orclpdb1:orclcdb>

    1.PMON:进程监视器

    Process Monitor 负责在出现异常中止 的连接之后完成清理。

    2.SMON:系统监视器

    SMON进程,系统监视器(System Monitor)

    SMON所做的工作包括:

    • 清理临时空间
    • 合并空闲空间
    • 针对原来不可用的文件恢复活动的事务
    • 执行RAC中失败节点的实例恢复。
    • 收缩回滚段
    • ”离线“回滚段

    3.RECO:分布式数据库恢复

    4.CKPT:检查点进程

    建立检查点主要是DBWin的任务。

    CKPT只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)

    5.DBWn:数据库块写入器

    6.LGWR日志写入器

    LGWR进程负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。如果满足以下某个条件,就会做这个工作:

    • 每3秒会刷新输出一次。
    • 任何事务发出一个提交时。
    • 重做日志缓冲区1/3满,或者已经包含1MB的缓冲数据。

    7.ARCn:归档进程

    当LGWR将在线重做日志文件填满时,就将其复制到另一个位置。

    8.DIAG:诊断性进程

    专用于RAC环境

    利用新增的ADR(高级诊断库,Advanced Diagnostic Reoisitory),它会负责监视实例的整体状况,而且会捕获处理实例失败时所需要的信息。

    9.FBDA:闪回数据归档进程。

    10.DBRM:数据库资源管理器进程。

    11.GENO:通用任务执行进程。

    下面的进程是使用ASM的数据库实例所特有的:

    • 自动存储管理后台(Automatic Storage Management Background ,ASMB)进程

    ASMB进程在使用了ASM的数据库实例中运行。它负责与管理存储的ASM实例通信、向ASM实例提供更新的统计信息。

    • 重新平衡(ReBALance RBAL)进程

    负责处理重新平衡需求即重新分布负载的请求

    • 高度可用性
    • 可扩展性

    以下进程是RAC环境所特有的,如果不是RAC环境,则看不到这些进程。

    • 锁监视器(Lock monitor ,LMON)进程
    • 锁管理器守护(Lock manager daemon LMD)进程
    • 锁管理器服务器(Lock manager server LMSn)进程
    • 锁(Lock,LCKO)进程

    以下是大多数单实例或RAC实例常见的后台进程

    • 进程生成器(PSPO)进程
    • 虚拟时间管理器(VKTM)进程
    • 空间管理协调器(SMCO)进程

  • 相关阅读:
    R语言中的函数26:polyroot多项式求根函数
    有被惊艳到!阿里达摩院面向开发者公布的Java全体系成长路线,从P5-P8职级全系
    AES-GCM算法 Java与Python互相加解密
    【最新】TensorFlow、cuDNN、CUDA三者之间的最新版本对应及下载地址
    [unity]多脚本情况下update函数的执行顺序
    使用 gperftools 分析程序内存占用情况
    Web3 DApp用户体验最佳实践
    唐山海德教育二级建造师报考-----考试科目
    【MySQL高级篇】一文带你吃透数据库的约束
    【精通内核】Linux内核自旋锁实现原理与源码解析
  • 原文地址:https://blog.csdn.net/u011868279/article/details/127123372