SlideShare a Scribd company logo
1 of 33
Architecture Intro
Overview
• Oracle数据库的架构可以分为两种类型: 单
  实例架构和分布式架构(RAC), 后者不是我们
  要讨论的内容;
• Oracle单实例架构包含两个方面: 实例架构
  (instance arch)和存储架构(storage arch), 前
  者又可以分为内存和进程两个方面. 这一章
  将依次讨论这些内容.
Instance vs. Database
• 通常我们在谈论oracle数据库时指的是数据库
  服务器(oracle database server), 它由两个部分
  组成: 实例(instance) + 数据库(database);
• 实例
  实例指的是oracle运行时的内存和相关的操作
  系统进程, 在数据库启动时会分配相应的内存
  并启动相关的后台进程.
• 数据库
  数据库指的是相关的存储文件, 包括参数文件,
  密码文件, 数据文件等.
Single-instance Architecture
• 单实例是最常见的一种情况, 数据库实例运行在某台server
  上, 并打开存储在本地磁盘的数据库. 客户端与服务端的交
  互则可以总结为:
 – 一个客户端用户进程与一个服务端进程交互;
 – 服务端进程与实例进行交互;
 – 实例与数据库进行交互. 如下:
Instance Memory Structure
                 - SGA
• 实例内存由被称为系统全局区(SGA,System
  Global Area)的系统共享内存(shared memory)组成,
  SGA包括以下必须的以及可选的组成部分, 必须:
  – 数据块缓冲区(database buffer cache)
  – 日志缓冲(log buffer)
  – 共享池(shared pool)
  可选:
  – 大池(large pool)
  – Java池(java pool)
  – 流池(stream pool)
Instance Memory Structure
              - PGA
• 当服务端接收到客户端发起的请求并成功
  建立连接时, 一个新的会话(session)就会产
  生, 该会话代表了此次客户端进程与服务端
  进程的交互. 实例会为每一个会话分配专属
  的内存空间, 被称为程序全局区(PGA, program
  global area). 与SGA不同的是, PGA是每一个
  session私有的, 不会共享;
• PGA通常用于SQL运算操作, 比如排序, 分组,
  连接(join)等.
Instance Memory Structure
       - Database Buffer Cache
• 数据库在执行SQL语句时, 需要对磁盘数据文件
  进行读取或者写入操作, 而磁盘操作通常是代
  价昂贵的, 因此oracle引入了数据块缓冲将数据
  块(data block)加载到内存进行相关的操作, 并
  在适时的情况下读写磁盘;
• 数据块缓冲区的大小对于数据库的整体性能至
  关重要, 缓冲区太小会导致频繁的读写磁盘, 太
  大以致不被用到的数据块也被缓存. 使用数据
  块命中率(data buffer hit ratio)来衡量缓冲区设
  置的合理性, 通常情况下该数值要达到99%以上.
Instance Memory Structure
         - Redo Log Buffer
• 重做日志缓冲对于oracle保持数据的完整性至关重
  要, oracle在执行DML语句时会生成重做日志(redo
  log), 并写入到该缓冲区中. 与其它的内存结构不同
  的是, 该缓冲区设置通常比较小(8M), 后台进程LGWR
  用于将缓冲区的内容写入到重做日志文件, 该进程
  会在下面的情况中被调用:
 – DBWn进程被调用
 – 1/3的缓冲区被使用
 – 执行commit语句
• 重做日志缓冲的大小设置在数据库启动参数
  log_buffer中, 可以修改该参数值, 但是不能小于默认
  值. 通常情况下设置过大的log_buffer不是一个好的
  做法, 因为在执行commit语句时会实时写重做日志
  文件, 会消耗更多的时间.
Instance Memory Structure
              - Shared Pool
• 共享池是SGA中最为复杂的内存结构, 主要由以下部分组成:
  – 库缓存(library cache)
     最常见的是用于缓存解析后的sql语句
  – 数据字典缓存(data dictionary cache)
     用于缓存最近使用过的数据库对象的数据字典信
     息, 比如表/索引等的定义
  – PL/SQL存储过程和函数缓冲
     缓存PLSQL存储过程和函数的定义
  – SQL查询和PL/SQL函数结果缓冲
     这是11g版本中引入的一个新的特性, 通过缓存sql查询和
     plsql函数的执行结果可以避免重复执行. 系统自身会检查数
     据是否已经过期. 默认情况下此特性被关闭.
• 共享池的大小对于数据库的性能至关重要, 理想情况下共享池应该能
  够存储那些经常被执行sql的解析结果和数据字典定义等信息, 但不应
  该保存那些极少被使用的数据. 共享池在数据库启动时被分配, 可以运
  行时动态改变共享池的大小(自9i).
Instance Memory Structure
             - Large Pool
• 大池是SGA中可选的内存结构, 在以下情况
  会使用到:
 – 共享服务器(shared server)
 – 并行执行服务器(parallel execution server)
 – RMAN备份数据到磁带设备
 如果在执行这些操作时, 大池没有被创建那
 么则会选择使用共享池中的内存.
Instance Memory Structure
       - Java & Streams Pool
• 当应用使用到java存储过程时, java池被用作
  堆栈(heap space)空间用于存储java类对象.
  需要注意的是, java存储过程与plsql存储过
  程一样被缓存在共享池中.
• 流池是Oracle Streams使用到的内存结构, 暂
  时不予讨论.
Instance Process Structure
• oracle数据库在启动时会启动相应的后台进程,
  这些进程有的是由来已久的比如SMON, PMON,
  DBWn, LGWR, CHKPT等; 有的是随着新的版本引
  入的, 比如MMON, MMAN等; 有的是一些非关
  键的进程, 比如ARCn, RECO等; 另外一些进程需
  要启用相关的数据库选项; 最后的一组进程则
  与数据库集群和高级流相关;
