oracle 数据库概述

来源:互联网 发布:动态规划矩阵连乘问题 编辑:程序博客网 时间:2024/06/05 10:32

1 Oracle 数据库服务器由两部分组成:Oracle实例(一个或多个)和Oracle数据库(一个)。

2 Oracle数据库实例由一块内存区域和几个后台进程构成,启动一个Oracle实例就会分配一块儿内存区域,并启动几个后台进程。

3 Oracle连接过程

3.1 用户进程与数据库的监听器建立连接,监听器创建服务进程来处理用户连接(专有服务器)。

3.2 一个连接是一个通信路径,一端是用户进程,另一端是数据库实例。这个通信路径可能是进程间通信(用户进程与数据库在同一个机器上),也可能是网络通信(用户进程与数据库不在同一个机器上)。

3.3 一个会话代表的是用户登录到数据库实例的状态,一个用户可以与数据库建立多个会话(并存)。

4 内存结构,Oracle使用初始化参数来创建和管理内存结构

4.1 SGA是所有服务进程和后台进程共享的内存区域

4.1.1 Database buffer cache

缓存从数据库文件取出的数据块,DBWn负责将缓存写入数据文件

4.1.2 Redo log buffer

缓存要写到物理文件前的恢复信息,LGWR负责将缓存写入日志文件

4.1.3 Shared pool

缓存多个session可以共享的各种结构信息,

library cache缓存sql语句或plsql的存储过程、包

data dictionary cache缓存数据字典信息

result cache缓存sql执行结果,plsql函数执行结果

Control structure 本质上就是锁结构

4.1.4 Large pool

特定操作的可选区域,比如备份和恢复, IO服务进程

4.1.5 Java pool

Session专门的java代码或数据,在jvm中

4.1.6 Streams pool

被oracle Stream用来存储信息关于捕获和应用进程

4.2 PGA是服务进程或者后台进程私有的内存区域

Session信息,Cursor信息,SQL执行工作区:sort area、hash join area,bitmap merge area,bitmap create area

5 DML语句执行过程

5.1 服务进程receive dml 语句,检查library cache,如果发现类似语句,服务进程检查用户对请求数据的访问权限,已经存在的sql area用来执行这个sql,如果没有找到类似的语句,就会分配一个新的sql area,来解析和执行语句。

5.2 如果数据和回滚块不在buffer cache中,服务进程将从数据文件中读取到buffer cache中,服务进程锁定将要修改的row。

5.3 服务进程记录更改信息到buffer cache和undo,在被写到buffer cache和undo之前,会先写到redo log buffer,被称为 先记日志。

5.4 rollback buffer存储的是数据修改前的值,data buffer存储的是数据修改后的值。

5.5 用户进程获得结果反馈。

5.6 任何在buffer cache被修改的块,被称为dirty buffer

5.7 用户进程执行commit

5.8 服务进程放置commit 和 scn到 redo log buffer,数据库内部通过scn号实现一致性检查。

5.9 后台的LGWR将所有的redo log buffer和commit 写到redo log files,此刻,oracle可以保证数据修改不会丢失即使实例失败。

5.10 服务进程提供结果反馈给用户进程关于事务的完成。

5.11 DBWn定时将实际修改更新到磁盘,通过内部的定时机制。

6 进程结构

DBWn 异步写被修改的buffer到磁盘

LGWR 将redo buffer信息写到redo log file

CKPT 记录检查点信息到控制文件和数据文件头

SMON 实例启动时执行恢复,清除未使用的临时段空间

PMON 当一个用户进程失败时,执行进程恢复

RCBG 维护shared pool中的结果缓存

CJQ0 运行用户的job

ARCn 当发生log switch时,拷贝redo log 到指定的存储设备

QMNn监控Oracle流信息队列

MMON 执行可管理性相关的后台任务

MMAN 用来自动管理PGA和SGA的内存

7 存储结构

control files:物理数据库的结构信息

data files:包含用户和数据库的数据信息,同时也有元数据和数据字典信息

online redo log files:实例恢复

parameter file:定义实例是如何配置的当实例启动的时候

password file:允许sysdba,sysoper,sysasm远程连接到数据库执行管理任务。

backup file:数据库恢复

archived redo log file:恢复数据文件

trace files:每个服务进程或后台进程可以写到相关的trace files。

alert log file:特殊的trace files记录error和消息。




原创粉丝点击