Oracle 后台进程初探


每一个Oracle版本都有其特定的后台进程,目前研究的版本为

引用
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production


通过关联x$ksbdd,x$ksbdp,x$ksmfsv可以查到当前数据版本支持的后台进程数量限制,进程作用及进程在SGA中的结构体名字(KSMFSNAM字段)

引用
SQL> COL KSBDDIDN FOR A10
SQL> COL KSMFSNAM FOR A10
SQL>
    SELECT ksbdd.ksbddidn, ksmfsv.ksmfsnam, ksbdd.ksbdddsc
  2      FROM x$ksbdd ksbdd, x$ksbdp ksbdp, x$ksmfsv ksmfsv
  3      WHERE ksbdd.indx = ksbdp.indx
  4      AND ksbdp.addr = ksmfsv.ksmfsadr
  5      ORDER BY ksbdd.ksbddidn;

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
ARB0       kfgbr0_    ASM Rebalance 0
ARB1       kfgbr1_    ASM Rebalance 1
ARB2       kfgbr2_    ASM Rebalance 2
ARB3       kfgbr3_    ASM Rebalance 3
ARB4       kfgbr4_    ASM Rebalance 4
ARB5       kfgbr5_    ASM Rebalance 5
ARB6       kfgbr6_    ASM Rebalance 6
ARB7       kfgbr7_    ASM Rebalance 7
ARB8       kfgbr8_    ASM Rebalance 8
ARB9       kfgbr9_    ASM Rebalance 9
ARBA       kfgbrA_    ASM Rebalance 10

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
ARC0       kcrrd0_    Archival Process 0
ARC1       kcrrd1_    Archival Process 1
ARC2       kcrrd2_    Archival Process 2
ARC3       kcrrd3_    Archival Process 3
ARC4       kcrrd4_    Archival Process 4
ARC5       kcrrd5_    Archival Process 5
ARC6       kcrrd6_    Archival Process 6
ARC7       kcrrd7_    Archival Process 7
ARC8       kcrrd8_    Archival Process 8
ARC9       kcrrd9_    Archival Process 9
ARCa       kcrrdxa_   Archival Process 10

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
ARCb       kcrrdxb_   Archival Process 11
ARCc       kcrrdxc_   Archival Process 12
ARCd       kcrrdxd_   Archival Process 13
ARCe       kcrrdxe_   Archival Process 14
ARCf       kcrrdxf_   Archival Process 15
ARCg       kcrrdxg_   Archival Process 16
ARCh       kcrrdxh_   Archival Process 17
ARCi       kcrrdxi_   Archival Process 18
ARCj       kcrrdxj_   Archival Process 19
ARCk       kcrrdxk_   Archival Process 20
ARCl       kcrrdxl_   Archival Process 21

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
ARCm       kcrrdxm_   Archival Process 22
ARCn       kcrrdxn_   Archival Process 23
ARCo       kcrrdxo_   Archival Process 24
ARCp       kcrrdxp_   Archival Process 25
ARCq       kcrrdxq_   Archival Process 26
ARCr       kcrrdxr_   Archival Process 27
ARCs       kcrrdxs_   Archival Process 28
ARCt       kcrrdxt_   Archival Process 29
ASMB       kfnbgd_    ASM Background
CJQ0       kkjcjq0_   Job Queue Coordinator
CKPT       kcvcdp_    checkpoint

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
CTWR       krcbgp_    Change Tracking Writer
DBW0       kcbdw0_    db writer process 0
DBW1       kcbdw1_    db writer process 1
DBW2       kcbdw2_    db writer process 2
DBW3       kcbdw3_    db writer process 3
DBW4       kcbdw4_    db writer process 4
DBW5       kcbdw5_    db writer process 5
DBW6       kcbdw6_    db writer process 6
DBW7       kcbdw7_    db writer process 7
DBW8       kcbdw8_    db writer process 8
DBW9       kcbdw9_    db writer process 9

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
DBWa       kcbdw10_   db writer process 10 (a)
DBWb       kcbdw11_   db writer process 11 (b)
DBWc       kcbdw12_   db writer process 12 (c)
DBWd       kcbdw13_   db writer process 13 (d)
DBWe       kcbdw14_   db writer process 14 (e)
DBWf       kcbdw15_   db writer process 15 (f)
DBWg       kcbdw16_   db writer process 16 (g)
DBWh       kcbdw17_   db writer process 17 (h)
DBWi       kcbdw18_   db writer process 18 (i)
DBWj       kcbdw19_   db writer process 19 (j)
DIAG       kstdtp_    diagnosibility process

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
DMON       rfmprc_    DG Broker Monitor Process
EMN0       kponem0_   Event Monitor Process 0
FMON       ksfmfmon_  File Mapping Monitor Process
GMON       kfdp_gmon_ diskgroup monitor
INSV       rfi_insv_  Data Guard Broker INstance SlaVe Process
LCK0       kclck0_    Lock Process 0
LGWR       kcrprc_    Redo etc.
LMD0       kjid0_     global enqueue service daemon 0
LMON       kjidm_     global enqueue service monitor
LMS0       kjmlms0_   global cache service process 0
LMS1       kjmlms1_   global cache service process 1

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LMS2       kjmlms2_   global cache service process 2
LMS3       kjmlms3_   global cache service process 3
LMS4       kjmlms4_   global cache service process 4
LMS5       kjmlms5_   global cache service process 5
LMS6       kjmlms6_   global cache service process 6
LMS7       kjmlms7_   global cache service process 7
LMS8       kjmlms8_   global cache service process 8
LMS9       kjmlms9_   global cache service process 9
LMSa       kjmlmsa_   global cache service process 10
LMSb       kjmlmsb_   global cache service process 11
LMSc       kjmlmsc_   global cache service process 12

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LMSd       kjmlmsd_   global cache service process 13
LMSe       kjmlmse_   global cache service process 14
LMSf       kjmlmsf_   global cache service process 15
LMSg       kjmlmsg_   global cache service process 16
LMSh       kjmlmsh_   global cache service process 17
LMSi       kjmlmsi_   global cache service process 18
LMSj       kjmlmsj_   global cache service process 19
LMSk       kjmlmsk_   global cache service process 20
LMSl       kjmlmsl_   global cache service process 21
LMSm       kjmlmsm_   global cache service process 22
LMSn       kjmlmsn_   global cache service process 23

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LMSo       kjmlmso_   global cache service process 24
LMSp       kjmlmsp_   global cache service process 25
LMSq       kjmlmsq_   global cache service process 26
LMSr       kjmlmsr_   global cache service process 27
LMSs       kjmlmss_   global cache service process 28
LMSt       kjmlmst_   global cache service process 29
LMSu       kjmlmsu_   global cache service process 30
LMSv       kjmlmsv_   global cache service process 31
LMSw       kjmlmsw_   global cache service process 32
LMSx       kjmlmsx_   global cache service process 33
LMSy       kjmlmsy_   global cache service process 34

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LMSz       kjmlmsz_   global cache service process 35
LNS0       kcrrns0_   Network Server 0
LNS1       kcrrns1_   Network Server 1
LNS2       kcrrns2_   Network Server 2
LNS3       kcrrns3_   Network Server 3
LNS4       kcrrns4_   Network Server 4
LNS5       kcrrns5_   Network Server 5
LNS6       kcrrns6_   Network Server 6
LNS7       kcrrns7_   Network Server 7
LNS8       kcrrns8_   Network Server 8
LNS9       kcrrns9_   Network Server 9

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LNSa       kcrrns10_  Network Server 10
LNSb       kcrrns11_  Network Server 11
LNSc       kcrrns12_  Network Server 12
LNSd       kcrrns13_  Network Server 13
LNSe       kcrrns14_  Network Server 14
LNSf       kcrrns15_  Network Server 15
LNSg       kcrrns16_  Network Server 16
LNSh       kcrrns17_  Network Server 17
LNSi       kcrrns18_  Network Server 18
LNSj       kcrrns19_  Network Server 19
LSP0       krvslsp_   Logical Standby

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
LSP1       krvsdbp_   Dictionary build process for Logical Standby
LSP2       krvssgsp_  Set Guard Standby Information for Logical Standby
MMAN       kmgsdp_    Memory Manager
MMNL       kebmmnl_   Manageability Monitor Process 2
MMON       kebmmon_   Manageability Monitor Process
MRP0       krsmmrp_   Managed Standby Recovery
NSV0       rfins0_    Data Guard Broker NetSlave Process 0
NSV1       rfins1_    Data Guard Broker NetSlave Process 1
NSV2       rfins2_    Data Guard Broker NetSlave Process 2
NSV3       rfins3_    Data Guard Broker NetSlave Process 3
NSV4       rfins4_    Data Guard Broker NetSlave Process 4

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
NSV5       rfins5_    Data Guard Broker NetSlave Process 5
NSV6       rfins6_    Data Guard Broker NetSlave Process 6
NSV7       rfins7_    Data Guard Broker NetSlave Process 7
NSV8       rfins8_    Data Guard Broker NetSlave Process 8
NSV9       rfins9_    Data Guard Broker NetSlave Process 9
PMON       ksuclp_    process cleanup
PSP0       kso_spawne process spawner 0
           r0_

