Oracle后台进程中哪些与CPU数量有关

2025-02-26 05:22:07
推荐回答(1个)
回答1:

Oracle实例的进程结构

里程这里说的是一个Unix系统的过程中,在Windows中,甲骨文是一个操作系统服务。

Oracle实例的内存区域和后台进程组成。

到一个单一的流程实例(进程执行所有的Oracle码,只允许进入单用户)和多进程实例Oracle实例(甲骨文代码被执行多个进程在不同部位,为每个连接的用户有一个过程,它允许多个用户同时使用)。

在多进程架构,除了服务器进程(请注意,这个“服务器进程”并不是指所有流程实例,请参见下面的说明),还有其他后台进程,包括:采用dnnn,DBWR,LGWR,ARCH,PMON,SMON,CKPT,RECO等。在数据库启动之后,这些进程驻留的操作系统。甲骨文中的所有进程和量不能超过设定值参数过程:

SQL>显示参数过程

当Oracle客户端应用程序和Oracle实例连接时,Oracle会产生一个服务器进程为这些客户,这个过程widnows下的线程性能。这个过程的主要作用是:来解析,编译,执行用户的SQL语句的用户发出的SQL语句,数据块是没有的情况下,当数据缓冲区,从磁盘数据文件中的数据读取到的SGA的共享数据缓冲区在执行SQL语句返回的结果集的应用程序。使用下面的语句在数据库中查询用户的会话信息。

SQL>选择SUBSTR(1,3 s.sid)SID,SUBSTR(s.serial#,1,5)SER,SPID,SUBSTR(SCHEMANAME,1,10)架构,SUBSTR(型,1,3)典型,SUBSTR(解码((consistent_gets“+ block_gets”),0,'无',(100 *(consistent_gets + block_gets physical_reads)/ consistent_gets + block_gets))),1,4)“%命中” ,价值的cpu,SUBSTR(block_changes 1,5)bchng的V $进程p,V $ SESSTAT吨,V $ sess_io I,V $会话s i.sid = s.sid p.addr = PADDR(+ )和s.sid = t.sid t.statistic#= 12;

结果:

SID表示会话ID号中

SER表示会话串行#

SPID表示操作系统的系统进程ID号,序列号和相结合来表示单个会话的SID,

架构

典型代表数据库的用户名,工艺类型,用户使用过程,BAC %的命中表示作为后台进程的数据缓冲区的命中率,

CPU,CPU使用时间,

bchng表示的数据块数。 />下面描述了不同的后台进程。

1。 DBWR进程

DBWR(数据库作家)过程缓冲区中的数据写入数据文件的数据缓冲区管理。

当数据缓冲区中的数据被,被标记为“脏”,DBWR进程是负责“脏”数据被写入到磁盘。 /> DBWR采用LRU算法,以取代在数据缓冲区中的数据。

DBWR的作用包括:

1)管理数据缓冲区,以便服务器进程总能找到空闲缓冲区

2)所有过的缓冲区数据写入到数据库文件 3)使用LRU算法最近使用过的块保留在内存

4)通过延迟写来优化磁盘I / O。

在下列情况下DBWR脏数据写入到磁盘数据文件:

1)当一个服务器进程将缓冲数据块“脏表”,的脏表面表达,在一定程度上转移。 (临界长度由参数DB_BLOCK_WRITE_BATCH的确定)

2)当一个服务器进程在LRU表中查找缓冲DB_BLOCK_MAX_SCAN_CNT,没有找到空闲缓冲区

3)超时

4)检查点发生 BR p>在一个Oracle实例,允许启动多个DBWR进程,DBWR进程号指定的参数DB_WRITE_PROCESSES的上限为20,其次是进程名会自动命名为:DBW0,DBW1 DBW2 ... DBW19。

SQL>显示参数进程

2。 LGWR进程

日志写入(LGWR)进程将日志数据从日志缓冲区写入磁盘的日志文件。

LGWR进程的工作时序可以看到我写的第一章,“交易过程。”

LGWR写入光盘条件:

1)发生提交,提交;

2)日志缓冲区的总数达到1/3;

3)加班;

4)DBWR检查点进程需要清除缓冲区。

每个Oracle实例只有一个LGWR进程。

LGWR进程同步的日志信息写入日志文件组的多个日志成员,该组的成员之一,如果该文件被删除或不可用,LGWR将日志信息写入,继续组的其他文件,不影响操作的数据库。

3。 SMON进程

SMON(系统监控器),系统监控的过程中,在实例启动时执行实例恢复,并负责清理不再使用的临时段。

4。 PMON进程

PMON(进程监视器),过程监控行驶里程,服务器进程无法恢复执行过程中,负责清理内存,内存和释放过程中所使用的资源。

5。 ARCH进程

(归档进程ARCH归档进程),当日志写入到磁盘或磁带介质故障恢复完整的日志信息。

日志信息首先产生于日志缓冲区,然后将日志写入器进程LGWR日志数据写入到日志文件组,日志切换,将被写入归档进程ARCH日志的数据从日志文件归档日志组。

