现在的位置: 首页 > 综合 > 正文

OracleDBA+性能优化8日游笔记——第二天(二)之Oracle体系架构详解

2017年09月17日 ⁄ 综合 ⁄ 共 2414字 ⁄ 字号 评论关闭

OracleDBA+性能优化8日游笔记——第二天(二)之Oracle体系架构详解

    "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操作),数据仓库要大排序空间

抱歉!评论已关闭.