• Oracle内存管理(五)


    【深度分析--eygle】学习笔记

    1.4. 2其他内存组件

    Large Pool-大池是SGA的一个可选组件,通经常使用于共享server模式(MTS)、 并行计算或

    RMAN的备份恢复等操作。

    Java Pool-Java池主要用于JVM等Java选件。

    Streams Pool-Streams pool是Oracle10g引入的概念,为Oracle的Streams功能所使用,假设不定义该參数,这部分内存将从Shread Pool中分配

    对于SGA各部分内存分配,能够从数据库的视图中查询得到:

    17:46:03 sys@felix SQL>select * from v$sga;

    NAME                                          VALUE

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

    Fixed Size                                  2228944

    Variable Size                             335547696

    Database Buffers                           75497472

    Redo Buffers                                4272128

    18:00:20 sys@felix SQL>

    在Oracle9i中,Variable  Size  包含shared_pool_size,java_pool_size和large_pool_size部分,SGA_MAX_SIZE去除db_cache_size部分也被归入可变部分,所以非常多时候我们看到的可变部分内存要远高于可变内存组件大小;

    Redo Buffers指日志缓冲区分配的内存大小,这个參数值通常比log_buffers參数设置略大;由于Log  Buffer并不是依照数据块大小分配,在内存中通常须要设置保护页对Log Buffer进行保护。

    18:00:20 sys@felix SQL>select * from v$sgainfo;

    NAME                                          BYTESRESIZE

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

    Fixed SGA Size                              2228944 No

    Redo Buffers                                4272128 No

    Buffer Cache Size                          75497472 Yes

    Shared Pool Size                          171966464 Yes

    Large Pool Size                             4194304 Yes

    Java Pool Size                              4194304 Yes

    Streams Pool Size                           8388608 Yes

    Shared IO Pool Size                               0 Yes

    Granule Size                                4194304 No

    Maximum SGA Size                          417546240 No

    Startup overhead in Shared Pool            65418776 No

    Free SGA Memory Available                 146800640

    12 rows selected.

    18:06:23 sys@felix SQL>

    当前SGA的分配和使用详细信息我们还能够通过V$SGASTAT视图查询得到:

    select *

      FROM(SELECT *

             FROM v$sgastat

            WHERE pool = 'shared pool'

            ORDER BY BYTES DESC)

     WHERE ROWNUM<= 5

    18:06:23 sys@felix SQL>select *

    18:08:05  2    FROM (SELECT *

    18:08:05  3            FROM v$sgastat

    18:08:05  4           WHERE pool = 'sharedpool'

    18:08:05  5           ORDER BY BYTES DESC)

    18:08:05  6   WHERE ROWNUM <= 5;

    POOL                    NAME                                          BYTES

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

    shared pool              free memory                                30868336

    shared pool              SQLA                                       21540248

    shared pool              KGLH0                                      19496600

    shared pool              row cache                                   7593704

    shared pool              PLMCD                                       6275624

    18:08:07 sys@felix SQL>


    1.4.3 SGA 与共享内存

    SGA的设置在Linux/Unix上和一个操作系统内核參数有关,这个參数是:shmmax。不同操作系统,该參数设置的位置不同,在Solaris 上,该參数由/etc/system 文件里shmsys:shminfo_shmmax定义。在Linux上,该參数由/proc/sys/kernel/shmmax參数定义

    非常多人将该參数理解为共享内存的大小,这是不正确的。实际上shmmax内核參数定义的是系统同意的单个共享内存段的最大值。假设该參数设置小于Oracle SGA设置,那么SGA仍然能够创建成功,可是会被分配多个共享内存段。

    我们通常推荐通过调整shmmax设置。将SGA限制在一个共享内存段中。

    在Windows系统中,因为系统採用多线程服务器(全部oracle server   process 实际上都是一个进程中的线程),所以不存在共享内存的问题。无需进行特殊设置。

    以64位Linux平台为例来看一下shmmax參数对于数据库的影响。

    [root@felix kernel]# uname -a

    Linux felix 2.6.39-200.24.1.el6uek.x86_64 #1 SMPSat Jun 23 02:39:07 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

    [root@felix kernel]#

                                                                                                                                                

    [root@felix kernel]# pwd

    /proc/sys/kernel

    [root@felix kernel]# ls shm*

    shmall shmmax  shmmni

    [root@felix kernel]# cat shmmax

    4398046511104

    [root@felix kernel]#


    能够通过ipcs 命令查看此设置下共享内存的分配。我们能够看到Oracle分配了多个共享内存段以满足SGA设置的须要

    [root@felix kernel]# ipcs -sa

     

    ------ Shared Memory Segments --------

    key       shmid      owner      perms     bytes      nattch     status     

    0x6c6c6536 0          root       600        4096       0                      

    0x00000000 32769      gdm       600        393216     2         dest        

    0x00000000 65538      gdm       600        393216     2         dest        

    0x00000000 98307      gdm       600        393216     2         dest        

    0x00000000 131076     gdm       600        393216     2         dest        

    0x00000000 163845     gdm       600        393216     2         dest        

    0x00000000 229382    oracle     640       4096       0                      

    0x00000000 262151    oracle     640        4096       0                      

    0xb875ccb0 294920    oracle     640        4096       0     --在此能够看出,该oracle数据库使用了3个内存段                

     

    ------ Semaphore Arrays --------

    key       semid      owner      perms     nsems    

    0x00000000 0          root       600        1        

    0x00000000 32769      root      600        1        

    0x549cc314 163842     oracle    640        154      

     

    ------ Message Queues --------

    key       msqid      owner      perms     used-bytes   messages   

     

    [root@felix kernel]#


    通过以上输出看到为了创建OracleSGA,系 统 共 分 配 了3个共享内存段

    接下来针对一个后台进程。使用pmap具查看一下每一个共享内存段的地址空间

     

    [root@felix kernel]# ps  -ef | grep dbw

    oracle   2493     1  0 10:22 ?        00:00:00 ora_dbw0_felix

    root     2688  2201  0 10:31 pts/0    00:00:00 grep dbw

    [root@felix kernel]#


    [root@felix kernel]# pmap  2493

    2493:  ora_dbw0_felix

    0000000000400000 183412K r-x--  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

    000000000b91d000  1884K rwx-- /u01/app/oracle/product/11.2.0/db_1/bin/oracle

    000000000baf4000   304K rwx--    [ anon ]

    000000000d796000   444K rwx--    [ anon ]

    0000000060000000      4K r-xs- /dev/shm/ora_felix_229382_0

    0000000060001000  4092K rwxs- /dev/shm/ora_felix_229382_0

    0000000060400000  4096K rwxs- /dev/shm/ora_felix_229382_1

    0000000060800000  4096K rwxs- /dev/shm/ora_felix_262151_0

    0000000060c00000  4096K rwxs- /dev/shm/ora_felix_262151_1

    0000000061000000  4096K rwxs-  /dev/shm/ora_felix_262151_2

    0000000061400000  4096K rwxs- /dev/shm/ora_felix_262151_3

    0000000061800000  4096K rwxs- /dev/shm/ora_felix_262151_4

    0000000061c00000  4096K rwxs- /dev/shm/ora_felix_262151_5

    0000000062000000  4096K rwxs-  /dev/shm/ora_felix_262151_6

    0000000062400000  4096K rwxs- /dev/shm/ora_felix_262151_7

    0000000062800000  4096K rwxs- /dev/shm/ora_felix_262151_8

    0000000062c00000  4096K rwxs- /dev/shm/ora_felix_262151_9

    0000000077400000  4096K rwxs- /dev/shm/ora_felix_262151_91

    0000000077800000  4096K rwxs- /dev/shm/ora_felix_262151_92

    0000000077c00000  4096K rwxs- /dev/shm/ora_felix_262151_93

    0000000078000000  4096K rwxs- /dev/shm/ora_felix_262151_94

    0000000078400000  4096K rwxs- /dev/shm/ora_felix_262151_95

    0000000078800000  4096K rwxs- /dev/shm/ora_felix_262151_96

    0000000078c00000  4096K rwxs- /dev/shm/ora_felix_262151_97

    0000000079000000  4096K rwxs- /dev/shm/ora_felix_294920_0

     

    注意:这里的229382、262151等就是ipcs里所示共享内存ID(shmid)。

     

    00000030a0800000   128K r-x--  /lib64/ld-2.12.so

    00000030a0a21000      4K rwx--    [ anon ]

    00000030a0c00000      4K r-x-- /lib64/libaio.so.1.0.1

    00000030a138c000      4K rwx-- /lib64/libc-2.12.so

    00000030a138d000    20K rwx--    [ anon ]

    00000030a1400000   524K r-x--  /lib64/libm-2.12.so

    00000030a1a18000      4K rwx-- /lib64/libpthread-2.12.so

    00000030a1a19000    16K rwx--    [ anon ]

    00000030a2207000      4K rwx-- /lib64/librt-2.12.so

    00000030b1800000    32K r-x--  /usr/lib64/libnuma.so.1

    00000030b2000000    88K r-x--  /lib64/libnsl-2.12.so

    00000030b2016000  2044K -----  /lib64/libnsl-2.12.so

    00000030b2215000      4K r-x-- /lib64/libnsl-2.12.so

    00000030b2216000      4K rwx-- /lib64/libnsl-2.12.so

    00000030b2217000      8K rwx--    [ anon ]

    00007f7f3c5d0000    64K rwx--  /dev/zero

    00007f7f3c5e0000    64K rwx--  /dev/zero

    00007f7f3c5f0000   144K rwx--  /dev/zero

    00007f7f3c614000  7588K rwx--    [ anon ]

    00007f7f3cf8a000      4K rwx-- /lib64/libnss_files-2.12.so

    00007f7f3cfab000      4K rwxs- /u01/app/oracle/product/11.2.0/db_1/dbs/hc_felix.dat

    00007f7f3cfac000  1296K rwx--    [ anon ]

    00007f7f3d0f0000      8K r-x-- /lib64/libdl-2.12.so

    00007f7f3d0f2000  2048K -----  /lib64/libdl-2.12.so

    00007f7f3d2f2000      4K r-x-- /lib64/libdl-2.12.so

    00007f7f3d2f3000      4K rwx-- /lib64/libdl-2.12.so

    00007f7f3d2f4000      4K rwx--    [ anon ]

    00007f7f3d2f5000    44K r-x-- /u01/app/oracle/product/11.2.0/db_1/lib/libocrutl11.so

    00007f7f3d300000  1024K ----- /u01/app/oracle/product/11.2.0/db_1/lib/libocrutl11.so

    00007f7f3d400000      4K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libocrutl11.so

    00007f7f3d401000   652K r-x-- /u01/app/oracle/product/11.2.0/db_1/lib/libocrb11.so

    00007f7f3d4a4000  1020K ----- /u01/app/oracle/product/11.2.0/db_1/lib/libocrb11.so

    00007f7f3d5a3000      8K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libocrb11.so

    00007f7f3d5a5000      4K rwx--    [ anon ]

    00007f7f3d5a6000   668K r-x-- /u01/app/oracle/product/11.2.0/db_1/lib/libocr11.so

    00007f7f3df1c000  1020K -----  /u01/app/oracle/product/11.2.0/db_1/lib/libhasgen11.so

    00007f7f3e01b000   136K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libhasgen11.so

    00007f7f3e03d000    28K rwx--    [ anon ]

    00007f7f3e044000   136K r-x-- /u01/app/oracle/product/11.2.0/db_1/lib/libdbcfg11.so

    00007f7f3e066000  1020K ----- /u01/app/oracle/product/11.2.0/db_1/lib/libdbcfg11.so

    00007f7f3e609000   264K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libnnz11.so

    00007f7f3e64b000   144K rwx--    [ anon ]

    00007f7f3e66f000   864K r-x-- /u01/app/oracle/product/11.2.0/db_1/lib/libskgxp11.so

    00007f7f3e9ab000    40K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libcell11.so

    00007f7f3e9b5000      8K rwx--    [ anon ]

    00007f7f3eab8000      4K rwx-- /u01/app/oracle/product/11.2.0/db_1/lib/libodmd11.so

    00007f7f3eab9000      4K rwx--    [ anon ]

    00007fffba5e0000   132K rwx--    [ stack ]

    00007fffba7a6000      4K r-x--    [ anon ]

    ffffffffff600000      4K r-x--    [ anon ]

     total           656228K


    为了避免多个共享内存段,能够改动shmmax内核參数,使SGA存在于一个共享内存段中。通过改动/proc/sys/kernel/shmmax參数能够达到此目的。

     

     

    下面是一个环境中的设置:

    [root@danaly root]# echo 1610612736 >/proc/sys/kernel/shmmax

    [root@danaly root]# more /proc/sys/kernel/shmmax

    1610612736

    这里改动为1.5G。对于shmmax 文件的改动,系统又一次启动后会复位能够通过改动/etc/sysctl.conf 文件使更改永久化。

    在该文件内加入下面一行,这个更改在系统又一次启动后生效:

    kernel.shmmax =1610612736

    改动shmmax之后。须要重起数据库使更改生效。

     

    通常,假设没有改动shmmax參数,Oracle在启动过程中就会在告警日志文件里记录例如以下警告:

    Starting ORACLE instance (normal)

    Thu Nov 17 09:27:29 2005

    WARNING: EINVAL creating segment of size 0x0000000033400000

    fix shm parameters in /etc/system or equivalent

    这是一个WARNING的ᨀ示。说明是建议修正。但并不是强制的内容。在Solaris平台上,有时候也会看到类似的警报:

    Sun Apr 30 05:35:20 2006

    Starting ORACLE instance (normal)

    Sun Apr 30 05:35:20 2006

    WARNING: Not enough physical memory forSHM_SHARE_MMU segment of size 0x000000006d400000

    [flag=0x4000]

    这一般是由于SGA设置过大。超过了物理内存而导致的,这样的情况通过修正參数就可以解决。有时候这类警告也可能是由于数据库异常关闭,后台进程未正常退出,共享 内 存 未 及 时 释放引起的,对于这样的情况。能够通过ipcs命令找到共享内存段id(shared memory id),然后通过ipcrm命令能够强制释放该共享内存段,完毕这些特殊处理后,数据库通常就能够正常启动了。

    1.4.4  9i SGA管理

    从Oracle9i開始,Oracle 推出了动态SGA调整,也就是说,同意我们不又一次启动数据库而使得SGA的改动生效

    在Oracle9i中,我们能够设置參数SGA_MAX_SIZE,该參数用以控制各缓冲池使用的内存总和,本质上是在进程中预先分配一段虚拟地址备用而不分配物理内存。目的是防止和进程私有地址段的冲突:

    11:00:10 sys@felix SQL>show parameter sga_max

    NAME                                 TYPE                   VALUE

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

    sga_max_size                         big integer            400M

    11:00:15 sys@felix SQL>

    11:08:02 sys@felix SQL>select tname from tab where tname like'%ADVICE%';

    TNAME

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

    WRH$_STREAMS_POOL_ADVICE

    WRH$_SHARED_POOL_ADVICE

    WRH$_SGA_TARGET_ADVICE

    WRH$_PGA_TARGET_ADVICE

    WRH$_MTTR_TARGET_ADVICE

    WRH$_MEMORY_TARGET_ADVICE

    WRH$_JAVA_POOL_ADVICE

    WRH$_DB_CACHE_ADVICE_BL

    WRH$_DB_CACHE_ADVICE

    V_$STREAMS_POOL_ADVICE

    V_$SHARED_POOL_ADVICE

    V_$SGA_TARGET_ADVICE

    V_$PX_BUFFER_ADVICE

    V_$PGA_TARGET_ADVICE_HISTOGRAM

    V_$PGA_TARGET_ADVICE

    V_$MTTR_TARGET_ADVICE

    V_$MEMORY_TARGET_ADVICE

    V_$JAVA_POOL_ADVICE

    V_$DB_CACHE_ADVICE

    SAM_SPARSITY_ADVICE

    GV_$STREAMS_POOL_ADVICE

    GV_$SHARED_POOL_ADVICE

    GV_$SGA_TARGET_ADVICE

    GV_$PX_BUFFER_ADVICE

    GV_$PGA_TARGET_ADVICE

    GV_$PGATARGET_ADVICE_HISTOGRAM

    GV_$MTTR_TARGET_ADVICE

    GV_$MEMORY_TARGET_ADVICE

    GV_$JAVA_POOL_ADVICE

    GV_$DB_CACHE_ADVICE

    DBA_HIST_STREAMS_POOL_ADVICE

    DBA_HIST_SHARED_POOL_ADVICE

    DBA_HIST_SGA_TARGET_ADVICE

    DBA_HIST_PGA_TARGET_ADVICE

    DBA_HIST_MTTR_TARGET_ADVICE

    DBA_HIST_MEMORY_TARGET_ADVICE

    DBA_HIST_JAVA_POOL_ADVICE

    DBA_HIST_DB_CACHE_ADVICE

    38 rows selected.

    11:08:24 sys@felix SQL>

    当中和SGA相关的是V$DB_CACHE_ADVICE和V$SHARED_POOL_ADVICE。这些新功能通过在数据库执行时持续不断的收集信息。从而对内存的设置ᨀ供建议。

    缓冲区快速缓存建议(buffer cacheadvisory) 受初始化參数DB_CACHE_ADVICE控制。

    该參数为动态參数。可用的值有三个OFF、ON 和READY。

    DB_CACHE_ADVICE 不同參数值的含义分别例如以下:

    OFF-关闭建议而且不为建议分配内存

    ON-开启建议而且CPU 和内存开销都会发生

    READY-关闭建议可是仍保留为建议分配的内存

    在某些版本号中。假设在參数为OFF 状态时尝试将其设置为ON 可能会出现ORA-4031错误。无法从共享池中分配内存;假设參数处于READY 状态则能够将其设置为ON 而不会错误发生,这是由于须要的内存已经分配。

    11:08:24 sys@felix SQL>show parameterdb_cache_ad

    NAME                                 TYPE                   VALUE

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

    db_cache_advice                      string                 ON

    11:13:35 sys@felix SQL>

    我们看一下一个数据库中。Oracle收集的buffer cache建议信息:

    11:13:35 sys@felix SQL>select id,

    11:17:28  2         name,

    11:17:28  3         block_size,

    11:17:28  4         size_for_estimate         sfe,

    11:17:28  5         size_factor               sf,

    11:17:28  6        estd_physical_read_factor eprf,

    11:17:28   7        estd_physical_reads       epr

    11:17:28  8    from v$db_cache_advice;

     

     ID NAME       BLOCK_SIZE        SFE         SF       EPRF        EPR

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

      3DEFAULT          8192          4     .0588     1.4798      20700

      3DEFAULT          8192          8     .1176     1.3237      18517

      3DEFAULT          8192         12     .1765     1.2074      16890

      3DEFAULT          8192         16     .2353     1.1395      15940

      3 DEFAULT          8192         20     .2941     1.1236      15717

      3DEFAULT          8192         24     .3529     1.1033      15434

      3DEFAULT          8192         28     .4118     1.0896      15242

      3DEFAULT          8192         32     .4706     1.0838      15161

      3DEFAULT          8192         36     .5294     1.0759      15050

      3DEFAULT          8192         40     .5882     1.0715      14990

      3DEFAULT          8192         44     .6471     1.0643      14889

      3DEFAULT          8192         48     .7059     1.0614      14848

      3DEFAULT          8192         52     .7647     1.0542      14747

      3DEFAULT          8192         56     .8235     1.0441      14606

      3DEFAULT          8192         60     .8824     1.0412      14565

      3 DEFAULT          8192         64     .9412     1.0094      14120

      3 DEFAULT          8192         68          1          1     13989

      3DEFAULT          8192         72    1.0588      .9964      13938

      3DEFAULT          8192         76    1.1176      .9942      13908

      3DEFAULT          8192         80    1.1765      .9877      13817

     

    20 rows selected.

     

    11:17:28 sys@felix SQL>


    我们能够看到。伴随db_cache_size的增大。预计的物理读(estd_physical_reads)在逐渐降低,我们的选择就在于在db_cache_size的设置和physical_reads之间寻找一个边际效益最高点,使用能够接受的内存设置,获得尽量低的物理读。

     

    而对于Shred  Pool 的建议则受到另外一个初始化參数的影响,这个參数是: STATISTICS_LEVELSTATISTICS_LEVEL控制数据库收集的统计信息的级别,该參数有三个选项:

     

    1BASIC-收集主要的统计信息

    2TYPICAL-收集大部分的统计信息,这是系统的缺省设置,为了从Oracle不断添加的新特性中受益,始终应该将该參数设置为典型.

    3ALL-收集所有的统计信息.

    能够通过v$statistics_level视图来查看该參数的影响范围,在Oracle11g中该视图中的条目已经添加到24个:

    11:35:29 sys@felix SQL>col STATISTICS_NAME fora30;

    11:35:52 sys@felix SQL>select STATISTICS_NAME,

    11:36:00  2         SESSION_STATUS,

    11:36:00  3         SYSTEM_STATUS,

    11:36:00  4         ACTIVATION_LEVEL,

    11:36:00  5         SESSION_SETTABLE

    11:36:00  6    from v$statistics_level;

     

    STATISTICS_NAME                SESSION_STATUS   SYSTEM_STATUS    ACTIVATION_LEV SESSIO

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

    Buffer Cache Advice            ENABLED          ENABLED          TYPICAL        NO

    MTTR Advice                    ENABLED          ENABLED          TYPICAL        NO

    Timed Statistics               ENABLED          ENABLED          TYPICAL        YES

    Timed OS Statistics            DISABLED         DISABLED         ALL            YES

    Segment Level Statistics       ENABLED          ENABLED          TYPICAL        NO

    PGA Advice                     ENABLED          ENABLED          TYPICAL        NO

    Plan Execution Statistics      DISABLED         DISABLED         ALL            YES

    Shared Pool Advice             ENABLED          ENABLED          TYPICAL        NO

    Modification Monitoring        ENABLED          ENABLED          TYPICAL        NO

    Longops Statistics            ENABLED          ENABLED          TYPICAL        NO

    Bind Data Capture              ENABLED          ENABLED          TYPICAL        NO

    Ultrafast Latch Statistics     ENABLED          ENABLED          TYPICAL        NO

    Threshold-based Alerts         ENABLED          ENABLED          TYPICAL        NO

    Global Cache Statistics        ENABLED          ENABLED          TYPICAL        NO

    Active Session History         ENABLED          ENABLED          TYPICAL        NO

    Undo Advisor, Alerts and Fast  ENABLED          ENABLED          TYPICAL        NO

    Ramp up

     

    Streams Pool Advice            ENABLED          ENABLED          TYPICAL        NO

    Time Model Events              ENABLED          ENABLED          TYPICAL        YES

    Plan Execution Sampling        ENABLED          ENABLED          TYPICAL        YES

    Automated Maintenance Tasks    ENABLED          ENABLED          TYPICAL        NO

    SQL Monitoring                 ENABLED          ENABLED          TYPICAL        YES

    Adaptive Thresholds Enabled    ENABLED          ENABLED          TYPICAL        NO

    V$IOSTAT_* statistics          ENABLED          ENABLED          TYPICAL        NO

     

    23 rows selected.



    能够看到在TYPICAL设置下。Timed OS Statistics    Plan Execution Statistics  信息不收集外,其它信息都被收集

    当中,  Buffer  Cache Advice    db_cache_advice 參数独立控制, Timed  Statistics    timed_statistics  參数独立控制。

    其它统计信息的收集都受到STATISTICS_LEVEL  參数的控制。

    STATISTICS_LEVELBasic时。除受独立參数影响的Buffer Cache Advice  TimedStatistics  外,其它信息收集都将被禁止。

    我们能够通过查询V$SHARED_POOL_ADVICE视图获得关于Shared Pool的建议信息:


    11:36:01 sys@felix SQL>selectSHARED_POOL_SIZE_FOR_ESTIMATE SPSFE,

    11:47:38  2        SHARED_POOL_SIZE_FACTOR      SPSF,

    11:47:38  3         ESTD_LC_SIZE,

    11:47:38  4         ESTD_LC_MEMORY_OBJECTS        ELMO,

    11:47:39  5         ESTD_LC_TIME_SAVED            ELTS,

    11:47:39  6        ESTD_LC_TIME_SAVED_FACTOR    ELTSF,

    11:47:39  7        ESTD_LC_MEMORY_OBJECT_HITS   ELMOH

    11:47:39  8    from v$shared_pool_advice;

     

        SPSFE       SPSF ESTD_LC_SIZE       ELMO       ELTS     ELTSF      ELMOH

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

          104      .6341            8        834        814     .8781      25081

          124      .7561           28       1903        843     .9094      25874

          128      .7805           32       2109        848     .9148      25951

          132      .8049           35       2318        861     .9288      26110

          136      .8293           39      2508        867     .9353      26201

          140      .8537           42       2715        873     .9417      26293

          144       .878           46       2914        882     .9515      26404

          148      .9024           50       3162        889       .959     26515

          152      .9268           50       3221        897     .9676      26787

          156      .9512           50       3221        904     .9752      27085

          160      .9756           50       3221        916     .9881      28117

          164          1           50       3221        927          1     29153

          168     1.0244           50       3221        927          1     29157

          172     1.0488           50       3221        927          1     29157

          176     1.0732           50       3221        927          1     29157

          180     1.0976           50       3221        927          1     29157

          184      1.122           50       3221        927          1     29157

          188     1.1463           50       3221        927          1     29157

          192     1.1707           50       3221        927          1     29157

          196     1.1951           50       3221        927          1     29157

          200     1.2195           50       3221        927          1     29157

          204     1.2439           50       3221        927          1     29157

          224     1.3659           50       3221        927          1     29157

          244     1.4878           50       3221        927          1     29157

          264     1.6098           50       3221        927          1     29157

          284     1.7317           50       3221        927          1     29157

          304     1.8537           50       3221        927          1     29157

          324     1.9756           50       3221        927          1     29157

          344     2.0976           50       3221        927          1     29157

     

    29 rows selected.

     

    11:47:40 sys@felix SQL>


    通过以上统计数据分析。当shared_pool_size设置为304M时就可以达到和如今同样的效果。

    眼下的shared_pool_size设置浪费了部分内存,那么我们就能够动态调整shared_pool_size參数,

    释放这部分内存,留给其它内存组件使用。

    SQL> alter system setshared_pool_size=304M;

    当进行动态參数改动时,改动Session会处于等待状态,等待事件为background parameter

    adjustment

    SQL> selectsid,seq#,event,SECONDS_IN_WAIT,state

    2 from v$session_waitwhere sid=80;

    SID  SEQ# EVENT    SECONDS_IN_WAIT STATE

    ---------- ------------------------------------------------------------------------80  46479  background parameter adjustment    928  WAITING

    这个调整的时间可能极其漫长,从v$lock视图中。我们还能够获得相关锁定信息:

    SQL> select * fromv$lock where sid=80;

    ADDR KADDR SID TYPE ID1ID2 LMODE

    REQUEST CTIME BLOCK

    -------------------------------- ---------- ---- ---------- ---------- ------------------------------ ----------00000003CF3D6048 00000003CF3D6068 80 PE 44 0 4

    0 1437 0

    锁定类型为PE。即Kernel Service system Parameters ENQUEUE,在改动系统參数时须要获取该锁定。

    须要提醒的是。尽管Oracle9i中。Oracle提供了动态内存改动的功能,可是仍然建议在系统规划时做好设置。尽量避免执行时的动态调整。动态调整某些系统參数(undo_retention  )在繁忙的系统中可能触发bug而导致系统挂起。





  • 相关阅读:
    GAN阶段性小结(损失函数、收敛性分析、训练技巧、应用“高分辨率、domain2domain”、研究方向)
    MMD :maximum mean discrepancy
    Chinese-BERT-wwm
    VGG16学习笔记
    jupyter notebook使用技巧--命令行模式以及在Markdown模式使用的操作(4)
    不同领域公开数据集下载
    数据挖掘竞赛,算法刷题网址汇总
    在keras下实现多个模型的融合
    问题集合
    开源测试数据集合
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4586918.html
Copyright © 2020-2023  润新知