【AMM】關於ASM中AMM引數說明

yuntui發表於2016-11-03

關於ASMAMM引數說明

一、概括

Oracle11gR2 RACocrvoting盤也加入到了ASM中,這也更方便管理,在ASM例項中新功能AMM更是oracle強烈推薦使用的,本以為它的設定會資料庫的一樣,卻在檢視、修改中發現許多未解之謎

二、 過程描述
本人是在自己本上搭建的虛擬環境,在搭建完成後,發現系統記憶體有些告急,修改完資料庫記憶體等相關引數後,發現ASMmemory值也不小,如下:

SQL> show parameter mem

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- --------

memory_max_target                    big integer 1076M

memory_target                        big integer 1076M

 檢視SGAPGA

SQL> show parameter sga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------

lock_sga                             boolean     FALSE

sga_max_size                         big integer 256M

sga_target                           big integer 256M

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------

pga_aggregate_target                 big integer 10M


禁用AMM管理

 

SQL> alter system reset memory_max_target;

alter system reset memory_max_target

*

ERROR at line 1:

ORA-32010: cannot find entry to delete in SPFILE

 

SQL> alter system reset memory_target;  

alter system reset memory_target

*

ERROR at line 1:

ORA-32010: cannot find entry to delete in SPFILE

 

生成PFILE檔案,並檢視,發現引數檔案中並沒有memory兩個引數

SQL> create pfile='/tmp/a.ora' from spfile;

 

File created.

 

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

[grid@rac01 ~]$ cat /tmp/a.ora

+ASM1.asm_diskgroups='DATA'#Manual Mount

+ASM2.asm_diskgroups='DATA'#Manual Mount

*.asm_diskstring='/dev/asm*'

*.asm_power_limit=1

*.diagnostic_dest='/grid/crs_base'

*.instance_type='asm'

*.large_pool_size=12M

*.pga_aggregate_target=10485760

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_max_size=268435456

*.sga_target=268435456

 

再次修改兩個引數


SQL> alter system set memory_max_target=1G scope=spfile;

 

System altered.

 

SQL> alter system set memory_target=1G scope=spfile;

 

System altered.


重啟ASM(注意,因orc存在與ASM中,所以重啟需root使用者)
命令crsctl stop/start crs/cluster

重啟後,再次檢視


SQL> show parameter mem

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 1G

memory_target                        big integer 1G

 

再次設定

SQL> show parameter mem

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 1G

memory_target                        big integer 1G

SQL> alter system set memory_max_target=256M scope=spfile;

 

System altered.

 

SQL> alter system set memory_target=256M scope=spfile;

 

System altered.

 

重啟後檢視

SQL> show parameter mem

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 1G

memory_target                        big integer 1G

 

發現引數未變,而生成PFILE檔案檢視,兩個引數均為256M
檢視alert日誌,發現警告,memory_target最小值及sga太小。

WARNING: Minimum MEMORY_TARGET required on ASM instance is 1073741824

* instance_number obtained from CSS = 1, checking for the existence of node 0...

* node 0 does not exist. instance_number = 1

Starting ORACLE instance (normal)

Specified value of sga_max_size is too small, bumping to 641728512

LICENSE_MAX_SESSION = 0

……………….

ORACLE_HOME = /grid/crs_home/product/11.2.0

System name:    Linux

Node name:      rac01

Release:        2.6.32-279.el6.x86_64

Version:        #1 SMP Wed Jun 13 18:24:36 EDT 2012

Machine:        x86_64

VM name:        VMWare Version: 6

Using parameter settings in server-side spfile +CRS/rac-cluster/asmparameterfile/registry.253.839461197

System parameters with non-default values:

  sga_max_size             = 612M

  large_pool_size          = 12M

  instance_type            = "asm"

  sga_target               = 0

  memory_target            = 1G

  memory_max_target        = 1G

  remote_login_passwordfile= "EXCLUSIVE"

  pga_aggregate_target     = 0

  asm_diskstring           = "/dev/asm*"

  asm_diskgroups           = "DATA"

  asm_power_limit          = 1

  diagnostic_dest          = "/grid/crs_base"

 

如果將sga兩個引數及pga引數reset,重啟,不會警告sga太小,重啟後引數值如下:

SQL> show parameter mem   

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 1G

memory_target                        big integer 1G

SQL> show parameter sga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

lock_sga                             boolean     FALSE

sga_max_size                         big integer 1G

sga_target                           big integer 0

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_target                 big integer 0


