zoukankan      html  css  js  c++  java
  • oracle启动实例分析

    1、nomout阶段,该阶段启动的前提是有参数文件,若没有参数文件,系统无法启动,在该过程中,系统分配内存、开启后台进程,同时更新alter日志文件

    实例nomount之前的状态:

    --无实例进程
    [oracle@secdb1 admin]$ echo $ORACLE_SID
    PROD
    [oracle@secdb1 admin]$ ps -ef|grep PROD
    oracle   14890  6310  0 21:12 pts/1    00:00:00 grep PROD
    --alter日志信息
    [oracle@secdb1 bdump]$ ls -lrt
    total 48
    -rw-r----- 1 oracle oinstall  1113 Mar  4 23:15 prod_lgwr_7319.trc
    -rw-r----- 1 oracle oinstall   779 Mar  5 19:42 prod_mmnl_7329.trc
    -rw-r--r-- 1 oracle oinstall 40910 Mar  5 21:08 alert_PROD.log


    此时启动实例到nomount状态
    [oracle@secdb1 admin]$ sqlplus / as sysdba
    SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 5 21:15:50 2014
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Connected to an idle instance.
    SQL> startup nomount
    ORACLE instance started.
    Total System Global Area  314572800 bytes
    Fixed Size                  1219184 bytes
    Variable Size             100664720 bytes
    Database Buffers          209715200 bytes
    Redo Buffers                2973696 bytes
    SQL> 

    此时查看进程和日志信息
    [oracle@secdb1 bdump]$ ls -lrt
    total 52
    -rw-r----- 1 oracle oinstall  1113 Mar  4 23:15 prod_lgwr_7319.trc
    -rw-r----- 1 oracle oinstall   779 Mar  5 19:42 prod_mmnl_7329.trc
    -rw-r--r-- 1 oracle oinstall 42513 Mar  5 21:15 alert_PROD.log  ----------------日志文件已经更新

    [oracle@secdb1 bdump]$ ps -ef|grep PROD  ----------------------------系统中出现后台进程
    oracle   14946     1  0 21:15 ?        00:00:00 ora_pmon_PROD
    oracle   14948     1  0 21:15 ?        00:00:00 ora_psp0_PROD
    oracle   14950     1  0 21:15 ?        00:00:00 ora_mman_PROD
    oracle   14952     1  0 21:15 ?        00:00:00 ora_dbw0_PROD
    oracle   14954     1  0 21:15 ?        00:00:00 ora_lgwr_PROD
    oracle   14956     1  0 21:15 ?        00:00:00 ora_ckpt_PROD
    oracle   14958     1  0 21:15 ?        00:00:00 ora_smon_PROD
    oracle   14960     1  0 21:15 ?        00:00:00 ora_reco_PROD
    oracle   14962     1  0 21:15 ?        00:00:00 ora_mmon_PROD
    oracle   14964     1  0 21:15 ?        00:00:00 ora_mmnl_PROD
    oracle   14965 14942  0 21:15 ?        00:00:00 oraclePROD (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    oracle   14988  5989  0 21:17 pts/3    00:00:00 grep PROD
     
    如果在$ORACLE_HOME/dbs目录下无参数文件,启动实例是现象如下:
    [oracle@secdb1 dbs]$ sqlplus / as sysdba
    SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 5 21:21:19 2014
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Connected to an idle instance.
    SQL> startup nomount
    ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/initPROD.ora'
    SQL> quit
    参数寻找的优先级 spfileSID.ora----initSID.ora

    在该阶段,可以进行数据库的创建、控制文件的创建

    2、mount,在该阶段,启动条件是需要有控制文件,如果控制文件丢失或者损坏,启动将会报错。此时系统会打开控制文件、检查数据文件、日志文件的名称和位置,
    但此时不检查文件到底是否存在不存在

    mount之前:
    SQL> select * from v$controlfile;
    no rows selected

    SQL> select * from v$datafile;
    select * from v$datafile
                  *
    ERROR at line 1:
    ORA-01507: database not mounted
     
    mount之后

    SQL> alter database mount;
    Database altered.
    SQL> select name from v$controlfile;
    NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/PROD/disk1/control01.ctl
    /u01/app/oracle/oradata/PROD/disk2/control02.ctl

    SQL> select file#,name from v$datafile;


         FILE#  name
    --------------------------------------------------------------------------------
             1  /u01/app/oracle/oradata/PROD/disk1/system01.dbf
             2  /u01/app/oracle/oradata/PROD/disk1/undotbs01.dbf
             3 /u01/app/oracle/oradata/PROD/disk1/sysaux01.dbf
    在该阶段,可以进行数据库的完全恢复、修改数据库的归档模式、移动和重命令数据文件
    SQL> archive log list  ---查看数据库归档模式
    Database log mode              No Archive Mode
    Automatic archival             Disabled
    Archive destination            /u01/app/oracle/product/10.2.0/db_1/dbs/arch
    Oldest online log sequence     3
    Current log sequence           5

    SQL> alter database archivelog; ---修改成归档模式
    SQL> alter database noarchivelog;---修改成非归档模式


    如果控制文件丢失,系统报错,现象如下:

    SQL> startup mount
    ORACLE instance started.
    Total System Global Area  314572800 bytes
    Fixed Size                  1219184 bytes
    Variable Size             100664720 bytes
    Database Buffers          209715200 bytes
    Redo Buffers                2973696 bytes
    ORA-00205: error in identifying control file, check alert log for more info

     

    3、open阶段,该阶段主要是打开数据文件、日志文件,在打开的过程中对数据文件和日志文件进行一致性检查,如果不一致,则SMON进程继续实例恢复,如果文件丢失,打开失败。
    SQL> alter database open;
    Database altered.

    --如何数据文件丢下,打开失败
    SQL> startup mount;
    ORACLE instance started.
    Total System Global Area  314572800 bytes
    Fixed Size                  1219184 bytes
    Variable Size              79693200 bytes
    Database Buffers          230686720 bytes
    Redo Buffers                2973696 bytes
    Database mounted.
    SQL> alter database open;
    alter database open
    *
    ERROR at line 1:
    ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
    ORA-01110: data file 1: '/u01/app/oracle/oradata/PROD/disk1/system01.dbf'



    4、小结
        
     启动时分成三个步骤,1、nomount阶段,该阶段是实例启动,根据参数文件进行系统分配内存,启动后台进程。mount阶段,根据控制文件来进行数据文件和日志文件的名称和位置检查,把实例和数据库连接起来。open阶段,就是数据库打开阶段,打开是就需要检查文件是否正常,有没有发生文件丢失或者不一致的情况,丢失则报错,不一致则进行实例恢复。

    jiangkch

    20140305

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

  • 相关阅读:
    使用littleTools简化docker/kubectl的命令
    (上)python3 selenium3 从框架实现学习selenium让你事半功倍
    一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
    VxLAN协议详解
    深入理解大数据之——事务及其ACID特性
    深入理解大数据架构之——Lambda架构
    JQCloud: 一个前端生成美化标签云的简单JQuery插件
    详解Java中的final关键字
    OpenDaylight虚拟租户网络(VTN)详解及开发环境搭建
    使用Pelican在Github(国外线路访问)和Coding(国内线路访问)同步托管博客
  • 原文地址:https://www.cnblogs.com/maruidong/p/6396087.html
Copyright © 2011-2022 走看看