zoukankan      html  css  js  c++  java
  • SMON进程、PMON进程、LGWR/ARCH

    SMON 进程:system monitor instance monitor 系统监控、实例监控进程

       说明及作用:在实例关闭时,会清理临时段,整理空闲空间free space;

       实例非正常关闭后,启动实例时,做instance recovery ;

    SMON如何判断是否需要实例恢复: --在数据库mount状态,可以通过last_change#是否未Null;

    select name,checkpoint_change#,last_change# from v$datafile;

    --数据库在一致性关库的时候会触发ckpt,完全检查点,控制文件会记录相应的值;

    前滚,通过redo日志查询到离数据库最近的一次检查点SCN为起始点,通过应用redo往前滚走到redo日志的最后一刻,重演操作,也就是将数据库的脏块还原,随后应用Undo,回滚事物的方式将未提交的事物回滚,确保事务一致性后,数据库open;

    PMON:SMON是实例级别的管理,那么 进程谁管理呢?

    PMON:  process cleanup 进程清理

       说明:用户连接数据库,会产生一个会话分配一个server process提供服务,以及分配一个Uga,正常情况下,会话退出,释放资源。但是如果异常退出呢?比如客户端死机,server process 不会正常退出,持有的资源还在不断消耗,PMON进程会监控进程,一旦发现后,释放资源,回滚事物:锁、内存等消耗释放

                  监控进程,将Instance注册到listener,Oracle自动的,如果数据库多个实例,然而监听程序就一个,需要将实例注册到监听中,让其识别;如果配置的是动态监听,数据库启动,需要等待Pmon进程去注册,可能需要等待一段时间,可以通过命令手工注册:alter system register;

    LGWR: 日志写进程:

       说明:从log buffer 写入redo log files文件中;

       在单实例环境下,只有一个Log buffer,因此设置多个lgwn进程没有意义,日志是串行写进程,顺序写;

       12c可以有00-99个lgwr进程;

    触发条件:1.commit提交,commit操作只涉及到了LGWR进程,提示commit成功,只表明log buffer 写入了log file文件且在redo undo中事物标记commit提交标识;

                      2. 每3s

                      3、1/3满:存储的数据,在Log buffer中存储三分之一就触发条件;

                      4、 1M累计

                      5、 DBWR写脏块前  写入redo log file 文件中,ORACLE 一定要记住,日志先行’

    ARCN   归档进程,作为日志文件的补充;

           Oracle如何保证恢复的完全恢复,就是应用redo 日志来解决的恢复问题;

         Oracle的日志文件有个特点: 循环覆盖写,最少一个单实例数据库所需的redo file文件最少两组,A写满,切换B,如果B写满,在循环使用A, 如果是非归档模式下,则覆盖文件;

          在生成环境下,为了确保数据0丢失,因此保留日志文件是非常有必要的,因此会开启归档,开启归档后,在A切换B之后,立刻马上,A写满的日志文件会在ARCN的进程引导下按照归档文件命名规则,生成一个归档文件;

    SQL> archive log list
    Database log mode              No Archive Mode
    Automatic archival             Disabled
    Archive destination            /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch

    SQL> startup force mount;        --设置归档,需要数据库一致性关闭数据,并启动到mount状态

    ORA-00265: instance recovery required, cannot set ARCHIVELOG mode

    SQL>alter database open;

    SQL> shutdown immediate;

    SQL> startup mount;

    SQL> alter database archivelog;

    SQL> archive log list; Database log mode              Archive Mode

    SQL> alter database open;

    --开启归档后,归档进程的数量

    SQL> show parameter arch

    log_archive_max_processes            integer     4  --归档进程数量

    --查询当前状态:

    select dest_id,dest_name,status,binding,name_space,destination,log_sequence from v$archive_dest where status='VALID';

         1 LOG_ARCHIVE_DEST_1                VALID       OPTIONAL  SYSTEM   /u01/guidang/   0

        2 LOG_ARCHIVE_DEST_2                VALID       OPTIONAL  SYSTEM /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/                  0

    ---参数,标识数据库,归档文件命名规则

    log_archive_format                   string      %t_%s_%r.dbf

    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch

    SQL> show parameter log_arch

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    log_archive_config                   string

    log_archive_dest                     string

    log_archive_dest_1                   string

    log_archive_dest_2                   string

    SQL> show parameter db_recovery

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    db_recovery_file_dest                string

    db_recovery_file_dest_size           big integer 0

    --更改归档路径: 

    如下,设置了两个归档参数,两个归档互为备份,Location本地,server远程

    mkdir -p /xxx目录,权限需要注意,chown -R oracle.oinstall
    alter system set log_archive_dest_1="location=/u01/guidang/";

    SQL> alter system set log_archive_dest_2="location=/picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/";

  • 相关阅读:
    Jenkins系列之二——centos 6.9 + JenKins 安装
    查看linux系统是运行在物理机还是虚拟机方法
    Java 的不可变类 (IMMUTABLE CLASS) 和 可变类 (MUTABLE CLASS)
    Java中的mutable和immutable对象实例讲解
    理解Java中的引用传递和值传递
    深入理解Java中的Clone与深拷贝和浅拷贝
    java Clone使用方法详解
    Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
    赏美-第[001]期-20190504
    赏美-第[000]期
  • 原文地址:https://www.cnblogs.com/lvcha001/p/7802840.html
Copyright © 2011-2022 走看看