QMNC       kwqmnc_    AQ Coordinator
RBAL       kfgbrm_    ASM Rebalance master

KSBDDIDN   KSMFSNAM   KSBDDDSC
---------- ---------- --------------------------------------------------
RECO       k2vbkg_    distributed recovery
RSM0       rfrmp0_    Data Guard Broker Resource Guard Process 0
RSM1       rfrmp1_    Data Guard Broker Resource Guard Process 1
RVWR       krfwrp_    Recovery Writer
SMON       ktmprc_    System Monitor Process
TEST       ksbtstp_   test background process

158 rows selected.


进一步,我们可以通过以level 2 级别dump sga信息查看后台进程在内存中的地址

引用
SQL> ALTER SESSION SET EVENTS 'immediate trace name global_area level 2';

Session altered.

获取trc文件

引用
SQL> SELECT    d.VALUE
  2         || '/'
  3         || LOWER (RTRIM (i.INSTANCE, CHR (0)))
  4         || '_ora_'
  5         || p.spid
  6         || '.trc' trace_file_name
  7    FROM (SELECT p.spid
  8            FROM v$mystat m, v$session s, v$process p
         WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
       (SELECT t.INSTANCE
          FROM v$thread t, v$parameter v
12           WHERE v.NAME = 'thread'
           AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14         (SELECT VALUE
15            FROM v$parameter
16           WHERE NAME = 'user_dump_dest') d
17  /

TRACE_FILE_NAME
--------------------------------------------------------------------------------
/ora10g/app/admin/super/udump/super_ora_31179.trc


打开/ora10g/app/admin/super/udump/super_ora_31179.trc文件可以看到DBW9等一系列后台进程描述是以ksbdp 开始的,并进一步可以看到其内存地址,结构体描述名字

引用
...
ksbdp kcbdw9_ [200097F4, 20009820) = 00000036 00000000 00000000 00000000 ...
Dump of memory from 0x20009804 to 0x20009820
20009800          39574244 00000000 00000000      [DBW9........]
20009810 00000000 00000000 00000000 00010009  [................]
        KSBDPPRO = 0X00000000
        KSBDPSER = 0
        KSBDPERR = 0
        KSBDPNAM = 'DBW9'
        KSBDPFLG = 0
ksbdp kcbdw10_ [20009820, 2000984C) = 00000037 00000000 00000000 00000000 ...
Dump of memory from 0x20009830 to 0x2000984C
20009830 61574244 00000000 00000000 00000000  [DBWa............]
20009840 00000000 00000000 0001000A           [............]
        KSBDPPRO = 0X00000000
        KSBDPSER = 0
        KSBDPERR = 0
        KSBDPNAM = 'DBWa'
        KSBDPFLG = 0
...

有了以上基本信息,即可深入研究了

相关内容