NOLOGGING和FORCE LOGGING的理解

oracle_ace發表於2007-12-12

其實nologging與表模式,插入模式,資料庫執行模式(archived/unarchived)都有很大的關係:

總結如下:
注意append是一種hint;

一般我們可以這樣來使用

insert /*+append+/ into mytable values(1,'alan');

資料庫在歸檔模式下
---------------------------
當表模式為logging狀態時,無論是append模式還是no append模式,redo都會生成。

當表模式為nologging狀態時,只有append模式,不會生成redo.

資料庫在非歸檔模式下
------------------------------
無論是在logging還是nologing的模式下,
append的模式都不會生成redo,

而no append模式下都會生成redo

如果我想看一張表是否是logging狀態,可以這樣
select table_name,logging from dba_tables where table_name='tablename';

那麼在Oracle內部還存在一個內部引數:_disable_logging 預設是false
通過更改為true可以讓Oracle在修改表中的記錄的時候完全不記錄redo,這個引數要甚用
一般在平時,我們只作為效能測試用。

force logging(強制日誌)模式:
通過命令:
alter database force logging來使得Oracle無論什麼操作都進行redo的寫入
通過select force_logging from v$database可以看到當前資料庫強制日誌模式的狀態。

下次會簡單總結一下redo故障的恢復:)

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

相關文章