在一个数据库实例中,归档进程可以开始至10日,随后通过进程名称自动命名为ARC0 ARC1,ARC2的... ARC9,设置方法是:在参数文件中添加参数LOG_ARCHIVE_MAX_PROCESSES。关于如何启用自动归档数据库中,前面的“物理结构”这里所说的一些相关参数:

1)LOG_ARCHIVE_DEST:用于设置归档日志文件的存放目录

2) LOG_ARCHIVE_DUBLEX_DEST:用于设置归档日志文件的镜像存储目录,此参数在Oracle 8.0及以上版本支持

3)的LOG_ARCHIVE_DEST_n:用于设置多个镜像目录,其中1 <= N <= 10,此参数有以下三个选项:

(1)强制性的:你必须完成这个目录指存档,它可以切换。

(2)重新开放:归档目录或介质故障,需要等待很长时间重新写日志,默认时间为300秒。

(3)可选:无论是否在归档完成,无论是交换机,该交换机的默认模式

举例如下:

LOG_ARCHIVE_DEST_1 ='位置= / U01 / ORACLE /归档/

强制性的

REOPEN = 500'

LOG_ARCHIVE_DEST_2 ='位置= / u02/oracle/archive的/

可选'

的LOG_ARCHIVE_DEST_n只适用于甲骨文8i及以上的版本。

4)LOG_ARCHIVE_DEST_STATE_n:归档日志目录无效或效果,该参数对应的LOG_ARCHIVE_DEST_n 11。如:

LOG_ARCHIVE_DEST_STATE_1 =推迟

LOG_ARCHIVE_DEST_STATE_2 = ENABLE

该参数可以设置在线:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER;

参数只适用于Oracle 10g及以上。

6。 CKPT进程

CKPT(检查点,检查点)的过程发生时,系统的所有数据库文件和控制文件头同步数字进行,以确保数据库的同步。

以下两个参数是CKPT有影响的:

LOG_CHECKPOINT_TIMEOUT:决定产生一个检查点的时间间隔,单位秋季,默认为1800;

LOG_CHECKPOINT_INTERVAL:执行检查点需要填写日志文件的块数,默认是0,这意味着不工作。

变化信息数据库系统与系统改变数表示SCN,SCN检查点编号也称为在日志使用CHECKPOINT_CHANGE#这是数据文件,日志文件,控制文件同步同步基础,同时存储在这三个,在系统中的变化,检查点的数目也将发生变化。

主要原因CKPT产生定时:

1)日志开关

2)达到LOG_CHECKPOINT_TIMEOUT指定的时间间隔

3)达到指定的日志的块LOG_CHECKPOINT_INTERVAL

4)数据库关闭上下

5)DBA强制一个

6)离线表空间时,

7。 RECO进程

恢复,恢复(RECO)分布式数据库系统的过程中,RECO进程自动解决分布式数据库中的交易失败。

8。 LCKn过程

LCKn(锁进程)Oracle并行服务器环境的多个实例的封锁,这个过程可以启动到10。

9。采用dnnn过程

dnnn格式(调度员,调度)过程。对于多线程服务器体系结构。下一个“Oracle连接配置结构”

10。 SNP进程

的SNP作业过程主要用于分布式数据库,数据库快照的自动刷新之间,同时通达DBMS_JOB包计划运行的自动存储过程,SQL,PL / SQL程序。有两个参数用于控制操作流程计划:

1)JOB_QUEUE_PROCESS:用于设置的职位数目

2)JOB_QUEUE_INTERVAL:用于设置工作流程的过程是周期性的唤醒间隔
>

后台进程的跟踪信息,所有的命令来数据库的结构会自动将后台进程跟踪记录,Oracle后台进程跟踪信息自动存储,跟踪文件名称alter_SID。此文件的存储位置由参数背景)DUMP_DEST规定。

TKPROF工具命令可用于跟踪文件的格式,如:

$有TKPROF oralogfile1.log

除了跟踪后台进程,您还可以启用参数SQL_TRACE跟踪用户的声明。参数文件:

TIMED_STATISTICS = TRUE

USER_DUMP_DEST =目录名

MAX_DUMP_FILE_SIZE = 5M

SQL_TRACE = TRUE



SQL> ALTER SESSION SET SQL_TRACE = TRUE SQL跟踪当前会话。

锁等待问题与KILL SESSION

为了保证数据的一致性,系统提供了锁定机制。可参数化的概念,上了锁,“数据库系统概论”一书。要了解当前用户正在等待锁资源:

SQL语句select a.username,a.sid,序列号,b.id1从V $ SESSION,V $ LOCK,其中a.lockwait = B。 KADDR

锁定其他用户,了解用户的流程:
SQL>选择A.USERNAME的,A.SID,A,串行#B.ID1,从V $ SESSION,V $ LOCK B,其中B。 ID1(SELECT DISTINCT E.ID1的V $ SESSION D,V $ LOCKê,WHERE D.LOCKWAIT = E.KADDR)及A.SID = B.SID与B.REQUEST = 0;