更改oracle共享池(Shared_pool_size)⼤⼩oracle四舍五入
由于共享池过⼩,导致数据库性能降低,现在把更改⽅法总结⼀下,以便以后查阅
A.sga(指定数据库启动时分配的内存⼤⼩)空间已满
1.以DBA⾝份进⼊控制台
2.在管理->例程->内存参数中,更改SGA⼤⼩
3.重启数据库后再次以DBA进⼊控制台,更改共享池⼤⼩
4.再次重启数据库
B.sga空间⾜够:直接更改共享池⼤⼩就可以了
可以⽤命令更改:进⼊sqlplus执⾏alter system set shared_pool_size=10M。(设置成需要的⼤⼩)
更改后要重启数据库哦!
查询数据库的SGA:select * from v$sga;
Oracle10g 管理系统全局区(SGA)
有⼏个影响SGA内存分配数量的参数,除了SGA_MAX_SIZE ,其他都是动态参数,也就是说在数据库运⾏期间可以使⽤ALTER SYSTEM 语句动态修改的参数.SGA的⼤⼩是动态的,通过修改这些参数可以让SGA增⼤或缩⼩. SGA组件和SGA内存颗粒
由许多内存组件组成,他们是⽤于满⾜特定内存分配请求的内存池.例如共享池(⽤于缓冲磁盘数据块),所有的SAG以⼀个最⼩的内存单元颗粒分配和回收内存空间,Oracle在系统内部追踪SAG的内存单元的分配和使⽤情况. SGA的内存分配是通过颗粒进⾏分配的,颗粒⼤⼩由SGA的⼤⼩决定.⼀般来将,在⼤多数平台,如果SGA⼩于等于1G,那么颗粒⼤⼩为4MB,如果⼤于1G,颗粒的⼤⼩为16MB,不同的是在32位Windows平台下,SGA⼤于1G时,颗粒⼤⼩位8MB⽽⾮16MB,详细信息,查看操作系统⽂档.
可以通过V$SGAINFO 系统试图查看由某个实例使⽤的颗粒⼤⼩.同样的⼤⼩⽤于所有SGA的动态组件.
如果指定的SGA组件的⼤⼩不是颗粒⼤⼩的整数倍,那么Oracle将会四舍五⼊求整⽽得到其整数倍值,赋给SGA内存组件.⽽不是你所指定的⼤⼩.例如如果颗粒⼤⼩为4MB,你给 DB_CACHE_SIZE 参数设定为10MB,那么实际分配的内存将会是12MB. 限制SGA的⼤⼩
SGA_MAX_SIZE 参数指定SGA在实例的⽣命期内的最⼤数.动态修改这些参数影响的Buffer cache,shared pool,large pool,java pool,和streams pool的⼤⼩,和SGA的总⼤⼩.但是不能超过SGA_MAX_SIZE 参数所设定的值. 如果没有指定,那么默认把所有初始化参数中指定的内存组件的和作为期缺省值. 使⽤⾃动共享内存管理 通过使⽤SGA_TARGET参数来启⽤⾃动共享内存管理.以前⼿动分配的类似java_pool,large_pool这样的共享内存组件将被⾃动管理,另外,你必须确保STATISTICS_LEVEL初始化参数设置为TYPICAL(默认值)或ALL. SGA_TARGET初始化参数反映了SGA的⼤⼩. 表2-3 ⾃动分配⼤⼩的SGA组件和相应的参数 SGA 组件 初始化参数 固定的SGA和其他Oracle数据库实例需要的内部分配 不可⽤
共享池 SHARED_POOL_SIZE
⼤型池 LARGE_POOL_SIZE
Java池 JAVA_POOL_SIZE
缓冲区⾼数缓存 DB_CACHE_SIZE
表2-4 ⼿动分配⼤⼩的使⽤SGA_TARGET空间的SGA组件
SGA 组件 初始化参数 ⽇志缓冲区 LOG_B
UFFER The keep and recycle buffer caches DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE ⾮标准缓冲区⾼数缓存块⼤⼩ DB_nK_CACHE_SIZE 流池 STREAMS_POOL_SIZE 在⼿动管理模式下执⾏如下SQL查询得到SGA_TARGET的值. SELECT ( (SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY) ) "SGA_TARGET" FROM DUAL; 然后你可以删除由Oracle⾃动管理的共享内存相应的初始化参数. 例如,当前你在⼿动管理模式下由如下配置,并且SGA_MAX_SIZE 设置为 1200M:
总结⼀些SGA的相关的动态性能视图: SQL> select * from v$version; BANNER ----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi PL/SQL Release 10.2.0.3.0 - Production CORE
10.2.0.3.0 Production TNS for IBM/AIX RISC System/6000: Version 10.2.0.3.0 - Productio NLSRTL Version 10.2.0.3.0 - Production SQL> select table_name from dict where table_name like 'V$SGA%'; TABLE_NAME ------------------------------
V$SGA
V$SGAINFO
V$SGASTAT
V$SGA_DYNAMIC_COMPONENTS
V$SGA_DYNAMIC_FREE_MEMORY ...... 1.V$SGA这个视图包括了SGA的的总体情况,只包含两个字段:name(SGA内存区名
V$SGA_DYNAMIC_FREE_MEMORY
字)和value(内存区的值,单位为字节)。它的结果和show sga的结果⼀致,显⽰了SGA各个区的⼤⼩ SQL> select * from v$sga; NAME VALUE -------------------- ---------- Fixed Size 2072776 Variable Size 721424184 Database Buffers 637534208 Redo Buffers 14700544 SQL> show sga Total System Global Area 1375731712 bytes Fixed Size 2072776 bytes Variable Size 721424184 bytes Database Buffers 637534208 bytes Redo Buffers 14700544 bytes 2.V$SGASTAT这个视图⽐较重要,其中记录了SGA的各个pool和区的统计信息,包含三个字段:Name(SGA内存区的名字);Bytes(内存区的⼤⼩,单位为字节);Pool(这段内存所属的内存池)。 SQL> desc v$sgastat; Name Null? Type ----------------------------------------- -------- ----------------------------
POOL VARCHAR2(12) NAME VARCHAR2(26)
BYTES NUMBER 显⽰当前shared pool的空闲字节: SQL> select pool,name,bytes from v$sgastat 2 where name='free memory' and pool='shared pool'; POOL NAME BYTES ------------ -------------------------- ---------- shared pool free memory 169431928 3.V$SGAINFO的作⽤基本和V$SGA⼀样,只不过把Variable size的部分更细化了⼀步 SQL> select * from v$sgainfo; NAME BYTES RES -------------------------------- ---------- ---Fixed SGA Size 2072776 No Redo Buffers 14700544 No Buffer Cache Size 637534208 Yes Shared Pool Size 268435456 Yes Large Pool Size 16777216 Yes Pool
Size 167772160 Yes Streams Pool Size 0 Yes Granule Size 16777216 No Maximum SGA Size 1375731712 No Startup overhead in Shared Pool 83886080 No Free SGA Memory Available 268435456 4.V$SGA_DYNAMIC_COMPONENTS 这个视图记录了SGA各个动态内存区的情况,它的统计信息是基于已经完成了的,针对SGA动态内存区⼤⼩调整的操作。 SQL> desc v$sga_dynamic_components; Name Null? Type ----------------------------------------- -------- ---------------------------- COMPONENT
VARCHAR2(64) CURRENT_SIZE NUMBER MIN_SIZE NUMBER
MAX_SIZE NUMBER USER_SPECIFIED_SIZE NUMBER
OPER_COUNT NUMBER LAST_OPER_TYPE VARCHAR2(13)
LAST_OPER_MODE VARCHAR2(9) LAST_OPER_TIME DATE
GRANULE_SIZE NUMBER SQL> select component,current_size,oper_count,granule_size from
v$sga_dynamic_components; COMPONENT CURRENT_SIZE OPER_COUNT GRANULE_SIZE ------------------------------ ------------ ---------- ------------ shared pool 268435456 0 16777216 large pool 16777216 0 16777216 java pool 167772160 0 16777216 streams
pool 0 0 16777216 DEFAULT buffer cache 637534208 1 16777216 KEEP buffer cache 0 0 16777216 RECYCLE buffer cache 0 0 16777216 DEFAULT 2K buffer cache 0 0 16777216 DEFAULT 4K buffer cache 0 0 16777216 DEFAULT 8K buffer cache 0 0 16777216 DEFAULT 16K buffer cache 0 0
16777216 DEFAULT 32K buffer cache 0 0 16777216 ASM Buffer Cache 0 0 16777216 5.V$SGA_DYNAMIC_FREE_MEMORY 这个视图只有⼀个字段就是⽤来表⽰SGA当前可以⽤于调整各个的空闲区域,也就是sga_max_size - sga中各个pool或区域设置⼤⼩的综合。 SQL> select * from v$sga_dynamic_free_memory; CURRENT_SIZE
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论