0x-1 记一次SGA PGA设置失败,重新开库

0、生产侧定时平台上传数据库11g hang,修改无法startup

厂商统一发放的虚拟机作为前置机导入平台后,直接开机使用。主机在虚拟化平台中,实例卡死后,按照虚拟机系统64G,原SGA=2g,不知哪个大聪明给默认设置的。保守计划修改为16G

小伙伴一顿操作,修改的内存远大于可用内存,实例无法startup

1、修改SGA、PGA

现场和生产也许会因为各式各样的要求,例如:业务要求、其他厂商提出等(需要修改最大的内存使用)去修改Oracle数据库的初始化参数,但如果修改错误,重启之后就会导致数据库无法启动。

比如参数sga_max_size=32G、sga_target=24G,某位手抖修改成sga_max_size=16G、sga_target=24G,数据库启动的时候提示sga_target大于sga_max_size,无法启动。

于是需要修改初始化参数,由于数据库没有办法启动到任何阶段,无法使用alter system修改parameter。祭出手动大法,修改数据库文本参数文件。

2、spfile文件位置

默认Oracle是使用spfile启动,这个文件二级制文件,看见的是一堆乱码(极端情况也有修改后保存成pfile的,非极端不必要挑战)对于DBA看是不能直接修改的。大家能修改的是init.ora这个文件,属于文本类型,需要先行进行参数文件的转换。操作如下:

是不是大部分人都SID都是orcl,这个全省发放的前置机sid就是orcl

查找spfile文件位置,切换到该目录下

默认位置:

Linux,oracle用户记得查看.bash_profile定义的$ORACLE_HOME

$ORACLE_HOME/dbs/spfileorcl.ora

Windows:

%ORACLE_HOME%\database\spfileorcl.ora

cd $ORACLE_HOME/dbs

3、操作步骤

登录sqlplus

sqlplus / as sysdba

1、create pfile from spfile;

生成的initorcl.ora,可修改的文本类型的初始化参数文件(路径位于:$ORACLE_HOME/dbs/)

2、更正initorcl.ora里面错误的参数(vim修改参数为设置之前的那部分)

alter system set sga_max_size=16G scope=spfile;

alter system set sga_target=16G scope=spfile;

sga_max_size=16G

sga_target=16G

alter system set pga_aggregate_target=8196M scope=spfile;

/u01/app/oracle/product/11.2.0/db_01/dbs

startup pfile='/u01/app/oracle/product/11.2.0/db_01/dbs/initorcl.ora';

3、重新登录

提示connect to idle instance

数据库执行启动:startup pfile='/u01/app/oracle/product/11.2.0/db_01/dbs/initorcl.ora';

能够正常启动后确认参数没有错误,按照业务使用再调整。

4、最后再执行create spfile from pfile

执行任何修改前,务必备份任何要修改的文件,cp一次,比什么都好。

4、SGA和PGA最佳实践(OCM也是必考):

  • ​总内存分配,按照64g测算​
    ​​物理内存的80%​​ 分配给Oracle(约51.2GB),剩余20%保留给操作系统及其他进程。
    公式:Oracle可用内存 = 64GB × 80% = 51.2GB,换成MB后很多老师按照习惯再减-1,

  • 这个部分的典故。“+1MB”的由来与适用性​

  • 在早期版本(如Oracle 8i/9i),SGA计算公式包含额外1MB的固定开销:
    SGA = (db_block_buffers × block_size) + (shared_pool_size + ...) + 1MB这是为SGA内部管理预留的空间。

  • ​10g及以上​​:
    自动内存管理(AMM/ASMM)已动态处理此开销,​无需手动减1MB​。
    不过若手动配置组件(如shared_pool_size),仍需确保总和 ≤ SGA_MAX_SIZE,但无需额外扣除。

  • 直接使用目标值​​,验证设置​

  • --设置SGA_TARGET或SGA_MAX_SIZE时,直接指定目标值(单位可为GB/MB):
    --设置SGA_MAX_SIZE=36G(64G物理内存的OLTP场景)
    ALTER SYSTEM SET SGA_MAX_SIZE=36G SCOPE=SPFILE;
    ALTER SYSTEM SET SGA_TARGET=36G SCOPE=BOTH;
    
    --重启数据库后,通过视图确认实际分配:
    -- 检查动态组件分配              
    SELECT * FROM V$SGA_DYNAMIC_COMPONENTS;
    SYS@orcl> SELECT * FROM V$SGA_DYNAMIC_COMPONENTS;
    
    COMPONENT                                                        CURRENT_SIZE   MIN_SIZE   MAX_SIZE USER_SPECIFIED_SIZE OPER_COUNT LAST_OPER_TYP LAST_OPER LAST_OPER_TIME      GRANULE_SIZE
    ---------------------------------------------------------------- ------------ ---------- ---------- ------------------- ---------- ------------- --------- ------------------- ------------
    shared pool                                                        2046820352 1979711488 2046820352                   0          1 GROW          DEFERRED  2025-05-29 01:05:38     33554432
    large pool                                                          167772160  167772160 1207959552                   0          1 SHRINK        DEFERRED  2025-05-27 15:55:31     33554432
    java pool                                                           134217728  134217728  134217728                   0          0 STATIC                                          33554432
    streams pool                                                                0          0          0                   0          0 STATIC                                          33554432
    DEFAULT buffer cache                                               1.4328E+10 1.3355E+10 1.4395E+10                   0          2 SHRINK        DEFERRED  2025-05-29 01:05:38     33554432
    KEEP buffer cache                                                           0          0          0                   0          0 STATIC                                          33554432
    RECYCLE buffer cache                                                        0          0          0                   0          0 STATIC                                          33554432
    DEFAULT 2K buffer cache                                                     0          0          0                   0          0 STATIC                                          33554432
    DEFAULT 4K buffer cache                                                     0          0          0                   0          0 STATIC                                          33554432
    DEFAULT 8K buffer cache                                                     0          0          0                   0          0 STATIC                                          33554432
    DEFAULT 16K buffer cache                                                    0          0          0                   0          0 STATIC                                          33554432
    DEFAULT 32K buffer cache                                                    0          0          0                   0          0 STATIC                                          33554432
    Shared IO Pool                                                              0          0          0                   0          0 STATIC                                          33554432
    ASM Buffer Cache                                                            0          0          0                   0          0 STATIC                                          33554432
    
    14 rows selected.
    

