您好,欢迎访问一九零五行业门户网

Oracle 内存结构(Memory Structure)

oracle的内存结构包括两个部分:system global area(sga)和program global area(pga)。 sga:当一个实例启动的时候分配(all
oracle的内存结构包括两个部分:system global area(sga)和program global area(pga)。
sga:当一个实例启动的时候分配(allocated),是一个实例的基本组成部分。
pga:当一个server process启动的时候分配。server process上面已经讲到。 
memory -> sga
sga是动态的,可以通过sga_max_size参数来设置大小。sga的增大和缩小有一个基本的单位granule。
在sql plus我们可以查看sga分配和granule。
sql> show sga 
sql> select component,granule_size from
  2  v$sga_dynamic_components; 
sga还有它的组成部件,这里主要介绍shared pool,large pool和java pool。当然还包括一些其他的buffer和cache,如data buffer cache.在oracle11g还多了stream pool。 
large pool和java pool是sga中可选的内存结构。前者在备份和io处理以及并行操作时会用到,后者在使用java的时候会用到。 
memory -> sga -> shared poll
shared pool主要用来存储最近执行的绝大多数的sql语句和最近使用的数据定义(data definitions)。我们可以通过shared_pool_size来设置其大小。语句为:alert system set shared_pool_size = 64m;shared pool包括两个主要的影响性能的内存结构:library cache和data dictionary cache。
libray cache用来存储绝大多数的最近使用的sql和pl/sql语句,并提供最近使用语句的共享。它主要包括shared sql area和shared pl/sql area。它的大小是由shared pool决定的,它由最少最近使用机制管理(least recently used,lru algorithm)。
data dictionary cache是一个存储大多数最近使用数据库中的定义的集合,包括数据库文件,表,列,用户,,权限等的信息。它为server process提供对象名称解析和访问验证(validate access)。它的大小也由shared pool决定。
shared pool还存储一些数据块(data blocks)和重做日志缓冲。        
memory -> pga
 每一个连接到oracle数据库的用户都会有一个自己的pga。它随用户进程的创建而创建,随用户进程的终结而终结。
其它类似信息

推荐信息