zoukankan      html  css  js  c++  java
  • Oracle数据库体系结构、启动过程、关闭过程

    一、Oracle数据库体系结构
    体系结构由下面组件组成:
    1、Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区)
    (1)数据库实例(Instance)
    数据库实例由一些内存区和后台进程组成。
    (a)内存区:共享池、数据库高速缓存、重做日志缓存、流池以及其他可选内存区
    (b)后台进程:系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT)、其他进程
    (2)数据库文件
    数据库文件由数据文件、控制文件、重做日志文件组成。
    (a)数据文件:数据库中的实际数据
    (b)控制文件:包含维护数据库和验证数据库完整性的信息,是二进制文件。
    (c)重做日志文件:包含数据库发生变化的记录,在发生故障时用于数据恢复。
    2、服务器进程
    3、用户进程
    4、参数文件
    也称为数据库初始化文件,定义数据库实例的特性,包含为SGA中内存结构分配空间的参数。
    分为pfile文件和spfile文件。
    (a)pfile文件:文件名默认为init.ora,属于静态文件,可以使用文本编辑器编辑,修改后需要重启实例才生效。
    (b)spfile文件:文件名默认为spfile<ORACLE_SID>.ora,属于二进制的动态文件,只能通过Oracle指令修改,修改后直接生效。
    Oracle 11g默认使用spfile启动,也可以使用pfile文件启动数据库,如:startup pfile='d:init_123.ora'
    5、密码文件
    授予用户启动和关闭数据库实例。
    6、归档日志文件


    二、数据库启动过程
    启动过程涉及到三个状态:nomount、mount、open
    1、nomount状态
    只打开数据库实例。
    使用startup nomount启动。

    C:UsersLC>sqlplus /nolog
    SQL> connect /as sysdba
    已连接。
    SQL> startup nomount
    ORACLE 例程已经启动。
    Total System Global Area 1686925312 bytes
    Fixed Size 2176368 bytes
    Variable Size 989858448 bytes
    Database Buffers 687865856 bytes
    Redo Buffers 7024640 bytes
    SQL> select * from v$controlfile;
    未选定行
    SQL> show parameter control_files;
    NAME TYPE VALUE
    ---------------------------------------------------------------------------------------------------------------
    control_files string D:APPLCORADATATESTDBCONTROL01.CTL, D:APPLCFLASH_RECOVERY_AREATESTDBCONTROL02.CTL


    说明:
    select * from v$controlfile;用于测试此时控制文件是否已打开。
    show parameter control_files;获取控制文件的位置。

    2、mount状态
    根据参数文件中控制文件的位置找到并打开控制文件,读取控制文件中的各种参数信息,如数据文件和日志文件的位置等。
    启动到mount状态有二种方式,一是使用指令startup mount直接启动到mount状态,二是在数据库是nomount状态时使用alter指令切换到mount状态。

    SQL> alter database mount;
    数据库已更改。

    此时使用select * from v$controlfile;能查询到控制文件的信息。
    但是此时数据库并没有打开,数据文件无法读取,例如查询表会出错。

    3、open状态
    将打开数据文件并进行一系列的检查工作,这些检查工作用于数据恢复;
    启动到open状态有二种方式,一是使用指令startup(默认是open)或startup open直接启动到open状态,二是在数据库是nomount或mount状态时使用alter指令切换到open状态。在启动数据库时,可以执行startup直接启动数据库到open状态,这个过程仍然要经历上面三个状态。

    SQL> alter database open;
    数据库已更改。


    三、数据库关闭过程
    关闭过程和启动相反,经历了close、dismount、shutdown。
    可以分步关闭,也可以直接关闭。
    分步关闭:
    1、close数据库
    关闭数据文件、日志文件等。

    SQL> alter database close;
    数据库已更改。

    2、dismount数据库
    关闭控制文件。

    SQL> alter database dismount;
    数据库已更改。

    3、shutdown数据库
    关闭实例。
    shutdown有4个参数:shutdown normal(默认)、shutdown immediate(推荐)、shutdown transactional、shutdown abort

    SQL> shutdown
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。

    另外,有一次测试中,shutdown immediate以后再startup 报错:监听程序当前无法识别连接描述符中请求的服务
    关闭当前sqlplus窗口,在开始运行-> sqlplus / as sysdba -> startup

  • 相关阅读:
    MapGuide 资源
    mac 安装brew
    mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
    一文深入讲解redis和couchbase的区别
    mac 显示 sh3.2# 的
    DBA整理的万字详解MySQL性能优化,值得收藏!
    redis和couchbase的比较
    && 运算符的使用
    freeotp 安装及使用过程
    Couchbase vs Redis,究竟哪个更胜一筹?
  • 原文地址:https://www.cnblogs.com/gdjlc/p/6161085.html
Copyright © 2011-2022 走看看