关于oracle里的sga-max-size和sga-target这两个参数

作者&投稿:李春 (若有异议请与网页底部的电邮联系)
如何调整oracle的SGA~

  Oracle SGA,系统全局区(System Global Area),SGA的大小对oracle的性能有直接影响,那么应该如何调整SGA的大小呢?

  调整之前需要明确一个常识:32位版本的oracle最大支持1.75GB的SGA,如果oracle版本是32位的,那么你就不必尝试去调整大于1.7GB的SGA了。

  Oracle的一个重要发展方向就是自动管理,当然,SGA与PGA也不例外,从Oracle 9i开始,就出现了一个新的参数sga_max_size,可以保证在此数值之内的内存可以自由地修改与调配。如指定了sga_max_size,就可以在这个范围内自由地设置Shared pool、Data buffer等的大小。从Oracle 10g开始,又出现了另外一个新的参数,sga_target,只要设置了这个参数.所有的SGA的组件,如Shared pool、Data buffer、Large pool等,都不需要手工指定了,Oracle会自动管理。这一特性被称为自动共享内存管理(Automatic Shared Memory Management,ASMM)也就是说,Oracle会根据需要随时改变各个内存组件的大小,以达到最佳使用状态。但这个参数的最大值会受sga_max_size值限制;关闭自动管理,只需将这个sga_target参数设置为0。

  SGA中内存被各个组件以粒组GRANULE为单位进行划分,粒组的计算方法因SGA总大小和平台而异:

  SQL> show parameter sga
  NAME TYPE VALUE
  ------------------------------------
  lock_sga boolean FALSE
  pre_page_sga boolean FALSE
  sga_max_size big integer 272M
  sga_target big integer 272M

  

  SQL> create pfile from spfile;
  File created.
  SQL>
  SQL> alter system set sga_target=300M;
  alter system set sga_target=300M
  *
  ERROR at line 1:
  ORA-02097: parameter cannot be modified because specified value is invalid
  ORA-00823: Specified value of sga_target greater than sga_max_size

  反过来,如果sga_target值已经设置了272M,再将sga_max_size改成200M小于sga_target的值

  SQL> alter system set sga_max_size=200M;
  alter system set sga_max_size=200
  *
  ERROR at line 1:
  ORA-02095: specified initialization parameter cannot be modified

  静态参数不能直接修改内存

  SQL> alter system set sga_max_size=200M scope=spfile;
  System altered.

  要加上scope=spfile才可以,spfile是动态参数文件。

  SQL> startup force
  ORACLE instance started.
  Total System Global Area 285212672 bytes
  Fixed Size 1218992 bytes
  Variable Size 92276304 bytes
  Database Buffers 188743680 bytes
  Redo Buffers 2973696 bytes
  Database mounted.
  Database opened.
  SQL> show parameter sga
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  lock_sga boolean FALSE
  pre_page_sga boolean FALSE
  sga_max_size big integer 272M
  sga_target big integer 272M
  SQL>

  没问题运行正常,因为oracle检测到sga_max_size设置的比当前sga_target还小 就自动调整sga_max_size至sga_target相等。

  再设置sga_max_size值超越sga_target

  SQL> alter system set sga_max_size=300M scope=spfile;
  System altered.
  Elapsed: 00:00:00.02
  SQL> startup force
  ORACLE instance started.
  Total System Global Area 314572800 bytes
  Fixed Size 1267260 bytes
  Variable Size 121637316 bytes
  Database Buffers 188743680 bytes
  Redo Buffers 2924544 bytes
  Database mounted.
  Database opened.
  SQL> show parameter sga
  NAME TYPE VALUE
  ------------------------------------
  lock_sga boolean FALSE
  pre_page_sga boolean FALSE
  sga_max_size big integer 300M
  sga_target big integer 272M

  如此设置才能被接受 此时也可以动态调整sga_target<=sga_max_size了

  SQL> alter system set sga_target=290M;
  System altered.
  Elapsed: 00:00:00.04
  SQL> show parameter sga
  NAME TYPE VALUE
  ------------------------------------
  lock_sga boolean FALSE
  pre_page_sga boolean FALSE
  sga_max_size big integer 300M
  sga_target big integer 292M

  总结:
  sga_max_size 是静态的 设置必须重启库改完要重启数据库生效
  sga_target 是动态的 直接可以修改内存
  设置大于0的确定值就是开启ASMM ,设置0就是关闭ASMM
  当sga_max_size设置小于SGA_TARget时,则sga_max_size=SGA_TARget
  当sga_max_size设置大于sga_target时,则正常生效
  当sga_target设置大于sga_max_size时 报错
  ORA-00823: Specified value of sga_target greater than sga_max_size
  当sga_target设置小于sga_max_size时正常并可动态修改,这也是oracle给我们的灵活的之处,10G中有了sga_target弥补了9I中设置sga_max_size需要重启的缺陷,10G生产中 我们就可以给sga_max_size一个大值,动态的调整sga_target来寻求合适的大小。
