一、Oracle数据库的体系结构
Oracle 体系结构简要如下图
EM(Enterprise Manager)是Oracle实际的基于Java的管理工具,可通过浏览器访问数据库的管理界面,SQL PLUS可以访问数据库的数据信息。
二、SQL语句执行过程
1、一些背景知识
(1)ORACLE数据库启动的时候,Oracle首先在内存中划出一段空间启动一堆进程,进程以及该内存区域统称为Oracle实例
(2)Oracle实例关联的基本内存结构包括:
(3)系统全局区(SGA)由所有服务器进程和后台进程共享,对于所有进程来说,内存空间共享,实际工作中会有一定区域的分配
(4)程序全局区(PGA)专用于某一个服务进程或者后台进程,每一个进程使用一个PGA,Oracle新版本,存在一个很大空间的PGA空间,每启动一个进程,会将一定PGA空间分给对应的进程,重点是前台进程和PGA的关系
(5)Oracle数据库三种文件组成
- .ctl文件 控制文件
- .log文件 日志文件
- .dbf 数据文件
2、相关知识
Server process是实例的进程,主要在SQL处理时执行部分功能
SQL语句的执行过程
(1)客户端输入SQL语句
(2)SQL语句经过网络到达数据库实例
(3)Server process拿到SQL语句之后进行解析,首先应该是去shared pool查找是否存在对应的语句以及执行计划,如果没有找到,server process自己解析进行下一步去执行解析,解析步骤如下:
- SQL process判断语句语法是否正确
- 访问的表是否具有访问权限
- SQL语句涉及的表以及视图数据库有没有
- SQL语句应该如何执行->寻找最优的执行方法,然后生成执行计划
(4)server process根据SQL语句的执行计划去DBF取出数据,放到buffer cache,然后返给用户,在此之前是server process首先寻找的是buffer cache,如果存在则直接在buffer cache取出数据。
三、SQL语句解析类型——硬解析和软解析
1、硬解析和软解析
Oracle数据信息全部存储在数据字典中,Oracle的解析有两种,软解析以及硬解析
- 硬解析 hard parse 没有缓存进入硬解析
- 硬解析内容:语法错误,对象存不存在,用户是否有操作权限
- 硬解析在n种执行方案中找出最优的执行方案最消耗资源以及损耗时间
- 软解析 soft parse 有缓存
- SQL语句语法
- SQL所对应一些对象的权限满不满足
软硬解析的区别在于,软解析不必挑选最优方案
均要频繁访问数据字典信息(对象权限信息),所以oracle将数据字典信息放置到 share pool中跟library cache放置在一块
2、shared pool功能
shared pool 缓存SQL语句以及SQL语句的执行计划
- parse 解析
- excel 执行
- fetch 取回数据
3、shared pool组成
shared pool是一块内存池,内部被分成比较小的区块,
- free部分 空闲部分
- library cache 库缓存,保存的是SQL语句以及SQL语句的执行计划
- row cache 缓存数据字典信息
4、SQL语句
(1)查看各个内存块的大小
- library cache
- select * from v$sgastat a where a.Name='library cache
- free memory
- select * from v$sgastat a where a.pool='shared pool'and a.name='free memory';
- row cache
- select * from v$sgastat a where a.Name='row cache';
(2)SQL
select name,value from v$sysstat where name like 'parse%';
整理不易,喜欢的朋友点个赞呗!!!