![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR1UerRkT1cGRNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5kzN2UjNyETMyEDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
·执行过程
备注:
1.Oracle 分为数据库实例+数据库文件,其中实例为数据库实例为SGA和后台进程。
2.服务器进程
当用户(客户端)要连接Oracle数据库时, Oracle就会创建1个session(会话),并且在服务器上创建1个专门处理这个session的进程,就是服务器进程啦。注意啊, 每当1个新用户创建1个新的连接到数据库,Oracle都会对应创建1条服务器进程的。
3.SGA和PGA的区别?
SGA:是用于存储数据库信息的内存区,是系统的全局内存区,为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。同时,SGA里面存储的数据库信息可以被几个进程共享使用, 每一个实例对应一个SGA。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,它不能被几个进程共享使用,PGA 在创建进程时分配,在终止进程时回收。
对应上面的Server Process, Oracle会在服务器上对每一条Server Process分配一定大小的内存,就是PGA了, 注意有几个session就会有几个对应的SGA块, 所以服务器对内存需求很大的啦~
原文请参考:https://blog.csdn.net/qq_39081511/article/details/80580839