"Oracle体系架构"为前4天的OracleDBA课程中最重要的部分,因此特别传上图片供大家理解,不过文字的部分依然是我当初的原版笔记,所以尽管有图,但能从我笔记中理解多少靠各位自己了.
-----------------------------------------------------------------------------------------------------------------------------------------
二.Oracle体系架构
架构图:
Oracle由Instance(实例)和database(一堆文件)构成。在oracle的所有资料里,database指的是文件。
Instance(实例)+database(文件)= DB SERVER(由Instance(内存,进程),database文件构成)
Database中,黄框里为必要文件
1. 数据文件
用户数据 用户表 DML
数据字典数据(系统数据) 数据字典表 随数据库自动生成,不能对其直接进行修改 修改其中的数据用DDL,任何一条语句都要用到数据字典(语句执行步骤,数据解析,数据返回,取操作,解析获取对象信息和权限信息都需要数据字典)
特点:
大小可变,
表空间就是一个或多个数据文件的逻辑存储表现,
一个数据库最少需要一个表空间(system,所有数据字典表被创建在系统表空间),建立多个表空间为了把数据分类存放
2. 重做日志文件(redo logfiles):
按时间顺序存放数据库中所发生的所有改变(只要数据块发生变化就叫改变,表数据块,索引数据块,回滚数据块等)
谁,什么时间,在哪个块的第几行的第几列。
通过日志恢复,提高数据库的可恢复性
Oracle做物理级恢复的原理就是恢复日志
用日志恢复比语句恢复要块
特点:
大小不变,可恢复性,顺序循环,一个数据库至少2组日志,每组至少一个组员文件,如果多个组员文件则为文件级镜像(日志复用)
3. 控制文件(Control files)
很小,几十M算比较大的,但很重要
内容多(但每一个都很小)以下是几个主要内容
数据库的基本信息 名字/ID
数据库的结构信息 数据文件,日志文件的名称,位置,大小,状态
最后一次同步的SCN信息
SCN:系统改变号,一改变就递增,每个SCN对应一个改变,SCN描述数据库的运行
同步:先将当前SCN之前的所有脏数据写入磁盘中,之后把SCN头写入磁盘,突发原因,丢数据丢同步之后的日志,数据库正常关闭同步一定会发生,非正常关闭,同步不发生,从日志中找最后一次同步的SCN之后的日志恢复
日志切换立刻发生同步,该日志对应的脏数据没完成同步之前不允许覆盖
同步判断,实例恢复
当前的日志序列号
日志切换递增
每个序列号代表唯一的日志内容
日志恢复到当前的日志序列号恢复(最后一次同步的SCN信息为起点,此为终点)
介质恢复的终点
介质恢复(介质文件头的SCN为起点,当前日志序列号为终点)
归档信息
RMAN备份信息(放在可变大小,之上放在固定大小),
4. 初始化参数文件(parameter file)(非必要文件)
定制的参数文件,决定实例的属性
无参数文件前提,用RMAN可以启动实例(用默认参数启动实例,用来恢复参数文件(启动实例)和控制文件(启动数据库)),SQLPLUS不行
5. 口令文件
存放:特权身份的口令
作用:特权身份验证
特权身份:超越系统身份之外的身份(建立删除启动关闭数据库)
普通身份:nomal
特权身份:sysoper,sysdba,sysasm(11G)
拥有以上所有身份的用户为sys
口令文件认证,
操作系统认证(在服务器本地做连接,以在那个组中的用户做连接ora_dba组)
想保护数据库,先保护服务器
6. 归档文件
存放:日志历史
作用:为介质恢复使用
个数:如果一开始就是归档模式(数量为当前日志序列号数-1)
大小:小于等于重做日志文件大小
命名:名称中必须包含日志对应的序列号(不用SCN命名因不完全恢复影响),如果是RAC,名称中还要包含日志所对应的线程
离线的,对数据库本身不影响
Instance:
1. SGA
公用内存区:主要有6个
必选:共享池,buffer区,redo Log buffer区
可选:java池(包括JVM则选择),large池(RMAN备份与恢复需要用到,并行操作的时候会用到),流池
共享池(SHARE POOL):
Library cache:
暂存最近最常使用的SQL语句文本,分析代码,执行计划
作用:让代码共享,减少解析(解析消耗CPU)
Data dictionary cache:
最近最常使用的数据字典信息
作用:减I/O(省略去系统表空间找数据字典的I/O)加快解析效率
数据缓存区:
暂存最近最常使用的数据块
作用加快执行效率
重做日志缓存区:
先进先出
暂存日志记录
作用:
很快写入内存,很快改数据(系统先记日志再改数据)
插入数据的修改次数(表+索引)*2(因为回滚段也被插入)
加快操作效率
2. 进程
必要:PMON,SMON,DBWR, LGWR,CKPT
非必要:ARCn等
PMON:进程监视进程
User process:用户进程
Server process:响应客户端请求的服务器进程
PMON监视上面2者的会话(server process)
处理连接故障异常的(突发事件回滚)
SMON:系统监视进程
系统异常崩溃(或断电)
检测同步
实例恢复
前滚应用日志,打开数据库,回滚没完成事务
先回滚需要的,按需回滚,之后遇到再回滚
DBWR:数据库写进程
LGWR:日志写进程
CKPT: 做同步
日志切换时候
数据库正常关闭的时候
等
ARCn:归档进程
3. PGA:私有的内存区
被每一个session私有
存会话信息
堆栈空间
游标状态
排序空间(如果排序空间小于排序数据,通过读写临时表空间来排序:直接路径读和直接路径写,频繁的I/O操作),数据仓库要大排序空间