• 这些进程在不同的系统平台上表现为不同的形
  式, 在unix/linux平台上针对每个进程会启动相
  应的操作系统进程, 而在windows平台则实现为
  oracle.exe进程的子线程.
Instance Process Structure
             - Overview
• 这是一张关于SGA与实例进程之间的交互图,
  其中server processes表示的是会话进程, 用
  于处理客户端与服务端的连接; LGWR用于
  写重做日志文件, DBWn写数据文件; ARCn进
  程用于归档重
  做日志文件.
Instance Process Structure
         - SMON & PMON
• SMON, the system monitor
  系统监控进程. 在数据库启动时, SMON负责挂
  载和打开数据库; 在数据库成功启动之后,
  SMON则负责一些系统的监控任务, 比如合并数
  据文件中的空间.
• PMON, the process monitor
  PMON用于监控服务端会话进程. 当客户端发起
  一个会话连接时, 服务端会启动相应的会话进
  程. 如果该会话正常结束(比如, 用户退出登录),
  那么该进程将会被正常的终止; 否则PMON将会
  清理这些进程, 这包括回滚未完成的事务和释
  放会话的PGA内存.
Instance Process Structure
                  - DBWn
• DBWn, the database writer
  会话进程修改的是数据块缓冲区, 不会直接写磁盘数据文件, 负
  责这份工作的是DBWn进程, 可以有多个该进程同时运行分别是
  DBW0, DBW1...
  DBWn进程负责将缓冲区的脏数据块写入到数据文件, 该进程遵
  循的一个原则是: 尽可能少被调用, 每次调用尽可能少写. DBWn
  只会写缓冲区中最近没有被使用到的脏数据块, 这样只会导致最
  少量的磁盘IO操作. 以下情况会触发DBWn动作:
 –   数据块缓冲空间被使用完
 –   脏数据块过多
 –   每隔3秒DBWn会被调用
 –   调用checkpoint操作
     在上面的3种情况下只会导致尽量少的脏数据块被写入磁盘, checkpoint
     则会对所有的脏数据块执行写入操作, 这样带来的一个后果是磁盘IO
     大幅度上升, 数据库性能急剧下降. 数据块在关闭时会执行该动作, 可
     以通过如下语句手动执行(没有必要请不要执行):
     alter system checkpoint
Instance Process Structure
               - LGWR
• LGWR, the Log Writer
  LGWR进程负责将重做日志缓冲区的内容写入到在线
  重做日志文件(online redo log files)中, 每次写操作称
  为flush.
• 当一个会话执行某些DML语句(INSERT, UPDATE, etc)
  时, 会话进程首先会向重做日志缓冲区写修改队列
  (change vector), 然后才修改数据缓冲区的数据块.
  LGWR进程会在下面的情况中被调用:
  – DBWn进程被调用
  – 1/3的缓冲区被使用
  – 执行commit语句
注意: 有时候会提到LGWR进程每3秒被调用一次,
实际上这是由DBWn进程决定的, 因为DBWn进程每个3
秒被调用, 而DBWn会调用LGWR.
Instance Process Structure
                - CKPT
• CKPT, the Checkpoint Process
  检查点操作通过写入所有的脏数据块从而确保当前数据
  库的状态是一致的, CKPT会更新控制文件记录检查点位
  置(checkpoint position), 该位置被用于oracle启动时的灾
  难恢复操作(比如数据库突然崩溃). 频繁的CKPT操作可以
  减少数据库恢复的时间, 但是会对运行时性能产生影响.
• CKPT, full vs. partial
  检查点操作分为full 和 partial类型, 与前者不同的是
  partial类型的操作只会写入某个数据文件或者表空间的
  脏数据块, 而不是针对整个数据库的.
• CKPT, 8 vs. 8i and onward
  CKPT自8i版本开始有比较大的变化, 在V8版本中CKPT以
  full类型被定时执行; 自8i版本开始, CKPT使用partial类型
  以增量的方式执行, 这样带来的好处是数据库的整体性
  能表现更为平滑. 只有在用户要求执行或者数据库关闭
  时, full类型的CKPT操作才会被调用.
Instance Process Structure
              - MMON
• MMON, the Manageability Monitor
  可管理性监控器, 该进程随着10g引入, 用于
  数据库的自我监控和调优功能. MMON按照
  如下的步骤工作(默认一小时运行一次):
 – 读取实例收集的数据库活动和性能数据, 并建立
   快照(snapshot);
 – 启动ADDM(Automatic Database Diagnostic
   Monitor)工具, 对比当前快照和之前的快照并进
   行分析;
 – 生成相应的报告和警告信息.
Instance Process Structure
              - MMAN
• MMAN, the Memory Manager
  内存管理进程, MMAN是随着10g版本引入的,
  该进程用于自动管理实例内存(SGA & PGA)的分配.
• prior 9i
  在9i之前无论SGA还是PGA均是静态的, 不可以在实
  例启动之后进行重新的调整.
• 9i & 10g
  在9i版本中SGA/PGA可以被手工调整大小, 10g中引
  入了MMAN实现了SGA内存的自动管理.
• 11g
  11g在所有之前的版本上更进一步, DBA需要做的是
  设置一个总的内存共SGA和PGA使用, MMAN会监控
  SGA/PGA的内存需要进行自动的管理.
Instance Process Structure
              - ARCn