本文作者:steptodream

您好,很高兴为您解答。
在Oracle11g数据库中,使用自动内存管理特性不再需要设定参数PGA_AGGREGATE_TARGET和SGA_TARGET,因为这两个参数都已经被修改成自动调优的,除非想指定PGA和SGA的最小值才需要设定这两个参数。在Oracle11g数据库中,则需要设置一个叫做MEMORY_TARGET的初始化参数,这个参数是指整个Oracle实例所能使用的内存大小,包括PGA和SGA的整体大小,在MEMORY_TARGET的内存大小之内,PGA和SGA所用的内存可以根据当前负载情况自动相互转换。如果当初始设定的MEMORY_TARGET的内存不够当前数据库使用的时候,Oracle11g还提供了另外一个初始化参数MEMORY_MAX_TARGET,当原始设定的内存不够使用的时候,可以手工来动态 调节MEMORY_TARGET的大小,但是不允许超过MEMORY_MAX_TARGET的值。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!

你只要你的os支持多大的内存 你的sga就可以任意调整.
你修改的时候出问题了,因为你忘记修改其他的东西了。

memory_max_target=>momery_target=>SGA_MAX_SIZE+pga_aggregate_target;

如果你的oracle装好了以后调整的话必须要看一下其他的内存总量
你可以看到你的各个数值是多少根据修改.
但是千万注意 修改的时候记得备份一下
create pfile='/init.ora' form spfile;
或者修改参数后会造成你的oracle无法启动的.

DB_CACHE_SIZE和SHARED_POOL_SIZE是系统根据自身调整的
SGA_MAX_SIZE其实就是你当做oracle的缓存池.
参数你根据自己的需调整就可以了.

sga-max-size的大小不是有os决定的吗,不可以人为的去修改。
===>
oracle的参数文件里面自己设置的...

sga-target的值大于 SGA_MAX_SIZE值的时候 会覆盖SGA_MAX_SIZE的值...

DB_CACHE_SIZE和SHARED_POOL_SIZE都设了具体的大小,那么我sga-target的大小的取值范围是不是就应该是DB_CACHE_SIZES+HARED_POOL_SIZE~sga-max-size
==》
如果你启用了 sga-target
那么你的
DB_CACHE_SIZES+HARED_POOL_SIZE<sga-target


