一些背景知识
- ORACLE数据库启动的时候,Oracle首先在内存中划出一段空间启动一堆进程,进程以及该内存区域统称为Oracle实例
- Oracle实例关联的基本内存结构包括:
系统全局区(SGA)由所有服务器进程和后台进程共享,对于所有进程来说,内存空间共享,实际工作中会有一定区域的分配
程序全局区(PGA)专用于某一个服务进程或者后台进程,每一个进程使用一个PGA,Oracle新版本,存在一个很大空间的PGA空间,每启动一个进程,会将一定PGA空间分给对应的进程,重点是前台进程和PGA的关系 - Oracle数据库三种文件组成
- .ctl文件 控制文件
- .log文件 日志文件
- .dbf 数据文件
相关知识
Server process是实例的进程,主要在SQL处理时执行部分功能
SQL语句的执行过程
- 客户端输入SQL语句
- SQL语句经过网络到达数据库实例
- Server process拿到SQL语句之后进行解析,首先应该是去shared pool查找是否存在对应的语句以及执行计划,如果没有找到,server process自己解析进行下一步去执行解析,解析步骤如下:
1. SQL process判断语句语法是否正确
2. 访问的表是否具有访问权限
3. SQL语句涉及的表以及视图数据库有没有
4. SQL语句应该如何执行->寻找最优的执行方法,然后生成执行计划 - server process根据SQL语句的执行计划去DBF取出数据,放到buffer cache,然后返给用户,在此之前是server process首先寻找的是buffer cache,如果存在则直接在buffer cache取出数据,