《Oracle体系结构培训课件(ppt 7)》由会员分享,可在线阅读,更多相关《Oracle体系结构培训课件(ppt 7)(76页珍藏版)》请在金锄头文库上搜索。
1、1 第3章Oracle体系结构 2 数据库和实例 Oracle数据库服务器由数据库和实例组成 在Oracle中 数据库是静态的 是以文件的形式存在的 是文件的集合 实例是有关数据库管理和控制的一系列进程 以及他们共享的系统全局区SGA 3 Oracle结构图 Oracle数据库服务器 实例 数据库 Oracle进程 SGA区 后台进程 物理存储 逻辑存储 数据文件控制文件日志文件 初始化文件密码文件归档文件 表空间 段 区 块 服务进程 4 访问Oracle数据库 当客户应用或工程程序要访问Oracle数据库时 必须首先连接到OracleServer 然后才能访问数据库数据 当在Sql Plu
2、s中键入用户名 口令和网络连接串之后 就可以连接到OracleServer了 此时会在客户端启动对应于Sql Plus应用进程 该进程称为 用户进程 同时在服务器端OracleServer会自动为该用户进程派生一个新的进程 该进程为服务器进程 5 当客户端运行SQL语句时 用户进程会通过网络将该SQL语句发送到对应的服务器进程 并且由服务器进程执行该SQL语句 服务器进程在执行了SQL语句之后 会将SQL语句的结果通过网络发送到用户进程 客户端的所有SQL操作都是由服务器进程来执行的 6 数据库操作模式 专用服务器为每个连接到实例的用户进程启动一个专门的服务进程 共享服务器当用户程序向系统发出
3、请求时 监听器分配一个负荷最轻的调度进程来处理用户请求 7 Oracle结构图 Oracle数据库服务器 实例 数据库 Oracle进程 SGA区 后台进程 服务进程 物理存储 逻辑存储 数据文件控制文件日志文件 初始化文件密码文件归档文件 表空间 段 区 块 8 请大家看一下书上 2 2Oracle内存结构 9 Oracle内存结构 内存是Oracle重要的信息缓存和共享区域 主要存储执行的程序代码 连接的会话信息以及程序执行期间所需数据和共享的信息等 Oracle使用的主要内存结构包括系统全局区SGA和程序全局区PGA 10 SGA区 11 数据高速缓存 保存最近从数据文件中读取的数据块
4、分为脏缓存块 空闲缓存块和命中缓存块三类 脏缓冲块 当执行INSERT UPDATE以及DELETE操作时 服务器进程修改数据高速缓存的相应数据 此时缓冲区的内容与数据文件中的内容不一致 12 当用户第一次提出数据查询请求时 Oracle会首先在数据高速缓存中寻找该数据 如找到 系统就直接对它们进行处理 如找不到 系统首先在数据高速缓存中查找空闲数据块 然后将数据库文件中的数据读入空闲块处理 如搜索了一定的数据块后仍找不到空闲块 由后台进程DBWR将内存中部分修改过的数据写入文件 以腾出空间 数据高速缓存 13 重做日志缓冲区 重做日志缓冲区用于缓存数据库重做日志记录 以便数据库损毁时可以进行
5、必要的恢复 重做日志缓存是一个循环缓存区 在使用时从顶端向低端写入数据 然后再返回到缓冲区的起点循环写入 14 共享池 共享池相当于程序高速缓冲区 所有的用户程序都放在共享池中 当用户将SQL指令发送至Oracle 系统首先解析语法是否正确 解析时所需的系统信息 以及解析后的结果将存放在共享池内 所以当不同用户执行相同SQL指令时 可以共享已解析好的结果 15 共享池 共享池 库缓存 数据字典缓存库缓存 共享SQL区 PL SQL域 锁 闩数据字典缓冲区存放数据字典信息 16 程序全局区PGA ProgramGlobalArea PGA是单个Oracle进程 包括服务器进程和后台进程 使用的内
6、存区域 不属于实例的内存结构 PGA含有单个进程工作时需要的数据和控制信息 PGA是非共享的 只有服务进程本身才能够访问它自己的PGA区 17 PGA PGA为指定进程专用 当用户连接服务器并建立会话时 Oracle为其分配一个PGA 18 PGA PGA包括私有SQL区会话内存区排序区 19 Oracle结构图 Oracle数据库服务器 实例 数据库 Oracle进程 SGA区 后台进程 服务进程 物理存储 逻辑存储 数据文件控制文件日志文件 初始化文件密码文件归档文件 表空间 段 区 块 20 后台进程 数据库写进程DBWR DatebaseWriter 日志写进程LGWR LogWrit
7、er 检查点进程CKPT CheckpointProcess 系统监控进程SMON SystemMonitor 进程监控进程PMON ProcessMonitor 21 请大家看一下书上 2 3Oracle进程 22 数据库写进程 DBWn DBWR DBWn进程负责将数据库缓存中的脏缓存块写入数据文件中 在出现以下情况时 DBWn开始工作系统发出检查点 checkpoint 脏缓冲区个数达到指定阈值 服务器进程不能找到自由缓冲区 23 DBWn DBWR 24 日志写进程 LGWR 当运行DML INSERT UPDATE DELETE 或DDL CREATE ALTER DROP 语句时
8、服务器进程首先将事务变化记载到重做日志缓冲区 然后才会将数据写入到数据高速缓存的相应缓冲区 并且重做日志缓冲区的内容将会被写入到重做日志文件中 以避免系统出现意外所带来的数据损失 25 LGWR 重做日志缓存循环使用 LGWR在以下几种情况下发生 在DBWR将脏数据写入数据文件之前 重做日志缓冲区已有三分之一填满 每隔3秒钟 提交事务 重做日志记录大小到1 26 思考 Oracle总是尽量将用户 最常使用的数据 保留在缓冲区内 以提高数据存取的效率 那么 如果仅将最不常用的数据写至数据文件 那么这些 经常使用 的数据反而没机会存回硬盘 Oracle系统使用检查点进程 CKPT 定时触发一次更新
9、数据文件的操作 27 检查点进程 CKPT CKPT进程负责向数据库发出检查点 检查点用于同步数据库的所有数据文件 控制文件和重做日志 28 SCN SystemChangeNumber 当运行Insert Update Delete以及其他涉及到数据库变化的语句时 Oracle会针对任何修改生成顺序递增的SCN值 并将该SCN值连同事务变化一起记载到重做日志缓冲区 SCN是用于记载数据库变化的唯一标识号 永远不会用尽 假定Update之前的SCN为100000 当执行了Update之后有三个数据块发生变化 则SCN会增加为100003 29 CKPT工作原理 当Oracle发出检查点时 系统
10、会将检查点时刻的SCN值写入到控制文件和数据文件头部 同时还会促使DBWR进程将所有脏缓冲区写入到数据文件中 30 检查点工作机制 在DBWR进程工作之前 LGWR进程首先将重做日志缓冲区内容写入到重做日志文件 即该时刻的SCN值会被写入重做日志 当CKPT进程工作的时候 会将当前时刻的SCN值写入数据文件和控制文件 在发出检查点时刻 数据文件 控制文件和重做日志的SCN值完全一致 31 系统恢复 当运行OracleServer时 在访问数据文件 控制文件和重做日志时 Oracle会定期检查并比较每种文件的SCN值 确定文件是否损坏 系统是否出现异常 最终确定系统是否需要进行恢复 32 思考
11、假定某用户执行了 insertintoDEPTvalues 50 SALES BeiJing 和 COMMIT 操作后 突然意外断电 那么事务变化记载到了哪种文件中 控制文件和数据文件的SCN值是否一致 控制文件和重做日志的SCN值是否一致 33 分析 在执行COMMIT操作时 后台进程LGWR要开始工作 所以事务变化被记载到重做日志中 因为只有在发出检查点时 才会将SCN值写入控制文件和数据文件头部 所以控制文件和数据文件的SCN值保持一致 并且存放的是先前检查点的SCN值 控制文件和数据文件的SCN值一致 与重做日志不一致 34 SMON 如果数据库未正常关闭 文件中数据不同步 因为最近检
12、查点SCN到COMMIT时间点SCN之间的事务变化都被记载到了重做日志中 所以在重新打开数据库之前 Oracle会自动执行这两个时间点之间的事务操作 并同步所有数据文件 控制文件和重做日志文件 然后才会打开数据库 该过程被称为应急恢复 正是由SMON完成的 SMON还负责在启动实例时清理临时段和合并区碎片 35 一致性处理 如果数据文件 控制文件 重做日志的当前SCN值完全一致 则系统会直接打开所有数据文件和重做日志 如果控制文件和数据文件的当前SCN值完全一致 并小于重做日志的当前SCN值 则需要进行实例恢复 如果控制文件和数据文件的当前SCN值不匹配 则表示数据文件或控制文件存在损坏 此时
13、需要进行介质恢复 以恢复损坏文件 36 思考 假定你在客户端运行SQL PLUS访问OracleServer 那么Oracle将在服务器端分配相应的服务器进程 假如你正常退出了SQL PLUS或该进程出现了意外情况 那么Oracle会如何处理服务器进程呢 系统当然要释放服务器进程所占用的资源 37 PMON Oracle如何确定用户进程是处于连接状态 断开连接还是异常状态 这个任务由PMON来完成 资源回收 锁 SGA PGA 状态恢复 将用户的操作回退到最近一次事务提交时的状态 38 一个典型的独立型Oracle实例 39 一个并行的Oracle服务器实例 OracleParallelSer
14、ver 40 Oracle结构图 Oracle数据库服务器 实例 数据库 Oracle进程 SGA区 后台进程 服务进程 物理存储 逻辑存储 数据文件控制文件日志文件 初始化文件密码文件归档文件 表空间 段 区 块 41 请大家看一下书上 3 1Oracle数据库的物理结构 42 Oracle数据库物理存储结构 Oracle数据库在物理上是存储于硬盘的各种文件 它是活动的 可扩充的 随着数据的添加和应用程序的增大而变化 43 数据文件 Oracle数据库模式对象中的所有数据均存储在数据文件中 也就是说 数据文件是Oracle数据库的唯一物理存储对象 所以每个Oracle数据库至少由一个数据文件
15、组成 数据文件用来存储数据库中的全部数据 如数据库表中的数据和索引数据 数据文件通常是后缀名为 dbf格式的文件 44 数据文件 数据文件实际上是一个操作系统文件 这些文件中的数据格式是只有Oracle数据库系统才能够正确识别的二进制格式 45 数据文件 Oracle数据库至少要包含一个数据文件 并且数据文件是表空间的物理组成元素 一个表空间可以包含多个数据文件 并且每个数据文件只能唯一地属于某个表空间 数据库 SYSTEM表空间 表空间一 表空间二 数据文件 逻辑组成 物理组成 46 重做日志文件 重做日志是用于记录数据库变化的物理文件 其目的是为了在出现意外时恢复Oracle数据库 数据库
16、至少要包含2个重做日志组 并且这些重做日志组是循环使用的 日志组一 日志组二 日志组三 47 归档 当数据库处于ARCHIVELOG 自动归档 模式时 在进行日志切换时 Oracle会自动将重做日志内容复制到归档日志中 48 多元化重做日志 用户可以为相同的日志文件建立一个文件组 将同一个文件组中的文件放在不同的磁盘上建立一些副本 LOG1A LOG2A LOG1B LOG2B 磁盘A 磁盘B LGWR 日志组1 日志组2 49 控制文件 每个Oracle数据库都有一个控制文件 名字通常为Ctr ctl格式 用以记录与描述数据库的物理结构 包括以下信息 Oracle数据库名称与建立时间 数据文件与重做日志文件名称及所在位置 日志记录序列号 logsequencenumber 数据库检查点信息 50 数据库的数据文件和重做日志文件均是一些操作系统文件 Oracle在操作数据库时 怎样将指定数据库中的这些文件同普通的操作系统文件和其他数据库文件区分开来 这正是数据库控制文件的功能 如果把数据文件比作一个仓库 那么重做日志文件就相当于该仓库的货物进出记录账本 控制文件就是该仓库的管理中心 控