再次禁用AMMAMM管理引數時memory_target,memory_max_target是作為一個上限來約束前者的。

設定好SGAPGA

SQL> show parameter sga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

lock_sga                             boolean     FALSE

sga_max_size                         big integer 208M

sga_target                           big integer 208M

SQL> alter system set memory_target=0 scope=spfile;

 

System altered.

 

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_target                 big integer 0

SQL> alter system set pga_aggregate_target=10M;

 

System altered.

 

檢視修改後PFILE檔案

 

SQL> create pfile='/tmp/asm.ora' from spfile;

 

File created.

 

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

[grid@rac01 trace]$ vi /tmp/asm.ora

+ASM1.asm_diskgroups='DATA'#Manual Mount

+ASM2.asm_diskgroups='DATA'#Manual Mount

*.asm_diskstring='/dev/asm*'

*.asm_power_limit=1

*.diagnostic_dest='/grid/crs_base'

*.instance_type='asm'

*.large_pool_size=12M

*.memory_max_target=268435456

*.memory_target=0

*.pga_aggregate_target=10485760

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_max_size=209715200

*.sga_target=209715200

 

重啟叢集,檢視mem引數


SQL> show parameter mem

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 256M

memory_target                        big integer 0

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_target                 big integer 10M

SQL> show parameter sga

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

lock_sga                             boolean     FALSE

sga_max_size                         big integer 208M

sga_target                           big integer 208M

 

這次看著好像正常點了,前邊我們是將memory_target設定為0來取消AMM,那麼將兩個memory引數都reset後,系統會啟用1076M這個值,加入兩個引數都設定為0呢個,這個我們將在下一節討論。

三、   現在我們是禁用了AMM管理,卻有幾個疑問:
1
、但是為什麼需要設定memory_max_target這個引數呢,

2、   官方說明,memory_target最小值應為256M,但是設定後為什麼不生效,

3、  起初SPFILE引數中並沒有設定MEMORY兩個引數,ASM是怎麼得到的
在其他redhat平臺下檢視相同版本資料庫ASM中預設memory值也為1076MAIX/HPUX平臺各不一樣。



附:官方關於ASMMEMORY引數說明
主要有兩點,一個是oracle強烈建議使用AMM、二是memory_target最小值為256M

還說明一個是AMMASM中預設啟用

Automatic Memory Management for Oracle ASM

Automatic memory management automatically manages the memory-related parameters for both Oracle ASM and database instances with the MEMORY_TARGETparameter. Automatic memory management is enabled by default on an Oracle ASM instance, even when the MEMORY_TARGET parameter is not explicitly set. The default value used for MEMORY_TARGET is acceptable for most environments. This is the only parameter that you must set for complete Oracle ASM memory management. Oracle strongly recommends that you use automatic memory management for Oracle ASM.

If you do not set a value for MEMORY_TARGET, but you do set values for other memory related parameters, Oracle internally calculates the optimum value forMEMORY_TARGET based on those memory parameter values. You can also increase MEMORY_TARGET dynamically, up to the value of the MEMORY_MAX_TARGET parameter, just as you can do for the database instance.

Although it is not recommended, you can disable automatic memory management by either setting the value for MEMORY_TARGET to 0 in the Oracle ASM parameter file or by running an ALTER SYSTEM SET MEMORY_TARGET=0 statement. When you disable automatic memory management, Oracle reverts to auto shared memory management and automatic PGA memory management. To revert to Oracle Database 10g release 2 (10.2) functionality to manually manage Oracle ASM SGA memory, also run the ALTER SYSTEM SET SGA_TARGET=0 statement. You can then manually manage Oracle ASM memory using the information in "Oracle ASM Parameter Setting Recommendations", that discusses Oracle ASM memory-based parameter settings. Unless specified, the behaviors of the automatic memory management parameters in Oracle ASM instances behave the same as in Oracle Database instances.

Notes:

·         For a Linux environment, automatic memory management cannot work if /dev/shm is not available or is undersized. For more information, see Oracle Database Administrator's Reference for Linux and UNIX-Based Operating Systems. For information about platforms that support automatic memory management, see Oracle Database Administrator's Guide.

·         The minimum MEMORY_TARGET for Oracle ASM is 256 MB. If you set MEMORY_TARGET to 100 MB, then Oracle increases the value for MEMORY_TARGET to 256 MB automatically.

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127666/,如需轉載,請註明出處,否則將追究法律責任。

相關文章