310 likes | 651 Vues
ORACLE 体系结构. Oracle 的主要组成部分. Oracle 的主要组成部分. Oracle server 由 Oracle instance 和 Oracle database 组成。 Oracle instance 由后台进程和内存结构构成。 Oracle database 由多个操作系统文件(数据库文件)构成。 其它组成部分. Oracle Server. Oracle Instance. 用于存取 Oracle database 一次只能打开一个数据库. 建立连接与创建会话. 连接与会话. 连接( connection )
E N D
Oracle的主要组成部分 • Oracle server • 由Oracle instance和Oracle database组成。 • Oracle instance • 由后台进程和内存结构构成。 • Oracle database • 由多个操作系统文件(数据库文件)构成。 • 其它组成部分
Oracle Instance • 用于存取Oracle database • 一次只能打开一个数据库
连接与会话 • 连接(connection) • 连接是用户进程与服务器进程之间的一条通信路径。 • 会话(Session) • 会话是用户到Oracle Server的一次特定连接。
Oracle 的内存结构 • Oracle的内存结构由以下两个部分组成: • System Global Area(SGA):Oracle Instance的 基本组成部分,在实例启动时分配。 • Program Global Area (PGA) :当服务器进程启动时分配
System Global Area(SGA) • SGA由以下内存结构构成 • Shared Pool • Database Buffer Cache • Redo Log Buffer • 其它结构 • 还可以选择为SGA配置以下两个可选的内存结构: • Large Pool • Java Pool • SHOW SGA;
Shared Pool • Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义。 • 它主要由两个内存结构构成: • Library cache • Data dictionary cache • 修改共享池的大小 • ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Library Cache • Libray Cache缓存最近被执行的SQL和PL/SQL的相关信息。 • 实现常用语句的共享 • 使用LRU算法进行管理 • 由以下两个结构构成: • Shared SQL area • Shared PL/SQL area
Data Dictionary Cache • Data dictionary cache缓存最近被使用的数据库定义。 • 它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。 • 在语法分析阶段,Server Process访问数据字典中的信息以解析对象名和对存取操作进行验证。 • 将数据字典信息缓存在内存中有助于缩短响应时间。
Database Buffer Cache • Database Buffer Cache用于缓存从数据文件中检索出来的数据块。 • 可以大大提高查询和更新数据的性能。 • 使用LRU算法进行管理
Redo Log Buffer Cache • Redo Log Buffer Cache缓存对于数据块的所有修改。 • 主要用于恢复 • 其中的每一项修改记录都被称为redo 条目。 • 利用Redo条目的信息可以重做修改。
Large Pool • Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。 • 可以减轻共享池的负担 • 可以为备份、恢复等操作来使用 • 不使用LRU算法来管理 • 指定Large Pool的大小 • ALTER SYSTEM SET LARGE_POOL_SIZE=64M
Java Pool • Java Pool为Java命令的语法分析提供服务 • 在安装和使用Java的情况下使用 • 其大小由JAVA_POOL_SIZE指定
Program Global Area(PGA) • PGA是为每个连接到Oracle database的用户进程保留的内存。 PGA Didicated Server Shared Server Server Process Session informationsort area, cursor information Stack space Stack space sort area, cursor information User Process SGA SGA Session information Shared SQL Area Shared SQL Area
Program Global Area(PGA) • PGA存储一个服务器进程或后台进程的数据和控制信息,并且只能由一个进程使用。它在进程创建时分配,在进程结束时被收回。
进程 • Oracle拥有以下类型的进程: • User Process • Server Process • Background Process
用户进程(User Process) • 是一个需要与Oracle Server交互的程序 • 运行于客户端 • 当用户运行某个工具或应用程序(如SQL*Plus)时创建,当用户退出上述程序时结束 • 向Oracle Server发出调用,但它并不与Oracle Server直接交互,而是通过Server Process与Oracle Server进行交互。
Server Process • 是一个直接与Oracle Server交互的程序。 • 与Oracle Server运行于同一台机器上 • 使用PGA • 执行User Process发出的调用,并向User Process返回结果状态和结果信息。
Background Process • 后台进程用于维护物理存储与内存中的数据之间的关系。主要包括: • DBWn • PMON • CKPT • LGWR • SMON • RECO • ARCn
Database Writer(DBWn) • DBWn在以下情况将数据写入磁盘: • 发生检查点 • 达到脏缓冲区阈值 • 没有可用的缓冲区 • 超时 • 将表空间设置为脱机或只读 • 删除或截断表 • 备份表空间
LOG Writer(LGWR) • LGWR在以下情况将缓冲区中的数据写入磁盘: • 事务提交 • 三分之一的redo日志缓冲区已满 • Redo日志缓冲区中的内容超过1M • 每三秒钟 • 在DBWn写磁盘之前
System Monitor(SMON) • 负责检查和维护Oracle database的一致性。它主要完成以下工作: • 实例恢复 • 重做已提交的事务 • 打开数据库 • 回滚未提交的事务 • 合并数据文件中相邻的自由空间 • 释放临时段的空间
Process Monitor(PMON) • 当某个进程失效时,清除相关的资源。它主要负责以下工作: • 回滚用户的当前事务 • 释放相关的锁 • 释放其它相关的资源
Checkpoint(CKPT) • Checkpoint负责: • 使DBWn将SGA中所有被修改的数据库缓冲区的内容写入磁盘,无论事务是否被提交 • 用检查点信息更新数据文件头 • 用检查点信息更新控制文件 • 它可以保证: • 将经常被修改的数据块写入磁盘 • 简化实例恢复
Archiver(ARCn) • 是一个可选的后台进程 • 当把数据库设置为ARCHIVELOG模式时,可以自动归档联机redo日志 • 能够保存所有对数据库所做修改的记录
查询处理 • 解析 • 在Shared Pool中寻找是否有同样的语句 • 检查语法、对象名和权限 • 对解析用到的对象加锁 • 创建和存储执行计划 • 执行 • 获取和返回数据
处理DML语句 • 解析 • 执行