Language and Page Formatting Options
16.4. Lowering the SGA Attach Address in Oracle 10g
Starting with Oracle 10g R2 the SGA attach address does not have to be lowered for creating larger SGAs. However, Oracle 10g R1 must be relinked for larger SGAs.
The following commands were executed on a 10g R1 database system:
# ps -ef | grep "[o]ra_ckpt" oracle 3035 1 0 23:21 ? 00:00:00 ora_ckpt_orcl # cat /proc/3035/maps | grep SYSV 50000000-aa200000 rw-s 00000000 00:04 262144 /SYSV8b1d1510 (deleted) #
The following commands were executed on a 10g R2 database system:
# ps -ef | grep "[o]ra_ckpt" oracle 4998 1 0 22:29 ? 00:00:00 ora_ckpt_orcl # cat /proc/4998/maps | grep SYSV 20000000-f4200000 rw-s 00000000 00:04 4390912 /SYSV950d1f70 (deleted) #
The output shows that the SGA attach address in 10g R2 is already lowered to 0x20000000 vs. 0x50000000 in 10g R1. This means that Oracle 10g R2 does not have to be relinked for creating larger SGAs. For 10g R1 the SGA attach address must be lowered from 0x50000000 to e.g. 0xe000000. You could also set it a little bit higher like 0x20000000 as its done by default in 10g Release 2.
The following example shows how to lower the SGA attach address to 0xe000000 in 10g R1 (see also Metalink Note:329378.1):
su - oracle cd $ORACLE_HOME/rdbms/lib [[ ! -f ksms.s_orig ]] && cp ksms.s ksms.s_orig genksms -s 0Xe000000 > ksms.s make -f ins_rdbms.mk ksms.o make -f ins_rdbms.mk ioracle
For a detailed description of these commands, see Lowering the SGA Attach Address for Shared Memory Segments in Oracle 9i.
You can verify the new lowered SGA attach address by running the following command:
$ objdump -t $ORACLE_HOME/bin/oracle |grep sgabeg 0e000000 l *ABS* 00000000 sgabeg $
Now when 10g R1 is restarted the SGA attach address should be at 0xe000000:
# ps -ef | grep "[o]ra_ckpt" oracle 4998 1 0 22:29 ? 00:00:00 ora_ckpt_orcl # cat /proc/4998/maps | grep SYSV 0e000000-c1200000 rw-s 00000000 00:04 0 /SYSV8b1d1510 (deleted) #
Now you should be able to create larger SGAs.
If you increase the size of the SGA, essentially using more process address space for the SGA, then less address space will be available for PGA memory. This means that if your application uses a lot of PGA memory, PGA allocations could fail even if you have sufficient RAM. In this case, you need to set the SGA attach address to a higher value which will lower the SGA size.