有谁知道Oracle中类似于SQL中的datediff函数是什么
直接用两个日期相减,获得的值是天数,可以包含小数;小数表示相应的时分秒;如果需要获得小时数,分钟数,分别乘以24,或者乘以24*60 比如:select sysdate - to_date('2017-10-31 16:00:00','yyyy-mm-dd') from dual; -- 天数 select (sysdate - to_date('2017-10-31 16:00:00','yyyy...

有谁知道Oracle中类似于SQL中的datediff函数是什么
months_between(d2,d1) 两个时间差几个月 select (d2-d1) from dual; 相差多少天 select (d2-d1)*24 from dual; 相差多少小时 select (d2-d1)*24*60 from dual; 相差多少分钟 select (d2-d1)*24*60*60 from dual; 相差多少秒 字符串转换为date类型 to_date('20141212 00...

Oracle在NetSuiteFusionERP和HCM利润方面实现了强劲的第四季度_百度知...
特别是,技术许可的增长达到了19%,这清楚表明客户正在投资于Oracle平台。运行Oracle自治数据库服务所需的关键数据库选项增长了21%。我不能过分强调我们客户群的稳定性和增长。我们的客户正在维护和扩展他们的Oracle环境。并且在我们的BYOL中,带上您自己的许可证模型,他们具有在内部,云或通过混合环境使用...

oracle是系统软件吗
Oracle是系统软件。Oracle系统,即是以Oracle关系数据库为数据存储和管理作为构架基础,构建出的数据库管理系统。Oracle,世界第一个支持SQL语言的商业数据库,定位于高端工作站,以及作为服务器的小型计算机。如IBM P系列服务器、HP的Integraty服务器、Sun Fire服务器。Oracle公司的整个产品线包括数据库服务器...

Oracle相比于Mysql有什么好用的地方
②单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。③翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个...

oracle中查询时间等于当前时间后两天该怎么写语句
1、创建测试表,create table test_date(id varchar2(20),v_date date);2、插入测试数据;insert into test_date select level, trunc(sysdate)+level v_date from dual connect by level<=5 commit;3、查询表中全量数据;select t.*, rowid from test_date t;4、编写语句,查询时间等于当前...

如何正确配置基于 oracle 数据库的 wps v6.12 集群应用系统
这样,能够在创建概要过程中,根据客户特定的使用需求和环境特点,选择适合于自己的数据库,并进行端口、用户名、密码等信息的设置。 在创建自定义概要(Custom profile)之前启动 DeploymentManager(DM)概要,在目录<WPS_HOME>\/profiles\/Dmgr01\/bin 下,运行startManager.sh 命令。节点概要的创建与 DM 概要的创建类似,在...

SQLServer 和 Oracle 有什么区别?
Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且Windows平台的可靠性,安全性和伸缩性是非常有限的。它不象Unix那样久经考验,尤其是在处理大数据量的关键业务时。 Oracle 能在所有主流平台上运行(包括 Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商...

oracle怎么配置本地数据库
一、监听器(LISTENER)监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。二、本地服务名(Tnsname)Oracle客户端与服务器端的连接是通过客户端发出...

请问我通过Oracle得到每个月的前十条数据sql语句怎么写...
回答:如你查询上面图的sql等于时sql 只要在你sql前后加个条件就行的 比如: select * from (sql) where rownum<11 再有 你如果想要T_month为准的 就在你的sql里面加order by排序 然后外面加我这个外套sql就行的 select * from ( select * from tatistics_month t order by t.T_month ...

双滦区17585214926: 调整Oracle SGA大小的解决方法 -
东野琪妇炎: sga_max_size需要重启数据库来进行调整,而其中的db_cache_size等可以动态调节,在调节共享池时需要计算好SGA的总容量,假如超过了sga_max_size,就会出现报错的现象.

双滦区17585214926: 如何修改oracle SGA大小 -
东野琪妇炎: 在正常情况下,查询非常慢. 1、检查SGA大小,以DBA身份连接到oracle数据库,输入show sga. 2、如果SGA过小,请修改其大小 修改SGA必须保持的原则:1).sga_target不能大于sga_max_size,可以设置为相等.2).SGA加上PGA等其...

双滦区17585214926: 如何调整oracle的SGA -
东野琪妇炎: Oracle 11g 只要设置 memory 就可以了.不需要单独对 sga_max_size 进行设置,设置memory_max_target、memory_target 一般原则是 物理内存的1/2.设好了重启实例,sga_max_size 将自动变成memory_max_target设置的值 memory_max_...

双滦区17585214926: OracleSGA大小的解决方法是什么?
东野琪妇炎: 在修改数据缓冲区的时候,提示错误如下: SQL> alter system set db_cache_size=... (2)修改init$ORACLE_SID.ORA中对应的sga_max_size大小 (3)创建服务器参数文...

双滦区17585214926: oracle内存结构由什么组成? -
东野琪妇炎: oracle内存结构的组成部分 oracle的内存结构由两部分组成:sga(system global area),pga(program global area). SGA:在一个实例启动时分配,是实例的组成部分. PGA:一个服务进程启动就分配了一个PGA.(多个). 1.系统全局区(SGA)...

双滦区17585214926: plsql里怎么修改oracle的sga -
东野琪妇炎: 在默认安装情况下,oracle的内存分配是按系统内存的大小比例分配的,内存比较大的情况下,oracle所占的内存也大,该情况下,我们一般要修改sga值来减少系统中oracle的内存过大问题.用dba身份进入oracle,笔者在plsql中对数据库进行管理:show parameter sga; --显示内存分配情况 alter system set sga_max_size=200m scope=spfile; --修改占用内存的大小 注:在PL/SQL中 在command window中的Editor模式下使用以上命令

双滦区17585214926: 请教ORACLE11G怎么修改SGA的大小 -
东野琪妇炎: 您好,很高兴为您解答.在Oracle11g数据库中,使用自动内存管理特性不再需要设定参数PGA_AGGREGATE_TARGET和SGA_TARGET,因为这两个参数都已经被修改成自动调优的,除非想指定PGA和SGA的最小值才需要设定这两个参数....

双滦区17585214926: 关于oracle里的sga - max - size和sga - target这两个参数 -
东野琪妇炎: 你只要你的os支持多大的内存 你的sga就可以任意调整.你修改的时候出问题了,因为你忘记修改其他的东西了.memory_max_target=>momery_target=>SGA_MAX_SIZE+pga_aggregate_target; 如果你的oracle装好了以后调整的话必...

双滦区17585214926: oracle 占用内存怎么这么高 -
东野琪妇炎: 可以登录SYS用户修改Oracle的SGA等相关参数,降低内存占用,如下:按Window键和R键,输入SQLPLUS,输入 sys as sysdba,回车,接着回车.SQL>alter system set sga_max_size = 1024M scope=spfile; SQL>alter system set sga_target=1024M scope=spfile; SQL>alter system set pga_aggregate_size=256M scope=spfile; SQL>shutdown immediate SQL>startup

双滦区17585214926: 简要说明oracle数据库体系的内存结构 -
东野琪妇炎: 1:Oracle实例(Instance)在一个服务器中,每一个运行的Oracle数据库都与一个数据库实例相联系,实例是我们 访问数据库的手段. 实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数INSTANCE_NAME来标识, 它们两个的值是相...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网