• ARCn, the Archiver
  归档日志进程, 这是一个可选的进程, 但是对于大多
  数企业应用而言此进程是必须的, 在数据库灾难发
  生的情况下, 如果没有开启该进程可能会导致数据
  无法被正常恢复.
• How it works?
  LGWR负责写在线重做日志文件(比较小), 在这些文
  件被写满之后LGWR则会覆盖之前的内容, 因此这些
  日志文件只能记录数据库近期的活动. ARCn进程用
  于在这些日志文件被重写之前对它们进行归档操作,
  以记录数据库所有的历史活动.
Instance Process Structure
                  - RECO
• RECO, the Recoverer
  RECO进程负责分布式事务的回滚操作, 分布式事务
  一个常见的情况就是使用database link, 比如:
  update orders@mirror set order_status=complete
   where customer_id=1000;
 这里mirror代表的是一个指向远程数据库的link, 对于
 这种事务的提交称之为二部提交(2PC, 2-phase
 commit). 2PC涉及到本地数据库和远程数据库的提交
 操作以及它们之间的同步, 如果均提交成功那么2PC
 操作成功, 如果出现了失败那么RECO进程负责分布
 式事务的回滚.
Instance Process Structure
             - Other Processes
• CJQn & Jnnn
  这两个进程用于管理数据库定时任务, CJQn进程监控任务队列,
  并将需要执行的任务发送给Jnnn进程执行;
• D000 & Snnn
  分派进程, 在启用共享服务器的情况下, 该进程将SQL语句发送给
  Snnn进程执行.
• DBRM
  数据库资源管理进程, 负责资源计划和其它的一些资源管理任务.
• DIA0
  此进程负责检测和解决数据库死锁(deadlock).
• DIAG
  可诊断性进程, 负责诊断信息的转储和执行oradebug命令, 该命
  令用于检测实例中的问题.
• FBDA
  闪回数据归档进程(flashback data archiver process), 负责对数据
  库表的数据进行归档, 以支持闪回查询(flashback query).
Instance Process Structure
          - Other Processes
• PSP0
  PSP0(Process Spawner)用于创建和管理其他的
  oracle进程.
• QMNC, Q000
  Oracle队列管理进程.
• SHAD
  支持用户会话的辅助进程.
• SMCO, W000
  SMCO, 空间管理调度进程. W000是它的从属进
  程.
Database Storage Structure
            - Overview
• Oracle数据库的存储结构可以划分为物理存
  储和逻辑存储两个方面, 物理存储指的是
  oracle在磁盘或者其它设备上的文件; 逻辑
  存储则是oracle对物理存储的抽象, oracle使
  用表空间(tablespace), 段(segment), 扩展
  (extent), 数据块(data block)来表示数据库的
  逻辑存储结构. 关于oracle存储会在以后的
  章节作详细的介绍.
• 接下来会首先介绍与物理存储相关的数据
  库文件, 之后介绍逻辑存储.
Database Physical Storage
             - Overview
• oracle数据库由三种必须的文件类型和其它
  的外部文件(严格上来说这些文件不是必须
  的)组成, 必须的文件包括:
  • 控制文件(controlfile)
  • 在线重做日志文件(online redo log file)
  • 数据文件(datafile)
 可选的文件类型包括:
  •   初始化参数文件(initialization parameter file)
  •   密码文件(password file)
  •   归档重做日志文件(archive redo log file)
  •   追踪文件(trace file)
Database Physical Storage
           - Controlfile
• Controlfile
  关于控制文件有两种看法, 有的DBA认为存在多个控制文
  件, 有的则认为只有一个控制文件; 这两种说法都是正确
  的, 通常确实存在多个控制文件, 但是这些控制文件内容
  都是相同的.
  控制文件对于oracle数据库至关重要, 它存储了如下信息:
 – 在线重做日志文件的位置, 当数据库处在归档日志模式, 控制
   文件会存储近期归档日志文件的位置;
 – 数据库表空间, 表空间对应的数据文件;
 – 维护数据库完整性的关键信息, 比如之前提到的检查点位置;
 – 如果使用了RMAN 进行数据库的备份, 那么备份信息会存储
   在控制文件中.
• Multiplexing
  根据控制文件对于数据库的重要性, 好的做法是对控制
  文件保存多个拷贝.
Database Physical Storage
       - Online redo log file
• oracle重做日志文件包含两种类型: 在线重做日志和归档
  重做日志, 这里讲述的是前者; Oracle数据库要求至少两
  个在线重做日志文件组(方便归档操作), 每个组包含至少
  一个文件(称之为成员文件). 为了数据的安全性, 一般在
  一个文件组中创建多个成员, LGWR进程会同时写这些文
  件以保证它们的同步.
• 相关概念
 – 当前组(current group)
 指的是当前记录重做日志的文件组.
 – 日志切换(log switch)
 当某一组重做日志文件被写满时, 会切换到另一组,
 这称为日志切换
• 重做日志文件组的数目和大小对于数据库的性能
  调优十分重要, 应当根据数据库的具体活动情况进
  行适当的调整.
Database Physical Storage
             - Datafile
• Datafile
  数据文件, 在10g&11g版本中数据库要求至少两个数据文件分别
  用于SYSTEM和SYSAUX表空间, 实际情况下会创建更多的数据文
  件;
  数据文件存储了数据库段(segments), 典型的segment类型有表/
  索引等; 这些段包含了两种类型的信息: 用户数据库和数据字典
  数据.
• Data block
  从操作系统的层面来看, 数据文件由文件系统块组成, 在内部使
  用中则会被处理为oracle数据块(接下来说的数据块均指oracle数
  据块),两者之间没有必然的联系但是基于性能的考虑oracle数据
  块大小需要大于文件系统数据块的大小;
  通常情况下, 整个数据库的数据块大小均相同, 但可以为不同的
  数据文件指定不同的块大小.
  为了数据的安全性考虑, 数据文件需要进行定时的备份操作; 使
  用oracle提供的RMAN工具或者使用磁盘阵列(RAID)技术对数据
  文件进行备份.
