主要用来存储用户会话的相关内容
Sever Process(实际存放在SGA中):
1:用户通过网络发送的SQL到达实例时,需要server process去接收。
2:server process去shared pool寻找sql和执行计划,如果没有该计划,就需要解析SQL(硬解析)
3:根据执行计划去buffer cache中寻找数据,如果没有对应的数据,就需要去dbf中获取数据并存放在buffer cache中之后再返回给用户
4:在用户需要修改数据时,server process将buffer cache中对应的数据进行修改,而不会去修改dbf中的数据,修改完之后再返回给用户
注意:server process直接反应给我用户的,其快慢决定了用户的体验快慢,我们在监控优化时,重点关注server process
SGA(System Global Area):
六大内存:
shared pool:主要是缓存SQL语句、执行计划等等
buffer cache:主要是缓存从dbf 中读取的数据
redo log:主要是存储重做的记录,对块的修改等等
Java pool:Java程序存储区
large pool:分配大块内存,处理比共享池更大的内存
stream pool:用于缓存流进程在数据库间移动/复制数据时使用的队列消息
五大进程:
CKPT:调度数据写DBWn,将新检查点写控制文件中的数据文件头的记录,将新的检查点写控制文件中的数据文件头的记录
SMON:最初是安装打开数据库,打开数据库之后会合并数据文件中的可用空间
PMON:清理与实例非法断开的server_procese残留的资源 非正常终止的用户进程产生的垃圾资源,将实例的信息注册到监听程序
DBWn:将脏块写入磁盘
LGWR:将redo log buffer里的条目,顺序写到redo文件