之前看到过一篇文章是介绍 Oracle 的一个内部隐含参数_disable_logging,最近又看到有朋友论述这个参数, 所以下面这篇文章就来给大家介绍下关于 Oracle 中隐含参数_disable_logging 的相关资料,需要的朋友可以参考下。
Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。
注意:Oracle 的隐含参数只应该在测试环境或者在 Oracle Support 的支持下使用。
从 Oracle 的系统表中,我们知道 Oracle 存在一个隐含参数_disable_logging 可以用于禁用日志生成,这个参数显然只能用于测试目的(可以极大提高 Benchmark 测试的性能),禁止日志生成必然导致事务的不可恢复性, 而且会导致日志文件损坏。
- SQL> select ksppinm,ksppdesc from x$ksppi where ksppinm like '%logging';
- KSPPINM KSPPDESC
- -------------------- ------------------------------
- _disable_logging Disable logging
因为特殊的需要,对这个参数进行了一点简单测试:
1. 设置参数
- [oracle@jumper bdump]$ sqlplus "/ as sysdba"
- SQL*Plus: Release 9.2.0.4.0 - Production on Wed Oct 19 11:01:19 2005
- Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
- Connected to:
- Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
- With the Partitioning option
- JServer Release 9.2.0.4.0 - Production
- SQL> alter system set "_disable_logging"=true scope=both;
- System altered.
2. 事务测试
- SQL> create table t as select * from dba_users;
- Table created.
- SQL> select count(*) from t;
- COUNT(*)
- ----------
- 12
- SQL> shutdown abort;
- ORACLE instance shut down.
- SQL> startup
- ORACLE instance started.
- Total System Global Area 97588504 bytes
- Fixed Size 451864 bytes
- Variable Size 33554432 bytes
- Database Buffers 62914560 bytes
- Redo Buffers 667648 bytes
- Database mounted.
- Database opened.
- SQL> select count(*) from t;
- select count(*) from t
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
由于未产生相应日志,数据库 crash 或 shutdown abort 之后,上一次成功完成的检查点之后变化的数据将无法恢复。
3. 观察 alert 文件
从日志中我们可以看到在 instance recovery 中,没有数据被恢复,只有成功完成的上次检查点之前数据可以被获取,之后数据都将丢失。
- Wed Oct 19 20:38:38 2005
- Beginning crash recovery of 1 threads
- Wed Oct 19 20:38:38 2005
- Started first pass scan
- Wed Oct 19 20:38:39 2005
- Completed first pass scan
- 0 redo blocks read, 0 data blocks need recovery
- Wed Oct 19 20:38:39 2005
- Started recovery at
- Thread 1: logseq 2, block 201, scn 0.897632464
- Recovery of Online Redo Log: Thread 1 Group 1 Seq 2 Reading mem 0
- Mem# 0 errs 0: /opt/oracle/oradata/conner/redo01.log
- Wed Oct 19 20:38:39 2005
- Completed redo application
- Wed Oct 19 20:38:39 2005
- Ended recovery at
- Thread 1: logseq 2, block 201, scn 0.897652465
- 0 data blocks read, 0 data blocks written, 0 redo blocks read
- Crash recovery completed successfully
总结
来源: http://www.phperz.com/article/17/0320/326285.html