Database Physical Storage
            - Other files
• Parameter file
  在数据库启动时参数文件被读取并使用, oracle数据库的所有配
  置参数中仅有一个参数是必须的: DB_NAME, 其他参数均有默认
  值, 因此参数文件可能非常小. 另外, 参数文件被存储为pfile或者
  spfile.
• Password file
  通常情况下用户验证信息保存在数据字典并用于验证操作, 如果
  数据字典不可用则需要使用密码文件进行验证, 常见的情况是启
  动或者创建一个数据库.
• Archive redo log file
  归档重做日志文件, 用于数据库的恢复.
• Alert log and trace file
  告警日志文件记录了对数据库影响重大的操作, 比如数据库的启
  动和关闭, 改变数据库参数, 修改数据库的物理结构;
  跟踪文件, 由数据库后台进程生成, 经常使用到的是会话跟踪文
  件, 用于数据库错误诊断和性能调优.
Database Logical Storage
• Oracle通过表空间(tablespace)的方式实现了对
  物理存储结构的抽象; 从逻辑上来说, 表空间由
  多个逻辑段(segment)组成, 段用于存储相关的
  数据, 典型的段有表/索引/回滚段; 从物理的角
  度来看, 表空间由多个数据文件组成; 段与数据
  文件之间是多对多的关系.
• Data dictionary segment
  在创建数据库时, 需要创建大量的数据字典段,
  这些段存储在SYSTEM/SYSAUX表空间中. 10g版
  本引入了SYSAUX表空间用于数据字典的存储,
  之前所有的字典数据均存储在SYSTEM表空间中.
Database Logical Storage
• Extent
  扩展. 段由多个扩展组成,扩展则是数据块的
  集合. 段在每次扩容时, 会分配一个新的扩
  展. 下图是oracle逻辑存储结构和物理存储
  结构的映射关系
  (注意图中使用黑
  字标注的数字):
Database Logical Storage
          - Data dictionary
• 数据字典是关于数据的数据, 它是对数据库中其他对象(表, 索引,
  限制等)的描述. 以表的数据字典为例, 它包含了表的名称, 创建
  参数, 列等信息; 从10g版本开始, 数据字典还包含了性能监控的
  相关信息. 在很多方面, 数据字典与其他的数据库对象一样, 也是
  使用段进行存储的, 关键的区别在于这些段在数据库创建时创建,
  而且不应当直接去访问这些数据(通常使用视图的方式进行访
  问);
• Data dictionary views
  oracle以三种视图的形式提供对数据字典的访问, 分别以不同的
  前缀进行命名:
 – USER_XXXX
   当前用户拥有的对象的数据字典信息, 比如user_tables,
   user_indexes;
 – ALL_XXXX
   当前用户具有访问权限的对象的数据字典信息, 比如all_tables,
   all_indexes;
 – DBA_XXXX
   数据库所有对象的数据字典信息, 比如dba_tables.
END

More Related Content

What's hot

MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析frogd
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)frogd
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇小新 制造
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCfrogd
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多ITband
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期frogd
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训maclean liu
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析frogd
 
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术团队
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
Oracle 数据库一体机ODA X5-2 产品介绍.PDF
Oracle 数据库一体机ODA X5-2 产品介绍.PDFOracle 数据库一体机ODA X5-2 产品介绍.PDF
Oracle 数据库一体机ODA X5-2 产品介绍.PDFEthan M. Liu
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案maclean liu
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 

What's hot (20)

Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期
 
分区表基础知识培训
分区表基础知识培训分区表基础知识培训
分区表基础知识培训
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
 
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
Oracle 数据库一体机ODA X5-2 产品介绍.PDF
Oracle 数据库一体机ODA X5-2 产品介绍.PDFOracle 数据库一体机ODA X5-2 产品介绍.PDF
Oracle 数据库一体机ODA X5-2 产品介绍.PDF
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 

Viewers also liked

