sga_max_size sga为实例允许使用的sga 上限,一个静态参数,是不能动态修改的.
---查看sga_max_size大小
SQL> show parameter sga_max_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 172M
SQL>
---更改sga_max_size的大小
SQL> ALTER SYSTEM SET SGA_MAX_SIZE=180M SCOPE=SPFILE;
System altered.
修改sga_max_size大小,重启生效
sga内存按照颗粒度大小granule_size分配内存,如果手工分配内存大小非整数倍的granule_size,则Oracle自动凑为granule_size的整数倍,若SGA<1g granule_size=4M ,SGA>1G granule_size=8M(windows),其他操作系统granule_size=16M
现在我们查看一下SGA颗粒度的大小
SQL> select bytes from v$sgainfo where name='Granule Size';
BYTES
----------
4194304
说明此Oracle SGA<1G
sga_max_size 与 shmmax 的关系
首先查看共享内存段数
[root@mj ~]# ipcs -sa
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32768 gdm 600 393216 2 dest
0x81c0f408 65537 oracle 660 184549376 20
------ Semaphore Arrays --------
key semid owner perms nsems
0x0f4b2ed8 98304 oracle 660 154
------ Message Queues --------
key msqid owner perms used-bytes messages
Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,
shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。一般来说,1-4G 的物理内存,可以直接设置shmmax 为最大物理内存即可,那么SGA 肯定在一个共享内存段中,32Bit Linux 系统物理内存大于4G 的设置为4G 即可,总之,一般设置shmmax >=SGA (32Bit 系统是否支持到1.7G 以上SGA 需要注意) 。如果是64Bit 的Linux 操作系统,shmmax 设置为大于SGA_MAX_SIZE 即可。
sga_max_size可以大于shmmax
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23184238/viewspace-630570/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23184238/viewspace-630570/