CH04 Oracle体系结构.ppt

  1. 1、本文档共117页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle 逻辑结构 Oracle 逻辑结构决定了如何使用一个数据库的物理空间。 Oracle 的逻辑结构包括: 表空间(tablespaces) 段(segments) 扩展区(extents) 数据块(data block) Database Tablespace Segment Data Index Temp Rollback Extent Free Used Data Block Part of Part of 一、表空间 表空间是数据库中最大的逻辑单位。 ORACLE数据库由一个或多个表空间组成,不同表空间用于存放不同应用的数据。 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。 数据库对象(如表、视图等)存放在表空间中。 数据库、表空间、数据文件、数据库对象之间的关系 System表空间 每个Oracle数据库至少有一个表空间,就是system表空间。 当创建新的Oracle数据库时,必须说明构成system表空间的物理存储的数据文件名称、大小及其它特征。 System表空间的作用 存储数据字典 存储所有的PL/SQL程序的源代码和编译代码,如存储过程和函数、程序包、数据库触发器和对象类型方法。 数据库对象(如视图、同义词、序列)的定义 其它一些表空间 Users表空间 Rollback表空间 Temp表空间 Index表空间 Oracle的表空间 二、段 依照不同的数据处理性质,在数据表空间内划分出不同区域,以存放不同数据。这些区域称之为“段” (segment)。 数据段 索引段 临时段 回滚段 段由许多扩展区组合而成。 三、数据块 Oracle9i 数据库有几种数据储存体,其中最小的储存单元就称为数据块(data block)。 数据块大小是由初始化参数文件的 DB_BLOCK_SIZE 参数所决定,且在新建数据库之前就必须明确地定义。 必须将 DB_BLOCK_SIZE 设定为 OS.blocks(操作系统的磁盘读写区块)的整数倍。 在存取数据时是以data block为最小读取单位,而不是以OS block为单位。 从 Oracle9i 开始,数据库内可以设定多种数据块的大小,即标准块和非标准块。 四、扩展区 连续的数据块称为扩展区。 Oracle9i 在”配置”存储空间时,并不是以数据块为单位,而是采用扩展区的方式来配置空间。 扩展区示例 举例来说,假定准备在Oracle9i数据库内存放80 KB的数据,Oracle9i可以先配置一个「扩展区间」,其大小可为数据区块(8 KB)的5倍;然后视实际需要再配置第二个「扩展区间」(大小还是40 KB)。如此一来,只要两次的空间配置动作就可以存放80 KB的数据了! 试想,如果Oracle9i每次只配置8 KB的「数据块」让您存放数据,总共需要10次空间配置动作才能放满80 KB的数据,是不是比较没有效率呢? Oracle 逻辑结构图 相互关系 4.4 综合举例 综合举例 我们在讲解oracle服务器体系结构的最后,用一个实例来看一看:oracle服务器是如何响应客户的服务请求的。 这个例子是:从柜员机上,看看自己是否有足够的钱购买一瓶葡萄酒的过程为例,追踪该事务。 1、了解帐户余额 银行的这台机器运行一个称作SQL * Plus的客户进程。接受我们的请求,用下列SQL语句表示: select account_balance from bank_table where account_number=1112222333 and account_type=SAVINGS; 2、查询结果 SQL语句通过SGA传送到服务器进程。 服务器进程检查共享池中可执行程序的版本。如果该程序不在共享池中,它将放一个已完成语法分析的“准备运行”版本在那里,然后执行此程序。 存有帐户余额的数据块将从数据文件中读出并放到SGA的数据高速缓冲区中。 一旦帐户余额数据放进数据高速缓冲区中,客户进程即可读出此余额并将其返回至顾客。我们被告知余额为325美元。 3、购买 我们看到余额并请求提取25美元,客户机进程接收要求,并形成下列SQL语句: update bank_table set account_balance=300 where account_number=1112222333 and account_type=SAVINGS; 4、执行更新 1) 客户机进程通过SGA把该语句传给服务器进程。 2) 服务器进程在共享池中查找程序的可执行版本。如果找到,则转向第4)步,否则执行第3)步。 3)处理这条SQL语句,并将其可执行版本送入共享池。 4) 执行此SQL语句。 5) 该语句处理的数据在数据高速缓冲区中吗?是,则转向第7

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档