ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle进程--后台进程和从属进程

Oracle进程--后台进程和从属进程

原创 Linux操作系统 作者:xw_z 时间:2009-07-11 10:47:33 0 删除 编辑
3.后台进程
  • 通过V$BGPROCESS视图查看所有可能的Oracle后台进程。

    SQL> select paddr,name,description

    from v$bgprocess

    order by paddr desc

  • 中心后台进程

  1. 查看Linux系统上的进程

    ps -aef | grep 'ora_.*_ORCL$'

    注:1.命名约定:进程名都以ora_开头,后面是4个字符,表示进程的具体名字,再后面是_ORCL。(我的ORACLE_SIDORCL

    2.这些进程实际上都是同一个二进制可执行程序,对于每个“程序”,并没有一个单独的可执行文件。这些进程实际上都是oracle(即二进制可执行程序的名字)。它们只是在启动时对自己建立别名,以便更容易的标识各个进程。

  2. PMON:进程监视器(Process Monitor

  • 功能:1)在出现异常中止的连接之后完成清理;2)监视其他的Oracle后台进程,并在必要时(如果可能的话)重启这些后台进程;3)向Oracle TNS监听器注册这个实例。(Oracle使用的公认/默认的监听器端口为1521,如果监听器在另外某个端口启动,则需要设置LOCAL_LISTENER参数显式指定监听器地址。)

  1. SMON:系统监视器(System Monitor

  • SMON进程要完成“系统级”任务。PMON感兴趣的是单个的进程,而SMON以系统级为出发点,是一种数据库“垃圾收集器”。

  • 功能:1)清理临时空间;2)合并空闲空间;3)针对原来不可用的文件恢复活动的事务;4)执行RAC中失败节点的实例恢复;5)清理OBJ$6)收缩回滚段;7)离线回滚段。

  1. RECO:分布式数据库恢复(Distributed Database Recovery

  • 功能:由于两段提交(two-phase commit,2PC)期间的崩溃或连接丢失等原因,有些事务可能会保持准备状态,这个进程就是要恢复这些事务。

  • 如果在 N 个数据库之间采用2PC,其中一个数据库( 通常是客户最初登录的那个 数据库, 但也不一定) 将成为协调器(coordinator)。这个站点会询问其他N-1个站点是否准备提交。实际上,这个站点会转向另外这N-1 个站点,问它们是否准备好提交。这 N-1 个站点都会返回其“准备就绪状态”,报告为YES NO。如果任何一个站点投票(报告)NO,整个事务都要回滚。如果所有站点都投票YES,站点协调器就会广播一条消息,使这N-1个站点真正完成提交(提交得到持久地存储)。如果某个站点投票YES,称其准备好要提交,但是在此之后,并且在得到协调器的指令真正提交之前, 网络失败了,或者出现了另外某个错误,事务就会成为一个可疑的分布式事务(in-doubt distributed transaction) 。此时RECO 会试图联系事务的协调器来发现协调的结果。在此之前,事务会保持未提交状态。当再次到达事务协调器时,RECO 可能会提交事务,也可能将事务回滚。

  • 可疑的分布式事务可能会导致写入器阻塞读取器(Oracle中发生“写阻塞读”的唯一情况)

  1. CKPT:检查点进程(Checkpoint Process

  • 功能:CKPT只是更新数据文件的文件首部,以辅助真正建立检查点的进程(DBWn)。建立检查点主要是DBWn的任务。

  1. DBWn:数据库块写入器(Database Block Writer

  • 功能:负责将脏块写入磁盘,以便在缓存中腾出更多的空间或者推进检查点(将在线重做日志文件中的位置前移,如果出现失败,Oracle会从这个位置开始读取来恢复实例)。

  • 可以配置多个DBWn。最好的情况下,DBWn使用异步I/O将块写至磁盘。( 采用异步 I/O,DBWn 会收集一批要写的块,并把它们交给操作系统。DBWn 并不等待操作系统真正将块写出;而是立即返回,并收集下一批要写的块。当操作系统完成写操作时,它会异步地通知 DBWn 写操作已经完成。 )

  • DBWn会做大量的分散写(scattered write),而LGWR则是向重做日志完成大量的顺序写(sequential write)。分散写比顺序写慢多了,通过在 SGA 中缓存脏块,并由 LGWR 进程完成大规模顺序写(可能重建这些脏缓冲区),这样可以提升性能。尽管从技术上讲这样会使Oracle 执行更多不必要的I/O(写日志以及写数据文件),但整体性能还是会提高。从理论上讲,如果提交期间 Oracle 已经将已修改的块物理地写出到磁盘,就可以跳过写在线重做日志文件。但在实际中并不是这样:LGWR 还是会把每个事务的重做信息写至在线重做日志, DBWn 则在后台将数据库块刷新输出到磁盘。

  1. LGWR:日志写入器(Log Writer

  • 功能:负责将SGA中重做日志缓冲区的内容刷新输出到磁盘。

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

  1. ARCn:归档进程(Archive Process

  • 功能:当LGWR将在在线重做日志文件填满时,ARCn就将其复制到另一个位置。此后这些归档的重做日志文件可以用于完成介质恢复。在线重做日志用于在出现电源故障(实例终止)时“修正”数据文件,而归档重做日志文件则不同,它是在出现硬盘故障时用于“修正”数据文件。

  • ARCn通常将在线重做日志文件复制到至少两个位置(冗余正是不丢失数据的关键所在!)这些位置可能是本地机器的磁盘,或在另一台机器上,以应付灾难性的失败。

  • 工具后台进程

  1. CJQ0Jnnn进程:作业队列

  • 相关定义:1)作业:一组PL/SQL代码,用于完成特定的功能;2)作业队列:oracle服务器中用于存储作业的一种机制(或逻辑构件);3Jnnn:执行特定作业的作业进程,nnn是作业进程号(最多可以有1000个作业);4CJQ0:作业进程调度器,它本身也是作业进程,作用是用于调度作业进程;DBMS_JOB:该包内的procedures用于对作业进行管理。

  • 调度原理:用户通过调用DBMS_JOB包中的procedures向作业队列中增加作业,并设定作业的调度执行时间或周期。CJQ0进程始终监视检查作业队列中是否有作业到了调度时间点,若发现,则指派一个作业执行进程Jnnn来执行该作业。

  • 相关参数:JOB_QUEUE_PROCESSES:若设为0,则关闭作业调度功能,作业队列中的作业将不会自动执行;若设为nn>0),启动调度功能,n指作业进程的数量(注:如果配置了最多1 000Jnnn进程,并不会看到真的有1 000个进程随数据库启动。相反,开始时只会启动一个进程,即作业队列协调器(CJQ0),它在作业队列表中看到需要运行的作业时,会启动Jnnn进程。如果Jnnn进程完成其工作,并发现没有要处理的新作业,此时Jnnn进程就会退出,也就是说,会消失。)

  1. QMNCQnnn:高级队列

  • QMNC进程对于AQAdvanced Queue)来说就相当于CJQ0进程之于作业表。QMNC进程会监视高级队列,并警告从对列中删除等待消息的“出队进程”:已经有一个消息变为可用。QMNCQnnn还要负责队列传播,即将在一个数据库中入队的消息移到另一个数据库队列中。

  • Qnnn进程对于QMNC进程就相当于Jnnn进程与CJQ0进程的关系。

  • 参数AQ_TM_PROCESSES可以指定最多创建10个这样的进程(分别为Q000,...,Q009)以及一个QMNC进程。不同于Jnnn进程,Qnnn进程是持久的,参数设为10,则可以看到10Qnnn进程和一个QMNC进程。

  1. EMMn:事件监视器进程(Event Monitor Process

  • EMNn进程是AQ体系结构的一部分,用于通知对某些消息感兴趣的队列订购者。

  1. MMAN:内存管理器(Memory Manager

  • 自动设置SGA大小特性,用于协调共享内存中各组件(默认缓冲区池、共享池、Java池和大池)的大小设置和大小调整。

  1. MMONMMNLMnnn:可管理性监视器(Manageability Monitor

  • 用于填充自动工作负载存储库(Automatic Workload Repository,AWR)。 MMON:用于“自动检测”数据库性能问题,并实现新增的自动调整特性,会请求从属进程代表它完成工作;Mnnn:类似于作业队列的JnnnQnnn进程,是临时性的。

  1. CTWR:修改跟踪进程(Change Tracking Process

  • 负责维护新的修改跟踪文件。

  1. RVWR:恢复写入器(Recovery Writer

  • 负责维护闪回恢复区的“前”映像,要与FLASHBACK DATABASE命令一起使用。

4.从属进程
  • I/O从属进程
  1. 功能:为不支持异步I/O的系统或设备模拟异步I/ODBWnLGWR可以利用I/O从属进程模拟异步I/ORMAN写磁带时也可能利用I/O从属进程。

  2. 相关参数:1BACKUP_TAPE_IO_SLAVES:指定RMAN是否使用I/O从属进程将数据备份、复制或恢复到磁带上。若设为TRUE,则使用一个I/O从属进程从磁带设备读写,若为FALSE(默认值),则不用I/O从属进程,此时完成备份的专用服务器进程会直接访问磁带设备。2DBWR_IO_SLAVES:指定DBW0进程所用I/O从属进程的个数。若设为0,则不使用I/O从属进程,否则使用I/O从属进程,LGWRARCH最多允许4I/O从属进程。(DBWR I/O从属进程的名字是I1nnLGWR I/O从属进程的名字是I2nn,nn是一个数)。

  • 并行查询从属进程

  1. 使用并行查询时,会看到名为Pnnn的进程,这些就是并行查询从属进程。处理一条并行查询时,服务器进程则称为并行查询协调器(parallel query coordinator)。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17014649/viewspace-608882/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 内存结构
请登录后发表评论 登录
全部评论

注册时间:2009-05-22

  • 博文量
    28
  • 访问量
    38363