一.oracle组成:
oracle由以下三个主要的组件组成:
1.文件:主要包含参数文件,数据文件,临时数据文件和重做日志文件.
2.System Global Area(SGA)的内存结构:主要包括SGA,PGA,UGA
3.物理进程与线程:包括 服务器进程,后台进程与从属进程
二.oracle连接模式:
专用服务器模式:在用户登录时为用户分配一个单独的服务器进程,自始至终都由该进程为用户提供服务.
共享服务器模式(MTS):类似于连接池,oracle服务器提供一组连接池,对于所有的服务请求都从池中分配一个进程来服务.等响应完成后,会把进程归还到池中.该模式及为少用,以后会介绍什么情况下使用MTS
MTS工作模式:客户端发送请求->分配器把请求放入请求队列中->等待空闲服务器进程处理->处理完成->放入响应队列-->分配器监控该队列,并把结果发送给客户端.
三.文件:
3.1 参数文件:其中最重要的参数文件为"数据库参数文件",一般名称为init<sid>.ora,在该文件中记录一数据库实例名及控制文件的位置.
3.2 数据文件:用来存储数据的文件,一般情况下,一个数据库至少包含两个数据文件,一个是系统数据文件,一个是用户数据文件.一个数据库包含一个或多个表空间,表空间又由多个段(segment)组成,段是数据库对象存储的空间,比如数据库表存储在表段中,索引存在于索引段中,还包括其它回滚段,临时段,聚簇段等.段本身由扩展(extent)组成,扩展是一个在文件上的连续的空间.扩展又由块(block)组成.块是oracle中空间分配的最小单元.块是oracle存放数据行,索引项,临时排序结果的地方.块的大小在数据库创建时就已确定且无法更改.块上分为块头,空白区和数据区,块头主要包括块类型(表块,索引块等),事务(活动的过时的)信息等.数据区用来存放数据.
3.3 临时文件:特殊的数据文件,当内存不足以在RAM中保存一个大规模排序的中间结果或结果集时,oracle使用临时文件来存储,推荐显示的创建一个临时文件,而不是当需要时由系统把一个永久的表空间变为一个临时表空间.
3.4 控制文件:包含oracle需要的其它文件的目录.控制文件会告诉系统数据文件和重做日志的位置.
3.5 重做日志文件(redo log):数据库的事务日志,仅在数据恢复时才使用.事实上,oracle中的每一个操作都生成重做日志.重做日志分为联机重做日志和归档重做日志.联机日志有至少两个,切换使用,记录当前的事务信息.当其中一个写满后,会做日志切换,并把满的日志写入归档日志,因此,归档日志是完全的日志.而联机日志只是部分日志.
(继续完成中...)
四.内存结构:
4.1 PGA:process global area,是oracle一个oracle服务器进程专用的私有的内存区.
4.2 UGA:user global area,用户全局区,在专用服务器模式中,UGA在PGA中分配,其他区域用来排序,散列和位图合并.如果是共享服务器,则UGA在SGA的大池(large pool)中分配.简单来讲:PGA=UGA+排序区+散列区+位图合并区.
4.1 SGA:oracle中最重要的内存结构,system global area,是一个大型的,共享的内存结构.SGA分为各种池:
4.1.1 Java池:分配给在数据库上运行的JVM的固定大小的内存.
4.1.2 共享池:包含共享的游标,存储过程,声明对象,分析后的SQL计划等很多数据.是oracle的SGA中最重要的内存区域.
4.1.3 大池:被MTS用作UGA的会话内存.
4.1.4 空池:用于块缓冲区,重做日志缓冲区及固定SGA区域(固定SGA包含一组指向其它SGA组件的变量,大小不可控,oracle的自启动部分)
五.进程与线程:
在oracle中,进程主要分为三种,服务器进程,后台进程与从属进程.
5.1 服务器进程:最重要的进程,用来处理提交的SQL,包括分析及处理等.
5.2 后台进程:后台进程执行维护数据库运行所需的日常维护任务.包括PMON(进程监视器),SMON(系统监控器),RECO(分布式的数据库恢复),DBWN(数据库块写入器),LGWR(日志写入器),ARCN(归档进程)等进程.
5.3 从属进程:包括两种从属进程,1.I/O从属进程用来为不支持异步IO的系统或设备模拟异步IO.2.并行查询从属进程,该进程负责并行的把一些合适的执行计划分割成可以并行执行的一些计划,并且进行并发执行.