(Les01 Architecture III 进程结构)[20180113]

2018-01-15 18:47:36来源:cnblogs.com作者:请点..头像人点击

分享
进程体系结构                -用戶进程:连接到Oracle DB的应用程序或工具        -数据库进程            -服务器进程:连接到Oracle实例,在用户建立会话时启动            -后台进程:在启动Oracle实例时启动        -守护程序/应用程序进程            -网络监听程序            -Grid infrastructe守护程序                专用服务器,对于每个会话,运行数据库应用程序的用户进程都由执行Oracle DB服务器的服务器进程提供服务。        共享服务器,不必为每个连接都提供一个专用服务器进程。分派程序会将多个传入网络会话请求定向到共享服务器进程池。共享服务器进程为所有客户端请求提供服务。         服务器进程            -对通过应用程序发出的SQL语句进行语法分析并运行语句            -从磁盘上的数据文件中将必要的数据块读取到SGA的共享数据库缓冲区中(如果这些数据块目前尚未在SGA中)            -返回结果,使应用程序可以处理信息        后台进程            Oracle DB系统使用的进程统称为“后台进程”,一个Oracle DB实例可以有多个后台进程。            非RAC、非ASM环境中常见后台进程                -DBWn 数据库写进程                -LGWR 日志写进程                -CKPT 检查点进程                -SMON 系统监控进程                -PMON 进程监控进程                -RECO 恢复器进程                -CJQ0 作业队列协调程序                -Jnnn 作业从属进程                -ARCn 归档进程                -QMNn 队列监控进程            更高级的配置(如RAC)会有其他后台进程。有关后台进程的详细信息,请参考V$BGPROCESS视图            有些后台进程是在启动实例时自动创建的,而另外一些则是根据需要创建的。            其他进程结构不是单个数据库独有的,而是可以在同一个服务器上的多个数据库间共享的。Grid Infrastructure进程和网络进程则属于此类。                Liunx和Unix系统上Grid Infrastructure进程包括                    -ohasd:Oracle高可用性服务守护程序,负责启动Oracle Clusterware进程。                    -ocssd:集群同步服务守护程序                    -diskmon:磁盘监视守护程序,负责监视HP Oracle Exadata Storage Server的输入和输出                    -cssdagent:启动、停止和检查CSS守护程序ocssd的状态                    -orarootagent:一种专用的Oracle代理进程,可帮助管理root用户所拥有的资源(如网络)               DBWn数据写进程                参数:db_writer_processes                将数据库缓冲区高速缓存中经过修改的缓冲区(脏数据)写入磁盘有两种方式:                    -在执行其它处理时异步执行                    -推进检查点                数据库写进程(DBWn)将缓冲区的脏数据写入数据文件。大多数系统来说,一个数据库写进程(DBWn)已经足够,但如果系统需要频繁修改数据,也可以配置附加进程(DBW1到DBW9或DBWa到DBWz)来改善写入性能。这些附加进程在单处理器系统中没有作用。                当数据库缓冲区高速缓存中的某个缓冲区数据被修改时,系统会将其标记为脏数据,并将其添加到按SCN顺序排列的检查点队列的头中。因此,该顺序与这些更改的缓冲区的重做条目写入重做日志的顺序一致。当缓冲区高速缓存中的可用缓冲区的数量低于某个内部闸值时,DBWn会将不经常使用的缓冲区写入数据文件,写入顺序是从LRU列表的尾部开始,从而使进程可以在需要缓冲区时替换它们。DBWn也会从检查点队列的尾部写入,以保护检查点向前推进。                SGA中有一个内存结构保存了重做流中位置的重做字节地址(RBA),当实例发送故障时,将从该位置开始恢复。此结构充当指向重做的指针,并且由CKPT进程按照每三秒一次的频率写入控制文件。由于DBWn按照SCN顺序写入脏数据,而重做按照SCN顺序执行,因此每当DBWn从LRU列表写入脏数据时,还会将SGA内存结构中保持的指针前移,以便实例恢复(如果需要)从近似正确的位置开始读取重做,并避免不必要的I/O。这称为"增量检查点"。                LRU算法将更频繁访问的块保存在缓冲区高速缓存中,以尽可能地减少磁盘读取。可对表使用cache选项,以帮助延长块在内存中的保留时间。                DB_WRITER_PROCESSES初始化参数指定了DBWn进程的数量。DBWn进程的最大数量为36。如果用户在启动过程中未指定该进程数,Oracle DB将根据CPU和处理器组的数量来决定如果设置DB_WRITER_PROCESSES。                DBWn数据库写进程触发条件:                    -产生检查点CKPT                    - 脏数据缓冲区达到阀值 默认10%                    -扫描整个data buffer 没有空闲data buffer 中包含脏的和未脏的,优先写脏数据列表再写未脏块                    - timeout 超时,如果DBWn 没事做 会被每三秒唤醒一次去巡检 写不写不一定                    - 表级别的truncate 或 drop 也会触发数据写                    - 修改表空间的 read only                    - 做表空间的offline (离线)                    - 热备份 begin backup 命令                在所有情况下,DBWn均执行批量(多块)写操作以提高效率。多块写操作中写入的块数因操作系统而异。         LGWR日志写进程                将重做日志缓冲区写入磁盘上的重做日志文件中。重做日志缓冲区是循环缓冲区,当LGWR将重做日志缓冲区的重做条目写入重做日志文件时,服务器进程随后可以复制新条目,覆盖重做日志缓冲区中的那些已写入磁盘的条目。LGWR的写入速度通常足够快,可以确保缓冲区中始终有空间可供新条目使用,即使对重做日志的访问量很大时也是如此。LGWR将缓冲区的一个连续部分写入磁盘。                LGWR日志写进程触发条件:                    -用户进程提交事务处理时                    -重做日志缓冲区的三分之一已满时                    -DBWn进程将经过修改的缓冲区写入磁盘(如果需要)之前                    -重做日志缓冲区达到1M的redo条目                    -每隔3秒                                CKPT检查点进程            “检查点”是一种数据结构,它定义了数据库的重做线程中的系统更改号(SCN)。检查点记录在控制文件和每个数据文件头中。它们是恢复操作的关键元素。                CKPT检查点进程在DBWn将高速缓冲区中的脏数据写入数据文件时触发,它会校验写入所有相关的数据文件的头部,还将校验点号码、重做日志序列号、归档日志名称和最低/最高SCN号都会写入控制文件中。            CKPT检查点进程触发条件:                -log_checkpoint_timeoute时间阀值达到                -log_checkpoint_interval*操作系统块大小                -redo log switch & alter system checkpoint,日志切换和显式生成检查点                -热备 begin backup                -表空间offline&read only、shutdown immediate和direct read         SMON系统监控进程            -实例启动时执行恢复。执行前滚,将已经写入重做日志文件但是还没写入到数据文件中的数据(scn号来识别提交的记录),打开数据库,回滚没有提交的事务。            -清除不使用的临时段。回收或合并数据文件相连的空闲区,释放临时段。         PMON进程监控进程            -在用户进程失败时执行进程恢复                -清除数据库缓冲区高速缓存                -释放该用户进程使用的资源            -监控会话,查看是否发生空闲会话超时            -在监听程序中动态注册数据库服务                      RECO(恢复器进程)            -用于分布式数据库配置            -分布式事务处理有问题时自动连接其它涉及的数据库            -自动解决所有有问题的事务            -删除对应有问题的事务的所有行         ARCn(归档进程)            数据库开启归档模式,alter database archivelog;            -在发生日志切换之后,将重做日志文件复制到指定的存储路径            -收集事务处理重做数据,并将该数据传输到备用目标位置             目标位置log_archive_dest_1~31(11g),前1~10主要存放local本地路径(也可以存放Service名),11~30存放Service不能存放local本地路径。            ARCn归档进程最大数量的控制参数:LOG_ARCHIVE_MAX_PROCESSES            https://docs.oracle.com/cd/E11882_01/server.112/e25494/archredo.htm#ADMIN00801                 Jnnn(作业从属进程)&CJQ0 (作业队列协调程序 )            它们可以被看作是一个调度程序服务,用来将作业Oracle数据库实例上的PL/SQL语句或过程。            -Jnnn作业从属进程(或作业队列进程)是动态管理的。                -CJQ0 作业队列协调程序会定期从JOB$表选择并运行Jnnn作业                -CJQ0进程动态生成作业从属进程(J000-J999)                -Jnnn进程由CJQ0进程选择的一个作业来执行。这些进程一次运行一个作业(job)                -该进程完成后,它将轮询更多的作业(job)。如果没有计划执行的作业则进入休眠状态,并从中定期唤醒其他作业。如果进程没有找到新的作业,则在预设的时间间隔后中止。        同时执行最大的Jnnn进程数的参数:job_queue_processes                这些进程与其他Oracle数据库后台进程不同,该进程故障不会导致实例失败。         QMNn(队列监控进程)            QMNn队列监控进程是Oracle Streams Advanced Queuing的可选后台进程,用于监控消息队列。            -最多可以配置10个QMNn队列监控进程。            这些进程与其他Oracle数据库后台进程不同,该进程故障不会导致实例失败。  参考:https://docs.oracle.com/cd/E11882_01/server.112/e40540/process.htm#CNCPT9840

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台