首先需要确定ASM实例使用的是SPFILE,而不是使用PFILE,这样可以帮助我们更好的管理ASM实例。
下面是ASM实例的内存结构的组件及其功能:
共享池 :用于元数据信息。
大型池 :用于并行操作。
ASM高速缓存 :用于在重新平衡操作期间读取和写入块。
空闲内存 :可用的未分配内存。
下面是最常见和最常用的ASM初始化参数配置:
INSTANCE_TYPE = ASM
ASM_POWER_LIMIT = 1
ASM_DISKSTRING = '/dev/sda1',/dev/sdb*'
ASM_DISKGROUPS= DATA2, FRA
ASM_PREFERRED_READ_FAILURE_GROUPS=DATA.FAILGROUP2
DIAGNOSTIC_DEST = /u01/app/grid
LARGE_POOL_SIZE = 12M
REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE
在这里只设置了大池的空间,没有设置SGA_TARGET,也没有设置MEMORY_TARGET,那么ASM实例使用多大的SGA和PGA呢?
Oracle ASM实例默认启用AMM(Automatic Memory Management),即使当MEMORY_TARGET参数没有明确的设置,ASM实例也能正常的使用。在Oracle 11.2 MEMORY_TARGET使用的默认值是272MB(SGA_TARGET 256MB,加上PGA_TARGET 16M),默认的配置对于大多数环境都是适用的。
如果使用过程中11.2 ASM实例的默认内存参数过小,可能会导致在ASM实例出现ORA-04031的错误。
以下的公式将计算出ASM实例适合的MEMORY_TARGET值,这个查询将确定shared_pool的增长,基于此能计算出最适合的MEMORY_TARGET:
new MEMORY_TARGET = current MEMORY_TARGET + 20 percent + growth of "shared pool"
如果出现了ORA-04031的错误,那么在重启ASM实例之前执行下面的SQL语句确定当前以及最新的shared pool值:
column "current value" form a15
select MT "current value", (1.2*MT) + difference "new value"
from (select value as MT from v$parameter where name='memory_target'),
(select (max_size - current_size) as difference
from v$memory_dynamic_components where component='shared pool');
下面我将贴出Oracle Exadata x4-2 eighth(Oracle RAC Database 11.2.0.4.6 )上Oracle ASM实例的内存配置,可以为我们提供一些参考:
SQL> select name,round(bytes/1024/1024,2) mb from v$sgainfo;
NAME MB
------------------------------ ----------
Fixed SGA Size 2.15
ASM Cache Size 32
Shared Pool Size 1968
Large Pool Size 32
Granule Size 16
Maximum SGA Size 2038.85
Startup overhead in Shared Poo 295.71
l
Free SGA Memory Available 0
8 rows selected.
ASM实例的所有组件中,Shared Pool占用的空间是最大的,所以在调整内存参数值时应该重点关注Shared Pool内存的变化。
SQL> show parameter large
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
large_pool_size big integer 16M
use_large_pages string TRUE
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
lock_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string +DBFS_DG/cluster-clu1/asmparam
eterfile/registry.253.84996746
5
SQL> create pfile='/tmp/asm_pfile.txt' from spfile;
File created.
SQL> !cat /tmp/asm_pfile.txt
+ASM1.asm_diskgroups='DATAC1','RECOC1'#Manual Mount
+ASM2.asm_diskgroups='DATAC1','RECOC1'#Manual Mount
*.asm_diskstring='o/*/*'
*.asm_power_limit=1
*.audit_syslog_level='local0.info'
+ASM1.cluster_interconnects='192.168.10.1:192.168.10.2'
+ASM2.cluster_interconnects='192.168.10.3:192.168.10.4'
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.memory_target=0
*.pga_aggregate_target=419430400
*.processes=1024
*.remote_listener='dm01-scan:1521'
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2147483648
参考文章:《 ORA-04031 on ASM Instance - default memory parameters for 11.2 ASM instances are too low (文档 ID 1536039.1) 》
--end--
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29302187/viewspace-2124646/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29302187/viewspace-2124646/