oracle有一个隐含参数_disable_logging可以禁止日志的生成,这个参数当然不能在生产库使用,但我们可以将其因为与测试,例如,如果我们怀疑数据库写redo logfile存在性能问题,我们可以将这个参数设置为true,禁止写日志,看看oracle的性能提高了多少。
SQL> alter system set "_disable_logging"=true ;
alter system set "_disable_logging"=true
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set "_disable_logging"=true scope=spfile;
System altered.
SQL> startup force;
ORACLE instance started.
Total System Global Area 9.6208E+10 bytes
Fixed Size 3169600 bytes
Variable Size 6845104832 bytes
Database Buffers 8.9301E+10 bytes
Redo Buffers 58331136 bytes
Database mounted.
ORA-19820: database must be in NOARCHIVELOG mode to disable logging
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> show parameter _disable
NAME_COL_PLUS_SHOW_PARAM TYPE
-------------------------------------------------------------------------------- -----------
VALUE_COL_PLUS_SHOW_PARAM
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_disable_logging boolean
TRUE
上面是设置这个参数的过程。这个参数被设置为true时,系统里是没有log file parallel write等待事件的,因为根本不写日志。
这里有一个关于这个参数的案例:
_disable_logging为false | _disable_logging为true | |
---|---|---|
order entry模型TPS | 12465 | 15091 |
log file sync | 1 | 1 |
logfile parallel write | 1 | 0 |
'log file sync 前端DB time占比(% | 20 | 0.8 |
‘log file parallel write 后端DB time占比(%)’ | 30 | 0.5 |
从这个案例我们可以看到性能提升了大约21%。
SQL> select (15091-12465)/12465 from dual;
(15091-12465)/12465
-------------------
.210669876
log file的等待事件占比下降到几乎为零。
注意设置了这个参数,在关闭数据库的时候只能用 shutdown normal或者shudown transactional,如果用shutdown immediate,那数据库将会起不来,因为没有redo嘛。