温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle 11g R2 体系结构

发布时间:2020-07-10 06:07:53 来源:网络 阅读:346 作者:初心WHQ 栏目:关系型数据库

安装oracle软件----创建数据库----在数据库中创建表----表里存储信息---这些表文件需要存储在物理硬盘上面。

假如有一个用户(这个用户可以是远程用户,也可以是本地的,也可以是一个应用程序)连接到oracle数据库上面,用户是不能直接连接在硬盘上存储的数据文件,所以在oracle中要运行一个实例,实例并不是保存在硬盘上面的,实例是内存的一部分,而库和表文件是存放在硬盘上面的,用户不能直接访问库里面的数据,只能访问实例,实例是一个特殊的内存块,只有实例能和数据库直接通信,在咱们的实验环境中实例和数据库是在同一台机器上,我们称之为单实例环境,对于用户而言所有的操作都是在实例中完成的,oracle为实例划分了一个内存块,这个内存块我们称之为SGA,其实oracle实例启动的时候,将会分配一个SGA系统全局区并启动一些oracle的后台进程(守护进程)。

SGA核心组件介绍:

在oracle中内存=SGA+PGA

一个实例只能有一个SGA,所有的服务器进程和后台进程都共享一个SGA

PGA:

我们先看一下一个select语句是如何被执行的?

如果hr用户写了一个select * from scott.emp;

第一步:先做编译,编译包含了语法的检查和语义的检查。

第二步:如果编译没有问题会进入shared pool(共享池 )中,而shared pool 是由library cache和data dictionary cache(数据字典缓存)组成。Sql语句第一时间会进入librarycache中,即library cache中会存放被编译过的正确的sql语句,仅仅是sql语句而已。library cache中没有缓存的sql语句需要进行硬解析(即需要耗费设备的I/0资源从硬盘读取)。假设library cache中有这个sql语句,就不需要做硬解析,接着会查 data dictionary cache。data dictionary cache中缓存了权限和对象数据及属性,所有data dictionary cache检查hr用户是否对scott.emp表是否具有访问权限,如果有权限继续往下执行,如果没有权限,直接给hr用户返回一个结果。如果一条语句从来都没有被执行过,这条语句首先被缓存在share pool中的library cache中,下一次被执行的时候直接从share pool中取sql语句。存放sql语句也需要占用空间,share pool的空间也是有限的,为了防止share pool空间不够用,采用先进先出的规则即后执行的sql语句会覆盖先执行的sql语句来释放空间,当然share pool的空间越大越好。

我们通过企业管理器来查看share pool的相关信息
Oracle 11g R2 体系结构
Oracle 11g R2 体系结构
在sql plus中可以用以下方式查看,图中“0”表示自动化管理
Oracle 11g R2 体系结构
可以从v$sgainfo中查看shared pool size

SQL> select name,bytes/1024/1024||'MB' from v$sgainfo;

Shared Pool Size

256MB

Large Pool Size

16MB

Java Pool Size

16MB

第三步:data buffer cache现在hr用户可以访问scott.emp表了,databuffer cache的作用就是从磁盘或存储中将数据块调入内存,缓存在buffer cache中。

举例:

用户第一次访问scott.emp的内容

SQL> set timing on

SQL> select * from scott.emp;第一次执行sql语句

已选择14行。

已用时间: 00: 00: 00.05

SQL> /再次执行上一条命令所用的时间为00: 00: 00.00

已选择14行。

已用时间: 00: 00: 00.00

总结:buffer cache缓存数据本身,library cache缓存sql语句本身。

可以通过show parameter db_cache_size查看buffer cache的大小
Oracle 11g R2 体系结构
第四步:redo log buffer<重做日志缓冲区>当用户执行insert,update,delete,create,alter等操作后,数据发生了变化,这些变化了的数据写入数据缓冲区(buffer cache)之前,先写入重做日志缓冲区,同时变化之前的数据也放入重做日志缓存中,这样做,是为了保证在数据恢复时oracle就知道哪些事务需要提交,哪些事务需要撤回。

如果对此文有什么问题的话,请加下面微信一起探讨
Oracle 11g R2 体系结构

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI