oracle体系结构.doc
《oracle体系结构.doc》由会员分享,可在线阅读,更多相关《oracle体系结构.doc(45页珍藏版)》请在咨信网上搜索。
1、oracle体系结构532020年4月19日资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。第1章Oracle的体系结构这一章的内容是比较枯燥的, 但它是理解以后章节的基础。如果有读者在开始时有些内容没有完全理解也不用太着急, 能够继续学习后面的内容, 等使用了一段时间Oracle系统之后, 一些概念就变得容易理解了。1.1 Oracle引入复杂的体系结构的原因数据库管理系统引入非常复杂的内存和外存体系结构的主要原因是有效地管理稀有的系统资源。资源不足不只是数据库管理系统所面正确。其实, 在我们五千年的人类发展历史中, 我们的祖先们一直在同资源不足作斗争。历史上粮食和土地等一直都是
2、稀有资源, 还记得我们的祖先们用什么方法来管理这些稀有资源的吗? 用战争, 我们的先民们为粮食而战, 为土地而战; 我们当代人类为石油而战, 为市场而战, 为金钱而战。那么在Oracle数据库中什么是稀有资源? 它们又是如何来管理的呢? 如果读者接触过数据库或读过相关的书, 应该还有印象, 数据库的数据量和输入/输出量都是相当大的, 而这些数据一般都存在硬盘( 外存) 上, 因此硬盘为数据库的一类资源。为了方便介绍, 图1-1给出了硬盘的内部结构示意图。图 1-1从图1-1能够看出, 所有硬盘上数据的访问都是靠硬盘的旋转和磁头的移动来完成的, 这种旋转和移动是机械运动。因为在计算机中所有数据的
3、修改操作必须在内存中进行, 因此内存也是数据库的一类资源。表1-1给出内存和外存的简单比较以帮助读者理解本书的内容。表 1-1内 存外存( 硬盘) 数据访问速度很快很慢存储的数据临时永久价钱很贵相当便宜从表1-1的比较可知, 内存的数据访问速度要比外存( 硬盘) 快得多。这是因为内存的数据访问是电子速度, 而硬盘的数据访问主要取决于机械速度。也就是说, 如果一个数据库管理系统能够使绝大多数( 如90%以上) 数据操作在内存中完成, 那么这一数据库管理系统的效率将非常高。可是由于内存中的数据在断电或出现系统故障时会消失, 因此数据库管理系统还必须保证, 所有的数据改动都必须及时写到硬盘上, 以保
4、障不会丢失数据; 即使数据库崩溃之后, 所有提交过的数据都能得到完全恢复。尽管能够经过加大内存来提高数据库管理系统的效率, 但在大多数情况下信息系统的开发和维护经费都是有限的。经过以上的讨论, 读者应该意识到, 在数据库管理系统中最宝贵的稀有资源是内存。为了高效地使用内存这种稀有资源, 同时保证不会丢失任何数据库中的数据, Oracle数据库管理系统引入了一个非常复杂的体系结构。1.2 Oracle数据库中常见的术语为了讲解容易, 在详细讨论Oracle体系结构之前, 先介绍一下相关的名词和术语。在这里只给出实用的解释, 并不追求学术上的严谨。l 进程( process) : 一段在内存中正在
5、运行的程序。如果没有学过计算机操作系统相关课程, 能够把进程想象成能够自动完成某些特定任务的任何东西, 如训练有素的狗狗、 跑龙套的等。l 后台进程( background process) : 进程的一种, 在内存中运行时, 不占显示, 而且它的优先级比前台进程低。能够只有一个前台进程, 但能够有多个后台进程。l 缓冲区( buffer) : 一段用来临时存储数据的内存区。l 主机( host) : 计算机系统的另一个称呼。l 服务器( server) : 一台在网络中向其它计算机系统提供一项或多项服务的主机。l 客户机( client) : 一台使用由服务器( server) 提供服务的计
6、算机系统。1.3 Oracle数据库管理系统的体系结构为了能使Oracle数据库管理系统满足商业用户的要求, Oracle引入了如图1-2所示的复杂的体系结构。图 1-2以上这个复杂的体系结构主要包括Oracle服务器( server) ( 而服务器又是由Oracle实例( instance) 和Oracle数据库( database) 组成) , 还包括一些其它的关键文件、 用户进程和服务器进程等。Oracle服务器( server) 由Oracle实例( instance) 和Oracle数据库( database) 两大部分组成。它是一个数据库管理系统, 提供了一致、 开放和多样的信息管
7、理的方法和途径。服务器中的一些结构并不在处理SQL语句时使用, 它们是为了改进数据库系统的效率或数据的恢复等而设计的。1.4 Oracle服务器( server) Oracle服务器( server) 能够有以下3种安装方式。( 1) 基于主机方式: 在此种配置下, 用户直接在安装了数据库的计算机上登录Oracle数据库。( 2) 客户端-服务器( client-server) ( 两层模型) 方式: 数据库和客户终端分别安装在不同的计算机上, 用户经过网络从个人计算机( 客户端) 上访问数据库。( 3) 客户端-应用服务器-服务器( client- application server-se
8、rver) ( 三层模型) : 用户首先从自己的个人计算机登录应用服务器, 再经过应用服务器访问真正的数据库。1.5 Oracle实例( instance) Oracle实例( instance) 是一种访问数据库的机制, 它是由内存结构( SGA) 和一些后台进程( 5个进程) 组成的。它的内存结构也称为系统全局区( system global area, SGA) 。系统全局区是实例的最基本的部件之一。实例的后台进程中有5个是必须的, 即这5个后台进程中的任何一个没有启动, 实例将自动关闭。这5个后台进程分别是SMON、 PMON、 DBWR、 LGWR和CKPT。在OCP考题中有时可能会
9、问哪些后台进程是可选的? 除了这5个都是可选的。实例一启动就分配系统全局区和启动所需的后台进程。这里应该指出的是, 每个实例只能操作一个数据库, 而且它不能够操作其它的数据库。可是反过来是不成立的, 因为一个数据库能够同时被几个实例操作( 在Oracle集群中) 。系统全局区( SGA) 中包含了以下几个内存结构: 共享池( shared pool) 、 数据库高速缓冲区( database buffer cache) 、 重做日志缓冲区( redo log buffer) 和其它的一些结构( 如锁和统计数据) 等。1.6 Oracle数据库Oracle数据库是数据的一个集合, Oracle把
10、这些数据作为一个完整的单位来处理。Oracle数据库也叫做物理( 外存) 结构, 它为数据库信息提供了真正的物理存储, 它是由以下3类操作系统文件组成的。( 1) 控制文件( control files) : 包含了维护和校验数据库一致性所需的信息。( 2) 重做日志文件( redo log files) : 包含了当系统崩溃后进行恢复所需记录的变化信息。( 3) 数据文件( data files) : 包含了数据库中真正的数据。1.7 Oracle其它的关键文件除了以上3类数据库文件之外, Oracle服务还需要其它的一些文件, 这些文件不属于数据库。其中包括: l 初始化参数文件( par
11、ameter files) : 定义了实例的特性, 如系统全局区中一些内存结构的大小、 DBWR的个数。l 密码文件( password files) : 包含了数据库管理员或操作员用户在启动和关闭实例时所需的密码。虽然Oracle数据库提供了相当完善的安全管理机制, 可是在Oracle数据库没有开启时如何验证要启动数据库的人是真正的数据库管理员或操作员呢? 这就是Oracle引入密码文件的原因。l 归档重做日志文件( archived redo log files) : 是重做日志文件的脱机备份。在系统崩溃后进行恢复时可能需要这些文件。1.8 建立与Oracle实例的连接Oracle实例(
12、instance) 是用Oracle的STARTUP命令启动的( 该命令将在后面的章节中详细介绍) 。它的启动就意味着SGA的所有内存结构都已生成, 所有必须的后台进程都已在内存中运行。那么此时用户又是如何使用Oracle数据库呢? 用户在向Oracle数据库发出SQL命令之前必须与实例( instance) 建立连接。用户启动一个工具如SQL*Plus, 或运行一个利用Oracle工具开发的应用程序, 如用Oracle Forms开发的应用程序时, 这个工具或应用程序就被作为一个用户进程来执行。用户进程是不能直接访问数据库的。在专用连接的情况下( 也是默认) , 当一个用户登录Oracle服
13、务器时( 如在SQL*Plus的提示下输入用户名和密码) , 如果登录成功( 即用户名和密码都准确无误) , Oracle就在服务器所运行的计算机上创立一个服务器进程。在这种连接下, 该服务器进程只能为这个用户进程提供服务。用户进程与服务器进程是一对一的关系。用户进程向服务器进程发请求, 服务器进程对数据库进行实际的操作并把所得的结果返回给用户进程。就仿佛一个大富豪想炒股票, 但又不懂股票市场的运作, 于是她请了一位股票经纪人。这位富豪就相当于用户进程, 而股票经纪人就相当于服务器进程, 股票市场就相当于Oracle数据库。一个用户每次登录Oracle服务器, 如果成功, 该用户就与Oracl
14、e服务器建立了连接, 而这种连接又叫做会话。一个会话始于用户成功地登录Oracle服务器, 终止于用户退出或非正常终止连接。一个数据库用户可能同时有多个会话存在, 即用相同的用户名和密码同时登录多次。1.9 各种不同的连接方式连接是用户进程与Oracle服务器之间的通信路径。与Oracle服务器( server) 的3种安装方式相对应, 一个数据库用户可能用以下3种方式之一与Oracle服务器连接。( 1) 基于主机方式: 此时的用户进程与服务器进程是在同一台计算机的相同的操作系统上的, 用户进程与Oracle服务器之间的通信路径是经过操作系统内部进程通信( inter process com
15、munication, IPC) 机制来建立的。( 2) 客户端-服务器( client-server) ( 两层模型) 方式: 用户进程与Oracle服务器之间的通信是经过网络协议( 如TCP/IP) 来完成的。( 3) 客户端-应用服务器-服务器( client- application server- server) ( 三层模型) : 用户的个人计算机经过网络与应用服务器或网络服务器通信, 而这个应用服务器或网络服务器又是经过网络与运行数据库的计算机相连的。例如, 用户使用浏览器经过网络运行NT服务器上的应用程序, 而NT服务器又从运行在UNIX主机上的Oracle数据库中提取数据。以
16、上所介绍的连接是用户进程与服务器进程的一对一的连接, 也称为专用服务器连接( dedicated server connection) 。除了这种连接外, 在联机事务处理( online transaction processing, OLTP) 系统的配置时还有另外的一种连接, 它在Oracle9i之前的版本中称为多线程( MTS) 连接, 在Oracle 9i或以后的版本中称为共享服务器( shared server) 连接。有关这种连接在Oracle的网络和调优的书籍中介绍。1.10 服务器进程当Oracle创立一个服务器进程的同时要为该服务器进程分配一个内存区, 这个内存区称为程序全局
17、区( program global area, PGA) 。与SGA不同, PGA是一个私有的内存区, 是不能共享的, 是只属于一个进程的。它随着进程的创立而被分配, 随着进程的终止而被回收。在专用服务器进程的配置情况下, 程序全局区包括了以下结构: ( 1) 排序区( sort area) : 用于处理SQL语句所需的排序。( 2) 游标状态区( cursor state) : 用于指示会话当前所使用的SQL语句的处理状态。( 3) 会话信息区( session information) : 包括了会话的用户权限和优化统计信息。( 4) 堆栈区( stack space) : 包括了其它的会
18、话变量。如果是共享服务器进程或多线程的配置, 以上这些结构除了堆栈区外大部分将存在SGA中。如果有large pool, 它们就会被存在large pool, 否则它们就会被存在共享池中。1.11 Oracle执行SQL查询语句的步骤如果用户在SQL*Plus下输入了如下的查询语句: SELECT * FROM dept;, 那么Oracle又是如何来处理这个语句的呢? SQL语句的执行主要由用户进程与服务器进程来完成, 其它的一些进程可能要辅助完成这一过程。查询语句与其它的SQL语句有所不同, 如果一个查询语句执行成功, 它要返回查询的结果。而其它的SQL语句只是返回执行成功或失败的信息。查
19、询语句的处理主要包括以下3个阶段: 编译( parse) 、 执行( execute) 和提取数据( fetch) 。l 编译( parse) : 在进行编译时, 服务器进程会将SQL语句的正文放入共享池( shared pool) 的库高速缓存( library cache) 中并将完成以下处理: 首先在共享池中搜索是否有相同的SQL语句( 正文) , 如果没有就进行后续的处理。 检查该SQL语句的语法是否正确。 经过查看数据字典来检查表和列的定义。 对所操作的对象加编译锁( parse locks) 以便在编译语句期间这些对象的定义不能被改变。 检查所引用对象的用户权限。 生成执行该SQL
20、语句所需的优化的执行计划( 执行步骤) 。 将SQL语句和执行计划装入共享的SQL区。以上的每一步操作都是在处理正确时才进行后续的处理。如果不正确, 就返回错误。l 执行( execute) : Oracle服务器进程开始执行SQL语句是因为它已获得了执行SQL语句所需的全部资源和信息。l 提取数据( fetch) : Oracle服务器进程选择所需的数据行, 并在需要时将其排序, 最后将结果返回给用户( 进程) 。1.12 共享池( shared pool) SGA中的共享池( shared pool) 是由库高速缓存( library cache) 和数据字典高速缓存( data dict
21、ionary cache) 两部分所组成。服务器进程将SQL( 也可能是PL/SQL) 语句的正文和编译后的代码( parsed code) 以及执行计划都放在共享池( shared pool) 的库高速缓存中。在进行编译时, 服务器进程首先会在共享池中搜索是否有相同的SQL或PL/SQL语句( 正文) , 如果有就不进行任何后续的编译处理, 而是直接使用已存在的编译后的代码和执行计划。U提示: 库高速缓存包含了共享SQL区和共享PL/SQL区两部分, 它们分别存放SQL和PL/SQL语句以及相关的信息。要想共享SQL或PL/SQL语句, 第一, 库高速缓存( library cache) 要
22、足够大, 因为只有这样要共享的SQL或PL/SQL语句才不会很快地淘汰出内存。第二, SQL或PL/SQL语句要是能共享的通用代码( generic code) , 因为Oracle是经过比较SQL或PL/SQL语句的正文来决定两个语句是否相同的, 只有当两个语句的正文完全相同时Oracle才重用已存在的编译后的代码和执行计划。这里经过以下的实例来进一步解释这一点。读者猜如下的两个SQL语句是否相同? select * from emp where sal = 1500; 和select * from emp where sal = 1501;答案是不相同的( 在Oracle默认的配置下, O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 体系结构
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。