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嘛。