本篇文章主要介绍了"oracle 11g体系结构",主要涉及到访问数据库,队列,系统启动,索引,表空间方面的内容,对于Oracle感兴趣的同学可以参考一下:
Oracle体系结构由两部分组成Oracle数据库(Oracle Database) 一组文件Oracle实例(Oracle Instance) 内存结构(不包...
Oracle体系结构由两部分组成
- Oracle数据库(Oracle Database) 一组文件
- Oracle实例(Oracle Instance) 内存结构(不包含PGA)+一组后台进程

数据库是由数据文件、参数文件、日志文件、控制文件、归档日志文件等系列文件组成的。
实例是由一个开辟的内存共享区SGA(System Global Area)和一系列后台进程组成。SGA由共享池、数据缓冲区和日志缓冲区三部分组成,后台进程包括SMON、PMON、CKPT、DBWR、LGWR、ARCH等进程组成。
PGA(Program Global Area)区,这也是一块开辟出来的内存区,和SGA最明显的差别在于PGA不是共享内存。用户对数据库发起的无论是查询还是更新的任何操作,都是在PGA中先预处理,然后才能进入实例区域,由SGA和后台进程共同完成用户发起的请求。PGA都预处理些什么呢?第一,保存用户的链接信息,如绑定变量;第二,保存用户权限等重要信息;第三,当发起的指令需要排序的时候,PGA可用于存放排序后的数据,如果放不下,超出的部分就在临时表空间中存放。
用户请求一条语句经历的顺序可以是PGA----〉instance---〉database,也可以是PGA----〉instance.
SGA组成:
(1)数据库高速缓存(database buffer cache)
用来存放用户最近访问的数据
Oracle采用LRU(最近最少使用)算法管理数据库缓冲存储区
Show SGA
数据库高速缓存是由一个个的缓冲区组成的,数据从数据文件中被读到数据库高速缓存中之后,就放在这些缓冲区中.缓冲区的大小与数据块的大小一致。
DB_CACHE_SIZE设置高速缓存的大小(25165824byte)
alter system set db_cache_size= 大小M scope=spfilesid='数据库SID'
DB_BLOCK_SIZE 数据块的大小(8192byte)(2)重做日志缓冲区
执行DML或DDL操作。
一定时机下,由日志写入(LGWR)进程把重做日志缓冲区的内容写到磁盘的重做日志文件中保存。
重做日志缓冲区log_buffer的大小在参数文件中设置。值越大,重做日志缓冲区就可以存放更多的事务提交的记录,减少了数据被频繁写入到重做日志文件中的次数。
(3)共享池
包括库高速缓存、数据字典高速缓存。
数据字典存储区:存放系统中定义的数据库对象的信息。
当用户访问数据库中的数据时,确定要访问的对象是否存在。如表的名称、表结构描述、表拥有者的权限情况等。
库高速缓存:存放最近执行的SQL命令的相关信息。即对SQL命令解析、产生分析代码、生成执行计划。