Oracle 隱含引數 _disable_logging

xz43發表於2011-01-26

提示:Oracle的隱含引數只應該在測試環境或者在Oracle Support的支援下使用。

從Oracle的系統表中,我們知道Oracle存在一個隱含引數_disable_logging可以用於禁用日誌生成,這個引數顯然只能用於測試目的(可以極大提高Benchmark測試的效能),禁止日誌生成必然導致事務的不可恢復性。

下面,對這個引數做一個簡單測試,過程如下:

$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1月 26 14:46:48 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL>
SQL> select ksppinm,ksppdesc from x$ksppi where ksppinm like '%logging';

KSPPINM
--------------------------------------------------------------------------------
KSPPDESC
----------------------------------------------------------------------------------------------------------------------------------------------------------------
_disable_logging
Disable logging


SQL> alter system set "_disable_logging"=true;

系統已更改。

SQL> create table testlog as select * from dba_objects;

表已建立。

SQL> shutdown abort
ORACLE 例程已經關閉。

SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。

Total System Global Area 1207959552 bytes
Fixed Size                  2020352 bytes
Variable Size             234884096 bytes
Database Buffers          956301312 bytes
Redo Buffers               14753792 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select count(1) from testlog;
select count(1) from testlog
                     *
第 1 行出現錯誤:
ORA-00942: 表或檢視不存在

由於未產生相應日誌,資料庫crash或shutdown abort之後,上一次成功完成的檢查點之後變化的資料將無法恢復。

觀察alert檔案
從日誌中我們可以看到在instance recovery中,沒有資料被恢復,只有成功完成的上次檢查點之前資料可以被獲取,之後資料都將丟失。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-686341/,如需轉載,請註明出處,否則將追究法律責任。

相關文章