2009年5月7日 星期四

Oracle數據庫中NOLOGGING和FORCE LOGGING的理解

遇到這個指令~網路上search一下,做個收錄~~
資料來源 Link



其 實 nologging與表模式,插入模式,數據庫運行模式(archived/unarchived)都有很大的關係。force logging(強制日誌)模式通過命令:alter database force logging來使得Oracle無論什麼操作都進行redo的寫入。

  其實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可以看到當前數據庫強制日誌模式的狀態。


沒有留言:

張貼留言