oracle 11g体系结构
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'
(2)重做日志缓冲区
执行DML或DDL操作。
一定时机下,由日志写入(LGWR)进程把重做日志缓冲区的内容写到磁盘的重做日志文件中保存。
重做日志缓冲区log_buffer的大小在参数文件中设置。值越大,重做日志缓冲区就可以存放更多的事务提交的记录,减少了数据被频繁写入到重做日志文件中的次数。
(3)共享池
包括库高速缓存、数据字典高速缓存。
数据字典存储区:存放系统中定义的数据库对象的信息。
当用户访问数据库中的数据时,确定要访问的对象是否存在。如表的名称、表结构描述、表拥有者的权限情况等。
库高速缓存:存放最近执行的SQL命令的相关信息。即对SQL命令解析、产生分析代码、生成执行计划。
1.数据库写入进程(DBWn)
•将数据库高速缓冲区中 的一批脏缓冲区的内容写入数据文件中的数据块。
•好处:减少写和读磁盘的次数。
•默认情况下,启动例程时只启动了一个数据库写入进程,即为DBW0
•初始化参数DB_WRITER_PROCESSES最多定义20个数据库写入进程执行写入操作
•每个数据库写入进程都分配了0~9或a~j编号
DBWR何时被执行 •固定的时间间隔;
•当数据库服务器发出检查点
•当脏队列中的缓冲区数目达到一定值时
•空缓冲区的数量不能满足要求
2.日志写入进程(LGWR)
日志写入进程负责把重做日志缓冲区的数据写入重做日志文件中永久保存。
LGWR何时被执行 •固定的时间间隔(3S)
•用户执行了commit
•重做日志缓冲区1/3被写满
•DBWR将脏缓冲区数据写入数据文件之前
3.日志归档进程(ARCn)
日志归档进程是一个可选进程
该后台进程只有在ARCHIVELOG(归档日志)模式下才有效
4.检查点进程(CKPT)
检查点进程是一个可选进程
作用是发出检查点(Checkpoint),实现同步数据库的数据文件、控制文件和重做日志
确保数据文件、控制文件和重做日志文件的一致性。(依靠SCN(System Change Number)实现)
5.其它后台进程
系统监控进程(SMON)
#在数据库系统启动时执行恢复工作
#合并空间碎片并释放临时段
进程监控进程(PMON)
#检查所有用户进程的状态,清除非正常终止的用户进程,并回收他们所占的资源(锁/存储区)。
可在V$BGPROCESS中查询当前启动的后台进程 --------------------------------------------Oracle数据库的物理结构
Oracle数据库的存储结构,包括数据的物理存储结构和逻辑存储结构,两者是互相关联的。
物理存储结构是实际的数据存储单元,如文件或数据块
逻辑存储结构是数据概念上的组织,如数据库或表
1. 数据文件
数据文件(Data files)用于存储数据库数据。包括系统数据(数据字典)、用户数据(表、索引、簇等)、撤销(Undo)数据、临时数据等。
要点:
在Oracle数据库中,至少要包含一个数据文件,一个数据文件包括多个数据块,一个数据块包含多个操作系统块。 数据文件在逻辑上属于表空间(Tablespace),一个表空间可以包含一个或多个数据文件,而一个数据文件只能属于一个表空间。
用户在创建数据库对象时,只能指定所属的表空间,而不能指定存储在哪个数据文件中。
2.重做日志文件
用于记录用户对数据库所做的更改
3.控制文件
用于记录和维护数据库的物理结构和状态(二进制)
4.其他文件
归档日志文件
参数文件
口令文件
警告文件
--------------------------------------------Oracle数据库的逻辑结构
数据库的逻辑结构是面向用户的,描述了数据库在逻辑上是如何组织和存储数据。
数据库的逻辑结构支配一个数据库如何使用其物理空间。
数据库数据(表、索引、簇)物理上存放在数据文件中,而逻辑上则存放在表空间中。
Oracle数据库使用表空间、段、区间、数据块等逻辑结构管理对象空间。
数据库的逻辑结构支配一个数据库如何使用其物理空间。
数据库数据(表、索引、簇)物理上存放在数据文件中,而逻辑上则存放在表空间中。
Oracle数据库使用表空间、段、区间、数据块等逻辑结构管理对象空间。
--------------------------------------------数据字典
数据库的数据字典存储
*数据库自身信息
*用于内部系统处理的其他对象
*数据库方案对象的定义
是相对静态的信息