Oracle DB内存结构


文档:
http://www.oracle.com/technetwork/database/database10g/documentation/index.html

在线:
http://www.oracle.com/pls/db102/homepage

创建表空间:
create tablespace chuyf_test_data datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 200M autoextend on next 10M maxsize 500M;

Oracle DB内存结构:
程序全局区(PGA):堆栈空间、用户全局区
服务器进程 --> 系统全局区(SGA):共享池、DB缓冲区高速缓存、重做日志缓冲区、KEEP缓冲区池、RECYCLE缓冲区池、nK缓冲区高速缓存、大型池、Java池、流池

共享池:
属于SGA,包含库高速缓存(共享SQL区域)、数据字典高速缓存、控制结构

数据库缓冲区高速缓存:
属于SGA,存放从数据文件读取的数据块的副本,由所有并行用户共享

重做日志缓冲区:
是SGA中的循环缓冲区,存放有关对数据库所做更改的信息,包含重做条目,这些条目包含对DML和DDL等操作所做的更改进行重做的相关信息

大型池:
为以下对象提供大型内存分配:共享服务器和Oracle XA接口的会话内存、I/O服务器进程、Oracle DB备份和还原操作

Java池和流池:
Java池内存用于存储JVM中所有特定于会话的Java代码和数据,Oracle Streams以独占方式使用流池内存来执行以下操作--存储缓冲的队列消息、为Oracle Streams进程提供内存

用户全局区:游标状态、用户会话数据、
(排序区、散列区、位图创建区、位图合并区) --> SQL工作区



进程体系:
用户进程:
是连接到Oracle DB的应用程序或工具

数据库进程:
服务器进程:连接到Oracle实例,在用户建立会话时启动
后台进程:在启动Oracle实例时启动

守护程序/应用程序进程
网络监听程序
Grid infrastructrue守护程序



数据库写进程(DBWn):
将数据库缓冲区高速缓存中经过修改的缓冲区(灰数据缓冲区)写入磁盘有两种方式:
在执行其它处理时异步执行
推进检查点



日志写进程(LGWR):
将重做日志缓冲区写入磁盘上的重做日志文件中
在以下情况下执行写操作:
用户进程提交事务处理时
重做日志缓冲区的三分之一已满时
DBWn进程将经过修改的缓冲区写入磁盘之前
每隔3秒



检查点进程(CKRT):
检查点信息记录在以下位置:
控制文件
每个数据文件头



系统监视器进程(SMON):
在实例启动时执行恢复
清除不使用的临时段



进程监视器进程(PMON):
在用户进程失败时执行进程恢复:
清除数据库缓冲区高速缓存
释放该用户进程使用的资源
监视会话,查看是否发生空闲会话超时
在监听程序中动态注册数据库服务



恢复器进程:
用于分布式数据库配置
自动连接到有问题的分布式事务处理中涉及的其它数据库
自动解决所有有问题的事务处理
删除对应于有问题的事务处理的所有行



归档进程(ARCn):
在发生日志切换之后,将重做日志文件复制到指定的存储设备
可以收集事务处理重做数据,并将数据传输到备用目标位置



进程启动顺序:
Oracle Grid Infrastrunture有OS初始化守护程序启动

原文地址:https://www.cnblogs.com/cyf18/p/14285482.html