ITPub博客

首页 > 数据库 > Oracle > 19C PGA占用过载优化

19C PGA占用过载优化

原创 Oracle 作者:mengbing1990 时间:2023-01-14 15:23:31 0 删除 编辑
  1. 数据发生hang住十分钟,无法连接scan ip,后自动恢复。

  2. 查看alert 文件发现报错如下:

  3. 查看当前pga内存使用量


    SELECT server, s.username, oSUSEr, NAME, VALUE / 1024 / 1024 MB, s.SID, s.serial#, spid

    FROM v$session s, v$sesstat st, v$statname sn, v$process p

    WHERE st.SID = s.SID

    AND st.statistic# = sn.statistic#

    AND sn.NAME LIKE 'session pga memory'

    AND p.addr = s.paddr

    ORDER BY VALUE DESC;

    以上count后发现pga使用9.5G左右,

  4. 查看DB pga配置

  5. 另外根据oracle自带优化表v$pga_target_advice进行查看建议项

    SELECT   pga_target_for_estimate / 1024 / 1024 "PGA(MB)",
                pga_target_factor,
                 estd_pga_cache_hit_percentage,
                 estd_overalloc_count
          FROM   v$pga_target_advice;

    第一列为pga的具体大小值

    第二列PGA_TARGET_FACTOR为“1”表示当前的pga_aggregate_target设置大小(其他数值都是以这个数据为基础的倍数),我这里是20M,通过pga_aggregate_target参数可以确认一下

    第三列表示PGA的估算得到的Cache命中率的百分比,100%为最优化值

    第四列如果为“0”表示可以消除PGA的过载

    综合以上的结论,我们最终可以将PGA的大小设置为20G及以上。

  6. 由于修改PGA_target值需要重启数据库

    择时停机修改并优化一些19C的部分选项

     实施步骤
    修改参数操作流程:

    show parameter spfile
    --备份spfile
    create pfile=’/home/oracle/pfile20230112.ora’ from spfile;
    --修改参数
    恢复LGWR的post/wait通知方式
    alter system set "_use_adaptive_log_file_sync"=false sid='*' scope=spfile;
    关闭DRM(因DRM导致的问题非常多)
    alter system set "_gc_policy_time"=0 sid='*' scope=spfile;
    alter system set "_gc_undo_affinity"=FALSE sid='*' scope=spfile;
    几个参数都是用于关闭 adaptive cursor sharing、cardinality feedback 特性,避免出现 SQL 性能不稳定、SQL 子游标过多的问题
    alter system set "_optimizer_extended_cursor_sharing"='NONE' sid='*' scope=spfile;
    alter system set "_optimizer_extended_cursor_sharing_rel"='NONE'  sid='*' scope=spfile;
    alter system set "_optimizer_adaptive_cursor_sharing"=FALSE  sid='*' scope=spfile;
    设置数据文件的个数
    alter system set db_files=8192 sid='*' scope=spfile;
    设置开启的游标数
    alter system set open_cursors=1000 scope=spfile sid='*';
    单个session可以缓存多少coursor
    alter system set session_cached_cursors=300 scope=spfile sid='*';
    设置PGA大小
    alter system set pga_aggregate_target=30G sid='*' scope=spfile;
    数据库checkpoint
    alter system checkpoint;
    alter system checkpoint;
    alter system checkpoint;
    --重启数据库
    su – oracle
    srvctl stop database -d mesdb -o immeidate
    srvctl start database -d mesdb
    --检查PDBS
    show pdbs
    alter pluggable database all open
    show pdbs


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29551564/viewspace-2932213/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: GPDB&GPCC升级
请登录后发表评论 登录
全部评论
v❤550166897

注册时间:2014-03-19

  • 博文量
    88
  • 访问量
    195217