5、动态性能视图监控​:

​SGA使用​:SELECT * FROM V$SGASTAT;
​PGA使用​:SELECT * FROM V$PGASTAT WHERE name='maximum PGA allocated';

建议调整​:

SELECT * FROM V$SGA_TARGET_ADVICE;

SELECT * FROM V$PGA_TARGET_ADVICE;

SYS@orcl> SELECT * FROM V$PGASTAT WHERE name='maximum PGA allocated';

NAME                                                                  VALUE UNIT
---------------------------------------------------------------- ---------- ------------
maximum PGA allocated                                             475544576 bytes

SYS@orcl> SELECT * FROM V$SGA_TARGET_ADVICE;

  SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS
---------- --------------- ------------ ------------------- -------------------
      4000             .25        17598              1.0743             4496031
      6000            .375        16902              1.0318             3253636
      8000              .5        16587              1.0126             2988942
     10000            .625        16435              1.0033             2757537
     12000             .75        16392              1.0007             2696598
     14000            .875        16383              1.0001             2686129
     16000               1        16381                   1             2684518
     18000           1.125        16381                   1             2684518
     20000            1.25        16381                   1             2684518
     22000           1.375        16381                   1             2684518
     24000             1.5        16381                   1             2684518
     26000           1.625        16381                   1             2684518
     28000            1.75        16352               .9982             2634586
     30000           1.875        16348                .998             2634586
     32000               2        16348                .998             2634586

15 rows selected.

SYS@orcl> SELECT * FROM V$PGA_TARGET_ADVICE;

PGA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ADV BYTES_PROCESSED  ESTD_TIME ESTD_EXTRA_BYTES_RW
----------------------- ----------------- --- --------------- ---------- -------------------
ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
----------------------------- --------------------
             2097152000              .125 ON       3.6002E+10     742998                   0
                          100                    0

             4194304000               .25 ON       3.6002E+10     742998                   0
                          100                    0

             8388608000                .5 ON       3.6002E+10     742998                   0
                          100                    0

             1.2583E+10               .75 ON       3.6002E+10     742998                   0
                          100                    0

             1.6777E+10                 1 ON       3.6002E+10     742998                   0
                          100                    0

             2.0133E+10               1.2 ON       3.6002E+10     742998                   0
                          100                    0

             2.3488E+10               1.4 ON       3.6002E+10     742998                   0
                          100                    0

             2.6844E+10               1.6 ON       3.6002E+10     742998                   0
                          100                    0

             3.0199E+10               1.8 ON       3.6002E+10     742998                   0
                          100                    0

             3.3554E+10                 2 ON       3.6002E+10     742998                   0
                          100                    0

             5.0332E+10                 3 ON       3.6002E+10     742998                   0
                          100                    0

             6.7109E+10                 4 ON       3.6002E+10     742998                   0
                          100                    0

             1.0066E+11                 6 ON       3.6002E+10     742998                   0
                          100                    0

             1.3422E+11                 8 ON       3.6002E+10     742998                   0
                          100                    0


14 rows selected.

SYS@orcl>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值