数据库sga
Ⅰ SGA是什么的缩写
SGA系统全局区的英文简称,SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。
它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
(1)数据库sga扩展阅读:
1、SGA的构成——数据和控制信息,我们下面会详细介绍。
2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和sequence控制)。
3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。
参考资料来源:
网络-SGA
Ⅱ sga是什么意思
两个意思:
sga是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。
SGA系统全局区的英文简称,SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。
享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据一次从输入文件到共享内存区,另一次从共享内存区到输出文件。
(2)数据库sga扩展阅读:
1、SGA的构成——数据和控制信息,我们下面会详细介绍。
2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和sequence控制)。
Ⅲ Oracle的系统全局区SGA由哪几个部分组成
1、数据高速缓冲区(Data Buffer Cache)
在数据高速缓冲区中存放着Oracle系统使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用户访问的数据。
如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。数据高速缓冲区包括三个类型的区:
(1)脏数据区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。
(2)自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。
(3)保留区(Pinned Buffers):此区包含有正在处理的或者明确保留用作将来用的区。
2、Redo Log Buffer Cache缓存对于数据块的所有修改。
主要用于恢复其中的每一项修改记录都被称为redo 条目。利用Redo条目的信息可以重做修改。
3、Shared Pool用于缓存被执行的SQL语句和被使用的数据定义。
它主要由两个内存结构构成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Library Cache缓存被执行的SQL和PL/SQL的相关信息,即存放SQL语句的文本,分析后的代码及执行计划。
Ⅳ 数据库实例和sga的区别
实例由称为系统全局区(SGA)的共享内存以及若干后台进程组成。生存期就是它在内存中存在的时间。数据库是由磁盘上的物理文件组成,可以永久存在。实例与数据库可以是多对一的关系。在打开数据库的时候,nomount阶段就是创建并启动实例,即根据初始化参数文件分配内存,启动后台服务进程。
Ⅳ SGA是什么
是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
SGA几个很重要的特性:
1、SGA的构成--数据和控制信息,我们下面会详细介绍;
2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence控制);
3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。
它主要包括:
1.数据库高速缓存(the database buffer cache),
2.重演日志缓存(the redo log buffer)
3.共享池(the shared pool)
4.数据字典缓存(the data dictionary cache)以及其它各方面的信息。
1.数据高速缓冲区(Data Buffer Cache)
在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。数据高速缓冲区包括三个类型的区:1) 脏的区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。
2) 自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。
3) 保留区(Pinned Buffers):此区包含有正在处理的或者明确保留用作将来用的区。
2.Redo Log Buffer Cache缓存对于数据块的所有修改。
主要用于恢复其中的每一项修改记录都被称为redo 条目。利用Redo条目的信息可以重做修改。
3. Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义。
它主要由两个内存结构构成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Libray Cache缓存最近被执行的SQL和PL/SQL的相关信息。实现常用语句的共享,使用LRU算法进行管理
,由以下两个结构构成:Shared SQL area、Shared PL/SQL area、Data Dictionary Cache、Data dictionary cache缓存最近被使用的数据库定义。它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。在语法分析阶段,Server Process访问数据字典中的信息以解析对象名和对存取操作进行验证。数据字典信息缓存在内存中有助于缩短响应时间。
4.数据字典缓存(the data dictionary cache)
Ⅵ Oracle的系统全局区SGA由哪几个部分组成它们的作用是什么
(1)数据高速缓冲区:存放着Oracle系统最近使用过的数据库数据块。
(2)共享池:相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。
(3)重做日志缓冲区:用于缓冲区在对数据进行修改的操作过程中生成的重做记录。
Ⅶ OracleXE中的SGA和PGA是什么意思啊,英文全称又是什么呢
内存分配(SGA和PGA)
SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA是只被一个进程使用的区域,PGA在创建进程时分配,在终止进程时回收.
Ⅷ 当数据库内存增大,sga会自动增大吗
Oracle数据库可以自动内存管理SGA的,所以不用担心。具体可以参考一下,如有帮助请采纳。
ASMM自动共享内存管理:
自动根据工作量变化调整
最大程度地提高内存利用率
有助于消除内存不足的错误
SYS@PROD>show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1G
sga_target big integer 1G
SYS@PROD>show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 0
memory_target big integer 0
shared_memory_address integer 0
SYS@PROD>show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 208M
ASMM 的工作原理 :
ASMM 以 MMON 在后台捕获的工作量信息为基础。
MMON 使用内存指导。
将内存移到 MMAN 最迫切需要的地方。
如果使用 SPFILE:在关闭时保存组件大小 、保存的值用于引导程序组件大小 、无需再确定最佳值
自动共享内存管理功能使用由以下两个后台进程实施的 SGA 内存中介:可管理性监视器 (MMON) 和内存管理器 (MMAN)。MMON 定期将统计信息和内存指导数据捕获到内存中。MMAN 根据 MMON 的决定调整内存组件的大小。SGA 内存中介会不断跟踪组件的大小和待处理的大小调整操作。
SGA 内存中介会观察系统和工作量,以便确定理想的内存分配方案。SGA 内存中介每隔几分钟就执行一次这种检查,使内存始终用在需要的地方。如果没有自动共享内存管理功能,必须分别预计各组件在峰值时的内存需求,然后对其内存大小进行调整。
在工作量信息基础上,自动共享内存管理功能会:
定期在后台捕获统计信息
使用内存指导
进行假设分析,确定最佳内存分配方案
将内存移到最迫切需要的地方
如果使用了 SPFILE,则在关闭时保存组件大小(这些大小可以在最后一次关闭前重新起用)
启用自动共享内存管理功能 :
要从手动共享内存管理模式下启用 ASMM,请执行以下操作:
1.获取 SGA_TARGET 的值:
SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;
2.使用该值设置 SGA_TARGET。
3.将自动设置大小的 SGA 组件的值设置为 0。
要从自动内存管理模式切换到 ASMM,请执行以下操作:
1.将初始化参数 MEMORY_TARGET 设置为 0。
2.将自动设置大小的 SGA 组件的值设置为 0。
自动优化的 SGA 参数的行为:
未设置 SGA_TARGET 或将其设置为 0 时:
自动优化的参数指定相应组件的实际大小
、可能需要增加 SHARED_POOL_SIZE
SELECT SUM(bytes)/1024/1024 size_mb FROM v$sgastat WHERE pool = 'shared pool';
SGA_TARGET 设置为非零值时:
自动优化的参数的默认值为零 、指定的值用作下限大小
SELECT component, current_size/1024/1024 size_mb FROM v$sga_dynamic_components;
手动优化的 SGA 参数的行为:
有些组件不能自动优化。
--DB_KEEP_CACHE_SIZE 和 DB_RECYCLE_CACHE_SIZE
--非标准块大小的缓冲区高速缓存,DB_nK_CACHE_SIZE
--
LOG_BUFFER
这些组件必须使用数据库参数手动配置。
这些组件使用的内存会减少可用于自动优化 SGA 的内存量。
修改 SGA_TARGET 参数 :
--是动态参数
--
最多可增大到 SGA_MAX_SIZE
--可以减小,直到所有组件都达到其下限大小为止
更改 SGA_TARGET 的值只会影响自动调整大小的组件
SGA_TARGET 是一个动态参数,可以通过 Database Control 或使用 ALTER SYSTEM 命令更改。
GA_MAX_SIZE 是可分配给 SGA 的内存量的上限。更改该值后,必须重新启动数据库才能生效。SGA_TARGET 最多可增大到 SGA_MAX_SIZE 值。它可以减小,直到任一自动优化的组件达到其下限大小:用户指定的下限值或内部确定的下限值。
如果增大 SGA_TARGET 的值,则会根据自动优化策略在自动优化的组件之间分配增加的那部分内存。
如果减小 SGA_TARGET 的值,则这部分内存将按照自动优化策略从一个或多个自动优化的组件处提取。
假定 SGA_MAX_SIZE 设置为 10 GB,SGA_TARGET 设置为 8 GB。如果 DB_KEEP_CACHE_SIZE 设置为 1 GB,并且将 SGA_TARGET 增大为 9 GB,则增加的 1 GB 只会在 SGA_TARGET 控制的组件之间进行分配。DB_KEEP_CACHE_SIZE 的值不受影响。同样,如果将 SGA_TARGET 减小到 7 GB,则这 1 GB 也只会从 SGA_TARGET 控制的那些组件中提取。这种减少并不会影响手动控制的参数(如 DB_KEEP_CACHE_SIZE)的设置。
禁用 ASMM :
将 SGA_TARGET 设置为 0 可禁用自动优化功能。
自动优化的参数设置为其当前大小。
SGA 大小总体上不受影响。
eg:
SGA_TARGET 的值为 8 GB,SHARED_POOL_SIZE 的值为 1 GB。如果系统将共享池组件的大小内部调整为 2 GB,则将 SGA_TARGET 设置为 0 会导致 SHARED_POOL_SIZE 被设置为 2 GB,从而覆盖用户定义的原始值。
手动调整动态 SGA 参数的大小
对于自动优化的参数,手动调整大小会:
导致组件大小立即调整(如果新值大于当前值) 、更改下限大小(如果新值小于当前大小)
调整手动优化的参数的大小只会影响 SGA 的可调部分。
调整了自动优化的参数的大小并设置了 SGA_TARGET 值后,只有当新值大于组件的当前大小时,这种调整才会导致组件的大小立即发生更改。例如,如果将 SGA_TARGET 设置为 8 GB,将 SHARED_POOL_SIZE 设置为 2 GB,可确保共享池始终不小于 2 GB,以满足必要的内存分配需求。之后,即使将 SHARED_POOL_SIZE 值调整为 1 GB,也不会对共享池的大小产生直接影响。只会使自动内存优化算法以后可以将共享池大小减少到 1 GB(如果需要)。相反,如果共享池的大小最初设置为 1 GB,那么将 SHARED_POOL_SIZE 值调整为 2 GB 时,共享池组件的大小会立即增加到 2 GB。此大小调整操作中使用的内存从一个或多个自动优化的组件中提取,手动优化的组件的大小不受影响。
手动调整大小的组件的参数也可以动态变更,但不同之处在于,参数的值会立即指定相应组件的精确大小。因此,如果手动调整的组件的大小增大,则增加的那部分内存将从一个或多个自动调整大小的组件处提取。如果手动调整的组件的大小减小,则释放的内存将会提供给自动调整大小的组件。
程序全局区 (PGA)
程序全局区 (PGA) 是包含某服务器进程的数据及控制信息的内存区。这是 Oracle 服务器在服务器进程启动时创建的非共享内存,只有该服务器进程才能访问。由关联到某个 Oracle 实例的所有服务器进程分配的 PGA 总内存,也称为该实例分配的聚集 PGA 内存。
使用共享服务器时,部分 PGA 可位于 SGA 中。
PGA 内存通常包含以下各项:
专用 SQL 区:
专用 SQL 区包含绑定信息和运行时内存结构等数据。这些信息是每个会话的 SQL 语句调用所特有的;在其它方面,绑定变量有不同的值,游标的状态也不同。发出 SQL 语句的每个会话都有一个专用 SQL 区。提交同一 SQL 语句的每个用户也都有其自己的专用 SQL 区,该专用 SQL 区使用一个共享 SQL 区。这样,许多专用 SQL 区可与同一个共享 SQL 区关联。专用 SQL 区的位置取决于为会话建立的连接类型。如果会话是通过专用服务器连接的,则专用 SQL 区位于该服务器进程的 PGA 中。不过,如果会话是通过共享服务器连接的,则部分专用 SQL 区将保留在 SGA 中。
游标和 SQL 区
:
Oracle Pro*C 程序或 Oracle OCI 程序的应用程序开发人员可以显式打开特定专用 SQL 区的游标或句柄,并在该程序的整个执行过程中将它们用作命名资源。数据库为某些 SQL 语句隐式发出的递归游标也使用共享 SQL 区。
工作区
:
对于复杂查询(例如,决策支持查询),会将大部分 PGA 供内存密集型运算符分配的工作区专用,例如:
基于排序的运算符(如 ORDER BY、GROUP BY 和 ROLLUP)和窗口函数
散列联接
位图合并
位图创建
批量装载操作使用的写缓冲区
排序运算符使用工作区(排序区),对一组行执行内存中排序。与此类似,散列联接运算符使用工作区(散列区),根据其左侧输入内容生成散列表。
工作区的大小是可以控制和优化的。通常,较大的工作区可以显着改进特定运算符的性能,不过代价是消耗较多的内存。
会话内存
:
会话内存是用于存放会话的变量(登录信息)以及与会话相关的其它信息的内存。对于共享服务器,会话内存是共享的,而不是专用的。
自动 PGA 内存管理
根据 PGA_AGGREGATE_TARGET 参数,动态调整供工作区专用的 PGA 内存量
有助于最大限度地提高所有内存密集型 SQL 操作的性能
默认情况下是启用的
PGA 管理资源
管理 PGA_AGGREGATE_TARGET 初始化参数的统计信息,如 PGA 高速缓存命中百分比
可以在下列动态性能视图中查看有关工作区内存分配和使用的统计信息:
V$SYSSTAT
V$SESSTAT
V$PGASTAT
V$SQL_WORKAREA
V$SQL_WORKAREA_ACTIVE
用于调整 PGA 工作区大小的视图有:
V$PGA_TARGET_ADVICE
V$PGA_TARGET_ADVICE_HISTOGRAM
V$SQL_WORKAREA_HISTOGRAM
-----------------Oracle DB 内存参数
ALTER SYSTEM SET MEMORY_TARGET=300M;
虽然仅需要设置 MEMORY_TARGET 来触发自动内存管理,但仍可以为各种高速缓存设置下限值。因此,如果子参数是用户设置的,则这些参数值将是 Oracle DB 服务器自动优化该组件时的下限值。
有效使用内存:准则
尽量使 SGA 适合物理内存。
优化以实现高缓冲区高速缓存命中率,但要注意以下几点:
--即使有效且必需的全表扫描也会降低命中率。
--可能存在因不必要地重复读取同一块而出现命中率虚升的情况。
使用内存指导。
库高速缓存的内存优化准则:提高命中率
为开发人员制定格式使用约定,以便 SQL 语句符合高速缓存的要求。
使用绑定变量。
消除不必要的重复 SQL。
考虑使用 CURSOR_SHARING。
尽可能使用 PL/SQL。
缓存序列号。
连接库高速缓存中的对象。
Ⅸ 64g的数据库sga是多大
需要11G。
系统全局区又称SGA 是Oracle Instance的 基本组成部分,在实例启动时分配。SGA主要由数据高速缓冲区、共享池、重做日志缓冲区、大型池、Java池、流池和其他结构组成。
SGA主要由数据高速缓冲区(Database Buffer Cache)、共享池(Shared Pool)、重做日志缓冲区(Redo Log Cache)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。
一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。
Ⅹ sga是什么意思
sga的意思是一组包含一个Oracle实例的数据和控制信息的共享内存结构。SGA系统全局区的英文简称,SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。
主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
组成:
SGA主要由数据高速缓冲区(Database Buffer Cache)、共享池(Shared Pool)、重做日志缓冲区(Redo Log Buffer)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。