IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    _use_single_log_writer和_max_outstanding_log_writes

    惜分飞发表于 2016-06-07 08:12:44
    love 0

    联系:手机(13429648788) QQ(107644445)QQ咨询惜分飞

    标题:_use_single_log_writer和_max_outstanding_log_writes

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    SCALABLE LGWR是12cR1中引入的一个令人激动的特性, 这是由于在OLTP环境中LGWR写日志往往成为系统的主要性能瓶颈, 如果LGWR进程能像DBWR(DBW0~DBWn)那样多进程(LGNN)写出redo到LOGFILE那么就可能大幅释放OLTP的并发能力,增长Transcation系统的单位时间事务处理能力。这里在12.2版本中进行测试,确定_use_single_log_writer和_max_outstanding_log_writes参数对于SCALABLE LGWR特性的影响
    数据库版本

    SQL> select * from v$version;
    
    BANNER                                                                                         CON_ID
    ------------------------------------------------------------------------------------------ ----------
    Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production                        0
    PL/SQL Release 12.2.0.0.3 - Production                                                              0
    CORE    12.2.0.0.3      Production                                                                  0
    TNS for Linux: Version 12.2.0.0.3 - Production                                                      0
    NLSRTL Version 12.2.0.0.3 - Production                                                              0
    

    _use_single_log_writer和_max_outstanding_log_writes默认值

    SQL> /
    Enter value for param: _use_single_log_writer
    old   6:    and upper(a.ksppinm) LIKE upper('%&param%')
    new   6:    and upper(a.ksppinm) LIKE upper('%_use_single_log_writer%')
    
    NAME                                                 VALUE                    DESCRIPTION
    ---------------------------------------------------- ------------------------ -------------------------------------------
    _use_single_log_writer                               ADAPTIVE                 Use a single process for redo log writing
    
    SQL> /
    Enter value for param: _max_outstanding_log_writes
    old   6:    and upper(a.ksppinm) LIKE upper('%&param%')
    new   6:    and upper(a.ksppinm) LIKE upper('%_max_outstanding_log_writes%')
    
    NAME                                                 VALUE                    DESCRIPTION
    ---------------------------------------------------- ------------------------ ----------------------------------------------
    _max_outstanding_log_writes                          2                        Maximum number of outstanding redo log writes
    

    lg进程数量
    这里可以看出来,有一个lgwr进程,两个lg进程和_max_outstanding_log_writes参数配置匹配

    [oracle@ora1221 ~]$ ps -ef|grep ora_lg
    oracle    49790      1  0 10:32 ?        00:00:00 ora_lgwr_orcl12c2
    oracle    49794      1  0 10:32 ?        00:00:00 ora_lg00_orcl12c2
    oracle    49798      1  0 10:32 ?        00:00:00 ora_lg01_orcl12c2
    

    修改_max_outstanding_log_writes参数
    通过修改_max_outstanding_log_writes参数为4,发现lg进程数量也变为了4,证明_max_outstanding_log_writes进程决定lg进程数量

    SQL> alter system set "_max_outstanding_log_writes"=4 ;     
    alter system set "_max_outstanding_log_writes"=4
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
    
    
    SQL> alter system set "_max_outstanding_log_writes"=4 scope=spfile;
    
    System altered.
    
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 2516582400 bytes
    Fixed Size                  8260048 bytes
    Variable Size             671090224 bytes
    Database Buffers         1828716544 bytes
    Redo Buffers                8515584 bytes
    Database mounted.
    Database opened.
    SQL> exit
    Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production
    [oracle@ora1221 ~]$ ps -ef|grep lg
    oracle    72339      1  0 13:45 ?        00:00:00 ora_lgwr_orcl12c2
    oracle    72343      1  0 13:45 ?        00:00:00 ora_lg00_orcl12c2
    oracle    72347      1  0 13:45 ?        00:00:00 ora_lg01_orcl12c2
    oracle    72351      1  0 13:45 ?        00:00:00 ora_lg02_orcl12c2
    oracle    72359      1  0 13:45 ?        00:00:00 ora_lg03_orcl12c2
    

    修改_use_single_log_writer参数
    通过测试_use_single_log_writer参数修改,我们可以确定_use_single_log_writer修改为true后,数据库恢复到12c之前的lgwr管理方式

    [oracle@ora1221 ~]$ ss
    
    SQL*Plus: Release 12.2.0.0.3 Production on Thu Aug 6 13:45:33 2015
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production
    
    SQL> alter system set "_use_single_log_writer"=1 ;     
    alter system set "_use_single_log_writer"=1
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
    
    
    SQL>  alter system set "_use_single_log_writer"=1 scope=spfile;
     alter system set "_use_single_log_writer"=1 scope=spfile
    *
    ERROR at line 1:
    ORA-00096: invalid value 1 for parameter _use_single_log_writer, must be from
    among ADAPTIVE, FALSE, TRUE
    
    
    SQL> alter system set "_use_single_log_writer"=TRUE scope=spfile;
    
    System altered.
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> exit
    Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production
    [oracle@ora1221 ~]$ ps -ef|grep lg
    oracle    72702  71510  0 13:46 pts/0    00:00:00 grep lg
    [oracle@ora1221 ~]$ ss
    
    SQL*Plus: Release 12.2.0.0.3 Production on Thu Aug 6 13:46:50 2015
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 2516582400 bytes
    Fixed Size                  8260048 bytes
    Variable Size             671090224 bytes
    Database Buffers         1828716544 bytes
    Redo Buffers                8515584 bytes
    Database mounted.
    Database opened.
    SQL> exit   
    Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production
    [oracle@ora1221 ~]$ ps -ef|grep lg
    oracle    72754      1  0 13:46 ?        00:00:00 ora_lgwr_orcl12c2
    oracle    73008  71510  0 13:47 pts/0    00:00:00 grep lg
    

    从这里可以确定_use_single_log_writer确定是否启用SCALABLE LGWR(多个lg子进程),_max_outstanding_log_writes确定lg进程个数

    • ORACLE用户重命名
    • dual 缺少同义词故障解决
    • 设置_smu_debug_mode实现指定session级别使用特定回滚段
    • 关于wallet加密的几个测试
    • Oracle 12C TABLE ACCESS BY INDEX ROWID BATCHED
    • 如何估算表In-Memory需要内存大小
    • _no_recovery_through_resetlogs参数功能探讨
    • Startup Migrate
    • ORACLE 12C varchar2支持32k长度字符串
    • 关于9I中sga_max_size参数描述
    • 通过with实现对表非法dml操作—解决方案_with_subquery=materialize或者psu(2014.07以后)
    • ORA-65101 container database set up incorrectly


沪ICP备19023445号-2号
友情链接