ORACLE体系结构(模板).doc
《ORACLE体系结构(模板).doc》由会员分享,可在线阅读,更多相关《ORACLE体系结构(模板).doc(30页珍藏版)》请在咨信网上搜索。
1、ORACLE体系结构(模板)302020年4月19日资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。概要 在本章里你能够了解以下内容 1、 ORACLE 实例包括内存结构与后台进程 2、 ORACLE 数据库物理操作系统文件的集合 3、 了解内存结构的组成 4、 了解后台进程的作用 5、 了解数据库的物理文件 6、 解释各种逻辑结构 一、 ORACLE事例 1、 ORACLE 实例 System Global Area(SGA) 和 Background Process 被成为数据库的实例。 2、 ORACLE 数据库 一系列物理文件的集合( 数据文件, 控制文件, 联机日志, 参
2、数文件等) 3、 系统全局共享区System Global Area(SGA)System Global Area 是一块巨大的共享内存区域, 她被看做是Oracle 数据库的一个大缓冲池, 这里的数据能够被ORACLE的各个进程共用。其大小能够经过如下语句查看: SQL select * from v$sga; NAME VALUE - - Fixed Size 39816 Variable Size Database Buffers 1.049E+09 Redo Buffers 327680 更详细的信息能够参考V$sgastat、 V$buffer_pool 主要包括以下几个部分: a、
3、 共享池(Shared pool) 共享池是SGA中最关键的内存片段, 特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能, 使系统停止, 太大的共享池也会有同样的效果, 将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又能够分为以下两个部分: SQL语句缓冲(Library Cache) 当一个用户提交一个SQL语句, Oracle会将这句SQL进行分析(parse), 这个过程类似于编译, 会耗费相对较多的时间。在分析完这个SQL, Oracle会把她的分析结果给保存在Shared pool的Library Cache中, 当数据库第二次执行该SQL时,
4、Oracle自动跳过这个分析过程, 从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。 下面举例说明parse的时间 SQL select count(*) from scpass ; COUNT(*) - 243 Elapsed: 00:00:00.08 这是在Share_pool 和Data buffer 都没有数据缓冲区的情况下所用的时间 SQL alter system flush SHARED_POOL; System altered. 清空Share_pool, 保留Data buffer SQL select count(*) from
5、 scpass ; COUNT(*) - 243 Elapsed: 00:00:00.02 SQL select count(*) from scpass ; COUNT(*) - 243 Elapsed: 00:00:00.00 从两句SQL 的时间差上能够看出该SQL 的Parse 时间约为00:00:00.02 对于保存在共享池中的SQL语句, 能够从V$Sqltext、 v$Sqlarea中查询到, 对于编程者来说, 要尽量提高语句的重用率, 减少语句的分析时间。一个设计的差的应用程序能够毁掉整个数据库的Share pool, 提高SQL语句的重用率必须先养成良好的变成习惯, 尽量使用
6、Bind变量。 数据字典缓冲区(Data Dictionary Cache) 显而易见, 数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池, 供ORACLE内部使用, 没有什么能够说的。 b、 块缓冲区高速缓存(Database Buffer Cache) 这些缓冲是对应所有数据文件中的一些被使用到的数据块。让她们能够在内存中进行操作。在这个级别里没有系统文件, 户数据文件, 临时数据文件, 回滚段文件之分。也就是任何文件的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成, 并由DBWR进程将修改后的数据写入磁盘。 这个缓冲区的块基本上在两个不同的列表中管理。一个是块的”脏”表
7、(Dirty List), 需要用数据库块的书写器(DBWR)来写入, 另外一个是不脏的块的列表(Free List), 一般的情况下, 是使用最近最少使用(Least Recently Used,LRU)算法来管理。 块缓冲区高速缓存又能够细分为以下三个部分( Default pool,Keep pool,Recycle pool) 。如果不是人为设置初始化参数(Init.ora), ORACLE将默认为Default pool。 由于操作系统寻址能力的限制, 不经过特殊设置, 在32位的系统上, 块缓冲区高速缓存最大能够达到1.7G, 在64位系统上, 块缓冲区高速缓存最大能够达到10G。
8、 c、 重做日志缓冲区(Redo log buffer) 重做日志文件的缓冲区, 对数据库的任何修改都按顺序被记录在该缓冲, 然后由LGWR进程将它写入磁盘。这些修改信息可能是DML语句, 如(Insert,Update,Delete), 或DDL语句, 如(Create,Alter,Drop等)。 重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多, 因此重作日志缓冲区能够加快数据库的操作速度, 可是考虑的数据库的一致性与可恢复性, 数据在重做日志缓冲区中的滞留时间不会很长。因此重作日志缓冲区一般都很小, 大于3M之后的重作日志缓冲区已经没有太大的实际意义。 d、 Java
9、程序缓冲区(Java Pool) Java 的程序区, Oracle 8I 以后, Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。 e、 大池(Large Pool) 大池的得名不是因为大, 而是因为它用来分配大块的内存, 处理比共享池更大的内存, 在8.0开始引入。 下面对象使用大池: MTS在SGA的Large Pool中分配UGA 语句的并行查询(Parallel Executeion of Statements)允许进程间消息缓冲区的分配, 用来协调并行查询服务器 备份(Backup)用于RMA
10、N磁盘I/O缓存 4、 后台进程(Background process) 后台进程是Oracle的程序, 用来管理数据库的读写, 恢复和监视等工作。Server Process主要是经过她和user process进行联系和沟通, 并由她和user process进行数据的交换。在Unix机器上, Oracle后台进程相对于操作系统进程, 也就是说, 一个Oracle后台进程将启动一个操作系统进程; 在Windows机器上, Oracle后台进程相对于操作系统线程, 打开任务管理器, 我们只能看到一个ORACLE.EXE的进程, 可是经过另外的工具, 就能够看到包含在这里进程中的线程。 在Un
11、ix上能够经过如下方法查看后台进程: ps ef | grep ora_ # ps -ef | grep ora_ | grep XCLUAT oracle 29431 1 0 Sep 02 ? 2:02 ora_dbwr_SID oracle 29444 1 0 Sep 02 ? 0:03 ora_ckpt_SID oracle 29448 1 0 Sep 02 ? 2:42 ora_smon_SID oracle 29442 1 0 Sep 02 ? 3:25 ora_lgwr_SID oracle 29427 1 0 Sep 02 ? 0:01 ora_pmon_SID a、 Oracl
12、e系统有5 个基本进程她们是 DBWR(数据文件写入进程) LGWR(日志文件写入进程) SMON(系统监护进程) PMON(用户进程监护进程) CKPT(检查点进程,同步数据文件, 日志文件,控制文件) b、 DBWR 将修改过的数据缓冲区的数据写入对应数据文件 维护系统内的空缓冲区 这里指出几个容易错误的概念: 当一个更新提交后,DBWR把数据写到磁盘并返回给用户提交完成. DBWR会触发CKPT 后台进程 DBWR不会触发LGWR 进程 上面的概念都是错误的. DBWR是一个很底层的工作进程, 她批量的把缓冲区的数据写入磁盘。和任何前台用户的进程几乎没有什么关系, 也不受她们的控制。至于
13、DBWR会不会触发LGWR和CKPT进程, 我们将在下面几节里讨论。 DBWR工作的主要条件如下 DBWR 超时 系统中没有多的空缓冲区用来存放数据 CKPT 进程触发DBWR 等 c、 LGWR 将重做日志缓冲区的数据写入重做日志文件, LGWR是一个必须和前台用户进程通信的进程。当数据被修改的时候, 系统会产生一个重做日志并记录在重做日志缓冲区内。这个重做日志能够类似的认为是以下的一个结构: SCN= 数据块ID 对象ID=0801 数据行=02 修改后的数据=0011 提交的时候, LGWR必须将被修改的数据的重做日志缓冲区内数据写入日志数据文件, 然后再通知前台进程提交成功, 并由前台
14、进程通知用户。从这点能够看出LGWR承担了维护系统数据完整性的任务。 LGWR 工作的主要条件如下 用户提交 有1/3 重做日志缓冲区未被写入磁盘 有大于1M 重做日志缓冲区未被写入磁盘 超时 DBWR需要写入的数据的SCN号大于LGWR 记录的SCN号, DBWR 触发LGWR写入 d、 SMON 工作主要包含 清除临时空间 在系统启动时, 完成系统实例恢复 聚结空闲空间 从不可用的文件中恢复事务的活动 OPS中失败节点的实例恢复 清除OBJ$表 缩减回滚段 使回滚段脱机 e、 PMON 主要用于清除失效的用户进程, 释放用户进程所用的资源。如PMON将回滚未提交的工作, 释放锁, 释放分配
15、给失败进程的SGA资源。 f、 CKPT 同步数据文件, 日志文件和控制文件, 由于DBWR/LGWR的工作原理, 造成了数据文件, 日志文件, 控制文件的不一至, 这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。 CKPT工作的主要条件如下 在日志切换的时候 数据库用immediate ,transaction , normal 选项shutdown 数据库的时候 根据初始话文件LOG_CHECKPOINT_INTERVAL、 LOG_CHECKPOINT_TIMEOUT、 FAST_START_IO_TARGET 的设置的数值来确定 用户触发 以下进程的启动需要手工配
16、置 g、 ARCH 当数据库以归档方式运行的时候, Oracle会启动ARCH进程, 当重做日志文件被写满时, 日志文件进行切换, 旧的重做日志文件就被ARCH进程复制到一个/多个特定的目录/远程机器。这些被复制的重做日志文件被叫做归档日志文件。 h、 RECO 负责解决分布事物中的故障。Oracle能够连接远程的多个数据库, 当由于网络问题, 有些事物处于悬而未决的状态。RECO进程试图建立与远程服务器的通信, 当故障消除后, RECO进程自动解决所有悬而未决的会话。 i、 服务进程Server Process 服务进程的分类 专用服务进程(Dedicated Server Process)
17、 一个服务进程对应一个用户进程 共享服务进程(MultiTreaded Server Process) 一个服务进程对应多个用户进程, 轮流为用户进程服务。 PGA & UGA PGA = Process Global Area UGA = User Global Area 她保存了用户的变量、 权限、 堆栈、 排序空间等用户信息, 对于专用服务器进程, UGA在PGA中分配。对于多线程进程, UGA在Large pool中分配。 j、 用户进程User Process 在客户端, 将用户的SQL 语句传递给服务进程 5、 一个贯穿数据库全局的概念-系统改变号SCN(System Change
18、 Number) 系统改变号, 一个由系统内部维护的序列号。当系统需要更新的时候自动增加, 她是系统中维持数据的一致性和顺序恢复的重要标志。 a. 查询语句不会使SCN增加, 就算是同时发生的更新, 数据库内部对应的SCN也是不同的。这样一来就保证了数据恢复时候的顺序。 b. 维持数据的一致性, 当一 二、 ORACLE 数据库 ORACLE数据库的组成物理操作系统文件的集合。主要包括以下几种。 1、 控制文件( 参数文件init.ora记录了控制文件的位置) 控制文件包括如下主要信息 数据库的名字, 检查点信息, 数据库创立的时间戳 所有的数据文件, 联机日志文件, 归档日志文件信息 备份信
19、息等 有了这些信息, Oracle就知道那些文件是数据文件, 现在的重做日志文件是哪些, 这些都是系统启动和运行的基本条件, 因此她是Oracle运行的根本。如果没有控制文件系统是不可能启动的。控制文件是非常重要的, 一般采用多个镜相复制来保护控制文件, 或采用RAID来保护控制文件。控制文件的丢失, 将使数据库的恢复变的很复杂。 控制文件信息能够从V$Controlfile中查询获得 2、 数据文件( 数据文件的详细信息记载在控制文件中) 能够经过如下方式查看数据文件 SQL select name from v$datafile; NAME - /u05/dbf/PROD/system_0
20、1.dbf /u06/dbf/PROD/temp_01.dbf /u04/dbf/PROD/users_01.dbf /u09/dbf/PROD/rbs_01.dbf /u06/dbf/PROD/applsys_indx_01.dbf /u05/dbf/PROD/applsys_data_01.dbf 从以上能够看出, 数据文件大致能够分为以下几类: i. 系统数据文件(system_01.dbf) 存放系统表和数据字典, 一般不放用户的数据, 可是用户脚本, 如过程, 函数, 包等却是保存在数据字典中的。 名词解释: 数据字典 数据字典是一些系统表或视图, 她存放系统的信息, 她包括数据库版
21、本, 数据文件信息, 表与索引等段信息, 系统的运行状态等各种和系统有关的信息和用户脚本信息。数据库管理员能够经过对数据字典的查询, 就能够了解到Oracle的运行状态。 ii. 回滚段文件(rbs_01.dbf) 如果数据库进行对数据的修改, 那么就必须使用回滚段, 回滚段是用来临时存放修改前的数据(Before Image)。回滚段一般都放在一个单独的表空间上( 回滚表空间) , 避免表空间碎片化, 这个表空间包含的数据文件就是回滚数据文件。 iii. 临时数据文件(temp_01.dbf) 主要存放用户的排序等临时数据, 与回滚段相似, 临时段也容易引起表空间碎片化, 而且没有办法在一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 体系结构 模板
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。