Let us we discuss  about what is the difference between sga_max_size & sga_target ? or what is the difference between memory_target & memory_max_target?

* sga_max_size set the over all amount of memory the sga can consume but it is not dynamic

* sga_max_size is allowed to resize sga memory but sga_target is set some value there the ASMM ie enabled it can be adjusted up to sga_max_size parameter not more than it MEMORY_TARGET & MEMORY_MAX_TARGET

* If we set sga_max_size and pga_aggregate_target to 0 then memory_target(optionally memory_max_target) to non-zero value,oracle will manage both sga nd pga with their limit

* if we set memory_targer set 1024mb oracle will manage sga and pga components within itself

* if memory_target is non-zero -SGA_TARGET, SGA_MAX_SIZE, and PGA_AGGREGATE_TARGET are set to 0, 60% of memory mentioned in MEMORY_TARGET is allocated to SGA and rest 40% is kept for PGA. -SGA_TARGET and PGA_AGGREGATE_TARGET are set to non-zero values, these values will be considered minimum values.

-SGA_TARGET is set to non-zero value and PGA_AGGREGATE_TARGET is not initialised . Still these values will be autotuned and PGA_AGGREGATE_TARGET will be initialized with the value of (MEMORY_TARGET-SGA_TARGET).

-PGA_AGGREGATE_TARGET is set and SGA_TARGET is not initialised. Still both parameters will be autotuned. SGA_TARGET will be initialized to a value of (MEMORY_TARGET-PGA_AGGREGATE_TARGET).