2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
Media (horror movie storyboard by Aamir
Media (horror movie storyboard  by AamirMedia (horror movie storyboard  by Aamir
Media (horror movie storyboard by Aamirecsmedia
 
Reporte de sesión 29/08/14
Reporte de sesión 29/08/14Reporte de sesión 29/08/14
Reporte de sesión 29/08/14Arilupita
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
Adam duffield first draft
Adam duffield first draftAdam duffield first draft
Adam duffield first draftDingoTheDino
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
13, io
13, io13, io
13, ioted-xu
 
1, java intro
1, java intro1, java intro
1, java introted-xu
 
9, interfaces
9, interfaces9, interfaces
9, interfacested-xu
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanupted-xu
 
5, system admin
5, system admin5, system admin
5, system adminted-xu
 

Viewers also liked (20)

2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
Deal zone pod
Deal zone podDeal zone pod
Deal zone pod
 
Cap sleeve
Cap sleeveCap sleeve
Cap sleeve
 
Audacity
AudacityAudacity
Audacity
 
Media (horror movie storyboard by Aamir
Media (horror movie storyboard  by AamirMedia (horror movie storyboard  by Aamir
Media (horror movie storyboard by Aamir
 
Examen de tp 8
Examen de  tp 8Examen de  tp 8
Examen de tp 8
 
Reporte de sesión 29/08/14
Reporte de sesión 29/08/14Reporte de sesión 29/08/14
Reporte de sesión 29/08/14
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
Adam duffield first draft
Adam duffield first draftAdam duffield first draft
Adam duffield first draft
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
13, io
13, io13, io
13, io
 
1, java intro
1, java intro1, java intro
1, java intro
 
9, interfaces
9, interfaces9, interfaces
9, interfaces
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
5, system admin
5, system admin5, system admin
5, system admin
 

Similar to 1, OCP - architecture intro

Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)yiditushe
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 zmaclean liu
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginnermaclean liu
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15Jiaying Ren
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410maclean liu
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報Wales Chen
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1小新 制造
 
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcipDai Jun
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统klandor
 
Oracle saa s paas overview
Oracle saa s paas overviewOracle saa s paas overview
Oracle saa s paas overviewChris Lee
 
Oracle雲端服務介紹 taiwan
Oracle雲端服務介紹   taiwanOracle雲端服務介紹   taiwan
Oracle雲端服務介紹 taiwanChieh-An Yu
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍Ethan M. Liu
 
分布式系统日志处理调研
分布式系统日志处理调研分布式系统日志处理调研
分布式系统日志处理调研klandor
 

Similar to 1, OCP - architecture intro (20)

Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z
 
Basic oracle for developer&beginner
Basic oracle for developer&beginnerBasic oracle for developer&beginner
Basic oracle for developer&beginner
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1
 
Notes of jcip
Notes of jcipNotes of jcip
Notes of jcip
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
Oracle saa s paas overview
Oracle saa s paas overviewOracle saa s paas overview
Oracle saa s paas overview
 
Oracle雲端服務介紹 taiwan
Oracle雲端服務介紹   taiwanOracle雲端服務介紹   taiwan
Oracle雲端服務介紹 taiwan
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
分布式系统日志处理调研
分布式系统日志处理调研分布式系统日志处理调研
分布式系统日志处理调研
 

More from ted-xu

10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
7, business event system
7, business event system7, business event system
7, business event systemted-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notested-xu
 
5, sed
5, sed5, sed
5, sedted-xu
 
4, grep
4, grep4, grep
4, grepted-xu
 
3, regular expression
3, regular expression3, regular expression
3, regular expressionted-xu
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplifiedted-xu
 
1, shell intro
1, shell intro1, shell intro
1, shell introted-xu
 
6, awk
6, awk6, awk
6, awkted-xu
 
8, lamp
8, lamp8, lamp
8, lampted-xu
 
6, vim
6, vim6, vim
6, vimted-xu
 
4, files & folders
4, files & folders4, files & folders
4, files & foldersted-xu
 

More from ted-xu (16)

10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
7, business event system
7, business event system7, business event system
7, business event system
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
OPM Recipe designer notes
OPM Recipe designer notesOPM Recipe designer notes
OPM Recipe designer notes
 
5, sed
5, sed5, sed
5, sed
 
4, grep
4, grep4, grep
4, grep
 
3, regular expression
3, regular expression3, regular expression
3, regular expression
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplified
 
1, shell intro
1, shell intro1, shell intro
1, shell intro
 
6, awk
6, awk6, awk
6, awk
 
8, lamp
8, lamp8, lamp
8, lamp
 
6, vim
6, vim6, vim
6, vim
 
4, files & folders
4, files & folders4, files & folders
4, files & folders
 

1, OCP - architecture intro

  • 2. Overview • Oracle数据库的架构可以分为两种类型: 单 实例架构和分布式架构(RAC), 后者不是我们 要讨论的内容; • Oracle单实例架构包含两个方面: 实例架构 (instance arch)和存储架构(storage arch), 前 者又可以分为内存和进程两个方面. 这一章 将依次讨论这些内容.
  • 3. Instance vs. Database • 通常我们在谈论oracle数据库时指的是数据库 服务器(oracle database server), 它由两个部分 组成: 实例(instance) + 数据库(database); • 实例 实例指的是oracle运行时的内存和相关的操作 系统进程, 在数据库启动时会分配相应的内存 并启动相关的后台进程. • 数据库 数据库指的是相关的存储文件, 包括参数文件, 密码文件, 数据文件等.
  • 4. Single-instance Architecture • 单实例是最常见的一种情况, 数据库实例运行在某台server 上, 并打开存储在本地磁盘的数据库. 客户端与服务端的交 互则可以总结为: – 一个客户端用户进程与一个服务端进程交互; – 服务端进程与实例进行交互; – 实例与数据库进行交互. 如下:
  • 5. Instance Memory Structure - SGA • 实例内存由被称为系统全局区(SGA,System Global Area)的系统共享内存(shared memory)组成, SGA包括以下必须的以及可选的组成部分, 必须: – 数据块缓冲区(database buffer cache) – 日志缓冲(log buffer) – 共享池(shared pool) 可选: – 大池(large pool) – Java池(java pool) – 流池(stream pool)
  • 6. Instance Memory Structure - PGA • 当服务端接收到客户端发起的请求并成功 建立连接时, 一个新的会话(session)就会产 生, 该会话代表了此次客户端进程与服务端 进程的交互. 实例会为每一个会话分配专属 的内存空间, 被称为程序全局区(PGA, program global area). 与SGA不同的是, PGA是每一个 session私有的, 不会共享; • PGA通常用于SQL运算操作, 比如排序, 分组, 连接(join)等.
  • 7. Instance Memory Structure - Database Buffer Cache • 数据库在执行SQL语句时, 需要对磁盘数据文件 进行读取或者写入操作, 而磁盘操作通常是代 价昂贵的, 因此oracle引入了数据块缓冲将数据 块(data block)加载到内存进行相关的操作, 并 在适时的情况下读写磁盘; • 数据块缓冲区的大小对于数据库的整体性能至 关重要, 缓冲区太小会导致频繁的读写磁盘, 太 大以致不被用到的数据块也被缓存. 使用数据 块命中率(data buffer hit ratio)来衡量缓冲区设 置的合理性, 通常情况下该数值要达到99%以上.
  • 8. Instance Memory Structure - Redo Log Buffer • 重做日志缓冲对于oracle保持数据的完整性至关重 要, oracle在执行DML语句时会生成重做日志(redo log), 并写入到该缓冲区中. 与其它的内存结构不同 的是, 该缓冲区设置通常比较小(8M), 后台进程LGWR 用于将缓冲区的内容写入到重做日志文件, 该进程 会在下面的情况中被调用: – DBWn进程被调用 – 1/3的缓冲区被使用 – 执行commit语句 • 重做日志缓冲的大小设置在数据库启动参数 log_buffer中, 可以修改该参数值, 但是不能小于默认 值. 通常情况下设置过大的log_buffer不是一个好的 做法, 因为在执行commit语句时会实时写重做日志 文件, 会消耗更多的时间.
  • 9. Instance Memory Structure - Shared Pool • 共享池是SGA中最为复杂的内存结构, 主要由以下部分组成: – 库缓存(library cache) 最常见的是用于缓存解析后的sql语句 – 数据字典缓存(data dictionary cache) 用于缓存最近使用过的数据库对象的数据字典信 息, 比如表/索引等的定义 – PL/SQL存储过程和函数缓冲 缓存PLSQL存储过程和函数的定义 – SQL查询和PL/SQL函数结果缓冲 这是11g版本中引入的一个新的特性, 通过缓存sql查询和 plsql函数的执行结果可以避免重复执行. 系统自身会检查数 据是否已经过期. 默认情况下此特性被关闭. • 共享池的大小对于数据库的性能至关重要, 理想情况下共享池应该能 够存储那些经常被执行sql的解析结果和数据字典定义等信息, 但不应 该保存那些极少被使用的数据. 共享池在数据库启动时被分配, 可以运 行时动态改变共享池的大小(自9i).
  • 10. Instance Memory Structure - Large Pool • 大池是SGA中可选的内存结构, 在以下情况 会使用到: – 共享服务器(shared server) – 并行执行服务器(parallel execution server) – RMAN备份数据到磁带设备 如果在执行这些操作时, 大池没有被创建那 么则会选择使用共享池中的内存.
  • 11. Instance Memory Structure - Java & Streams Pool • 当应用使用到java存储过程时, java池被用作 堆栈(heap space)空间用于存储java类对象. 需要注意的是, java存储过程与plsql存储过 程一样被缓存在共享池中. • 流池是Oracle Streams使用到的内存结构, 暂 时不予讨论.
  • 12. Instance Process Structure • oracle数据库在启动时会启动相应的后台进程, 这些进程有的是由来已久的比如SMON, PMON, DBWn, LGWR, CHKPT等; 有的是随着新的版本引 入的, 比如MMON, MMAN等; 有的是一些非关 键的进程, 比如ARCn, RECO等; 另外一些进程需 要启用相关的数据库选项; 最后的一组进程则 与数据库集群和高级流相关; • 这些进程在不同的系统平台上表现为不同的形 式, 在unix/linux平台上针对每个进程会启动相 应的操作系统进程, 而在windows平台则实现为 oracle.exe进程的子线程.
  • 13. Instance Process Structure - Overview • 这是一张关于SGA与实例进程之间的交互图, 其中server processes表示的是会话进程, 用 于处理客户端与服务端的连接; LGWR用于 写重做日志文件, DBWn写数据文件; ARCn进 程用于归档重 做日志文件.
  • 14. Instance Process Structure - SMON & PMON • SMON, the system monitor 系统监控进程. 在数据库启动时, SMON负责挂 载和打开数据库; 在数据库成功启动之后, SMON则负责一些系统的监控任务, 比如合并数 据文件中的空间. • PMON, the process monitor PMON用于监控服务端会话进程. 当客户端发起 一个会话连接时, 服务端会启动相应的会话进 程. 如果该会话正常结束(比如, 用户退出登录), 那么该进程将会被正常的终止; 否则PMON将会 清理这些进程, 这包括回滚未完成的事务和释 放会话的PGA内存.
  • 15. Instance Process Structure - DBWn • DBWn, the database writer 会话进程修改的是数据块缓冲区, 不会直接写磁盘数据文件, 负 责这份工作的是DBWn进程, 可以有多个该进程同时运行分别是 DBW0, DBW1... DBWn进程负责将缓冲区的脏数据块写入到数据文件, 该进程遵 循的一个原则是: 尽可能少被调用, 每次调用尽可能少写. DBWn 只会写缓冲区中最近没有被使用到的脏数据块, 这样只会导致最 少量的磁盘IO操作. 以下情况会触发DBWn动作: – 数据块缓冲空间被使用完 – 脏数据块过多 – 每隔3秒DBWn会被调用 – 调用checkpoint操作 在上面的3种情况下只会导致尽量少的脏数据块被写入磁盘, checkpoint 则会对所有的脏数据块执行写入操作, 这样带来的一个后果是磁盘IO 大幅度上升, 数据库性能急剧下降. 数据块在关闭时会执行该动作, 可 以通过如下语句手动执行(没有必要请不要执行): alter system checkpoint
  • 16. Instance Process Structure - LGWR • LGWR, the Log Writer LGWR进程负责将重做日志缓冲区的内容写入到在线 重做日志文件(online redo log files)中, 每次写操作称 为flush. • 当一个会话执行某些DML语句(INSERT, UPDATE, etc) 时, 会话进程首先会向重做日志缓冲区写修改队列 (change vector), 然后才修改数据缓冲区的数据块. LGWR进程会在下面的情况中被调用: – DBWn进程被调用 – 1/3的缓冲区被使用 – 执行commit语句 注意: 有时候会提到LGWR进程每3秒被调用一次, 实际上这是由DBWn进程决定的, 因为DBWn进程每个3 秒被调用, 而DBWn会调用LGWR.
  • 17. Instance Process Structure - CKPT • CKPT, the Checkpoint Process 检查点操作通过写入所有的脏数据块从而确保当前数据 库的状态是一致的, CKPT会更新控制文件记录检查点位 置(checkpoint position), 该位置被用于oracle启动时的灾 难恢复操作(比如数据库突然崩溃). 频繁的CKPT操作可以 减少数据库恢复的时间, 但是会对运行时性能产生影响. • CKPT, full vs. partial 检查点操作分为full 和 partial类型, 与前者不同的是 partial类型的操作只会写入某个数据文件或者表空间的 脏数据块, 而不是针对整个数据库的. • CKPT, 8 vs. 8i and onward CKPT自8i版本开始有比较大的变化, 在V8版本中CKPT以 full类型被定时执行; 自8i版本开始, CKPT使用partial类型 以增量的方式执行, 这样带来的好处是数据库的整体性 能表现更为平滑. 只有在用户要求执行或者数据库关闭 时, full类型的CKPT操作才会被调用.
  • 18. Instance Process Structure - MMON • MMON, the Manageability Monitor 可管理性监控器, 该进程随着10g引入, 用于 数据库的自我监控和调优功能. MMON按照 如下的步骤工作(默认一小时运行一次): – 读取实例收集的数据库活动和性能数据, 并建立 快照(snapshot); – 启动ADDM(Automatic Database Diagnostic Monitor)工具, 对比当前快照和之前的快照并进 行分析; – 生成相应的报告和警告信息.
  • 19. Instance Process Structure - MMAN • MMAN, the Memory Manager 内存管理进程, MMAN是随着10g版本引入的, 该进程用于自动管理实例内存(SGA & PGA)的分配. • prior 9i 在9i之前无论SGA还是PGA均是静态的, 不可以在实 例启动之后进行重新的调整. • 9i & 10g 在9i版本中SGA/PGA可以被手工调整大小, 10g中引 入了MMAN实现了SGA内存的自动管理. • 11g 11g在所有之前的版本上更进一步, DBA需要做的是 设置一个总的内存共SGA和PGA使用, MMAN会监控 SGA/PGA的内存需要进行自动的管理.
  • 20. Instance Process Structure - ARCn • ARCn, the Archiver 归档日志进程, 这是一个可选的进程, 但是对于大多 数企业应用而言此进程是必须的, 在数据库灾难发 生的情况下, 如果没有开启该进程可能会导致数据 无法被正常恢复. • How it works? LGWR负责写在线重做日志文件(比较小), 在这些文 件被写满之后LGWR则会覆盖之前的内容, 因此这些 日志文件只能记录数据库近期的活动. ARCn进程用 于在这些日志文件被重写之前对它们进行归档操作, 以记录数据库所有的历史活动.
  • 21. Instance Process Structure - RECO • RECO, the Recoverer RECO进程负责分布式事务的回滚操作, 分布式事务 一个常见的情况就是使用database link, 比如: update orders@mirror set order_status=complete where customer_id=1000; 这里mirror代表的是一个指向远程数据库的link, 对于 这种事务的提交称之为二部提交(2PC, 2-phase commit). 2PC涉及到本地数据库和远程数据库的提交 操作以及它们之间的同步, 如果均提交成功那么2PC 操作成功, 如果出现了失败那么RECO进程负责分布 式事务的回滚.
  • 22. Instance Process Structure - Other Processes • CJQn & Jnnn 这两个进程用于管理数据库定时任务, CJQn进程监控任务队列, 并将需要执行的任务发送给Jnnn进程执行; • D000 & Snnn 分派进程, 在启用共享服务器的情况下, 该进程将SQL语句发送给 Snnn进程执行. • DBRM 数据库资源管理进程, 负责资源计划和其它的一些资源管理任务. • DIA0 此进程负责检测和解决数据库死锁(deadlock). • DIAG 可诊断性进程, 负责诊断信息的转储和执行oradebug命令, 该命 令用于检测实例中的问题. • FBDA 闪回数据归档进程(flashback data archiver process), 负责对数据 库表的数据进行归档, 以支持闪回查询(flashback query).
  • 23. Instance Process Structure - Other Processes • PSP0 PSP0(Process Spawner)用于创建和管理其他的 oracle进程. • QMNC, Q000 Oracle队列管理进程. • SHAD 支持用户会话的辅助进程. • SMCO, W000 SMCO, 空间管理调度进程. W000是它的从属进 程.
  • 24. Database Storage Structure - Overview • Oracle数据库的存储结构可以划分为物理存 储和逻辑存储两个方面, 物理存储指的是 oracle在磁盘或者其它设备上的文件; 逻辑 存储则是oracle对物理存储的抽象, oracle使 用表空间(tablespace), 段(segment), 扩展 (extent), 数据块(data block)来表示数据库的 逻辑存储结构. 关于oracle存储会在以后的 章节作详细的介绍. • 接下来会首先介绍与物理存储相关的数据 库文件, 之后介绍逻辑存储.
  • 25. Database Physical Storage - Overview • oracle数据库由三种必须的文件类型和其它 的外部文件(严格上来说这些文件不是必须 的)组成, 必须的文件包括: • 控制文件(controlfile) • 在线重做日志文件(online redo log file) • 数据文件(datafile) 可选的文件类型包括: • 初始化参数文件(initialization parameter file) • 密码文件(password file) • 归档重做日志文件(archive redo log file) • 追踪文件(trace file)
  • 26. Database Physical Storage - Controlfile • Controlfile 关于控制文件有两种看法, 有的DBA认为存在多个控制文 件, 有的则认为只有一个控制文件; 这两种说法都是正确 的, 通常确实存在多个控制文件, 但是这些控制文件内容 都是相同的. 控制文件对于oracle数据库至关重要, 它存储了如下信息: – 在线重做日志文件的位置, 当数据库处在归档日志模式, 控制 文件会存储近期归档日志文件的位置; – 数据库表空间, 表空间对应的数据文件; – 维护数据库完整性的关键信息, 比如之前提到的检查点位置; – 如果使用了RMAN 进行数据库的备份, 那么备份信息会存储 在控制文件中. • Multiplexing 根据控制文件对于数据库的重要性, 好的做法是对控制 文件保存多个拷贝.
  • 27. Database Physical Storage - Online redo log file • oracle重做日志文件包含两种类型: 在线重做日志和归档 重做日志, 这里讲述的是前者; Oracle数据库要求至少两 个在线重做日志文件组(方便归档操作), 每个组包含至少 一个文件(称之为成员文件). 为了数据的安全性, 一般在 一个文件组中创建多个成员, LGWR进程会同时写这些文 件以保证它们的同步. • 相关概念 – 当前组(current group) 指的是当前记录重做日志的文件组. – 日志切换(log switch) 当某一组重做日志文件被写满时, 会切换到另一组, 这称为日志切换 • 重做日志文件组的数目和大小对于数据库的性能 调优十分重要, 应当根据数据库的具体活动情况进 行适当的调整.
  • 28. Database Physical Storage - Datafile • Datafile 数据文件, 在10g&11g版本中数据库要求至少两个数据文件分别 用于SYSTEM和SYSAUX表空间, 实际情况下会创建更多的数据文 件; 数据文件存储了数据库段(segments), 典型的segment类型有表/ 索引等; 这些段包含了两种类型的信息: 用户数据库和数据字典 数据. • Data block 从操作系统的层面来看, 数据文件由文件系统块组成, 在内部使 用中则会被处理为oracle数据块(接下来说的数据块均指oracle数 据块),两者之间没有必然的联系但是基于性能的考虑oracle数据 块大小需要大于文件系统数据块的大小; 通常情况下, 整个数据库的数据块大小均相同, 但可以为不同的 数据文件指定不同的块大小. 为了数据的安全性考虑, 数据文件需要进行定时的备份操作; 使 用oracle提供的RMAN工具或者使用磁盘阵列(RAID)技术对数据 文件进行备份.
  • 29. Database Physical Storage - Other files • Parameter file 在数据库启动时参数文件被读取并使用, oracle数据库的所有配 置参数中仅有一个参数是必须的: DB_NAME, 其他参数均有默认 值, 因此参数文件可能非常小. 另外, 参数文件被存储为pfile或者 spfile. • Password file 通常情况下用户验证信息保存在数据字典并用于验证操作, 如果 数据字典不可用则需要使用密码文件进行验证, 常见的情况是启 动或者创建一个数据库. • Archive redo log file 归档重做日志文件, 用于数据库的恢复. • Alert log and trace file 告警日志文件记录了对数据库影响重大的操作, 比如数据库的启 动和关闭, 改变数据库参数, 修改数据库的物理结构; 跟踪文件, 由数据库后台进程生成, 经常使用到的是会话跟踪文 件, 用于数据库错误诊断和性能调优.
  • 30. Database Logical Storage • Oracle通过表空间(tablespace)的方式实现了对 物理存储结构的抽象; 从逻辑上来说, 表空间由 多个逻辑段(segment)组成, 段用于存储相关的 数据, 典型的段有表/索引/回滚段; 从物理的角 度来看, 表空间由多个数据文件组成; 段与数据 文件之间是多对多的关系. • Data dictionary segment 在创建数据库时, 需要创建大量的数据字典段, 这些段存储在SYSTEM/SYSAUX表空间中. 10g版 本引入了SYSAUX表空间用于数据字典的存储, 之前所有的字典数据均存储在SYSTEM表空间中.
  • 31. Database Logical Storage • Extent 扩展. 段由多个扩展组成,扩展则是数据块的 集合. 段在每次扩容时, 会分配一个新的扩 展. 下图是oracle逻辑存储结构和物理存储 结构的映射关系 (注意图中使用黑 字标注的数字):
  • 32. Database Logical Storage - Data dictionary • 数据字典是关于数据的数据, 它是对数据库中其他对象(表, 索引, 限制等)的描述. 以表的数据字典为例, 它包含了表的名称, 创建 参数, 列等信息; 从10g版本开始, 数据字典还包含了性能监控的 相关信息. 在很多方面, 数据字典与其他的数据库对象一样, 也是 使用段进行存储的, 关键的区别在于这些段在数据库创建时创建, 而且不应当直接去访问这些数据(通常使用视图的方式进行访 问); • Data dictionary views oracle以三种视图的形式提供对数据字典的访问, 分别以不同的 前缀进行命名: – USER_XXXX 当前用户拥有的对象的数据字典信息, 比如user_tables, user_indexes; – ALL_XXXX 当前用户具有访问权限的对象的数据字典信息, 比如all_tables, all_indexes; – DBA_XXXX 数据库所有对象的数据字典信息, 比如dba_tables.
  • 33. END