oracle nologging使用總結


一、oracleloggingnologging的控制。

Oracle4個級別 提供對操作是否記錄redo日志進行控制

 

  1. 數據庫級別

  Force_logging, 數據庫級別開啟force logging ,將忽略一切nologging的操作,即使顯示加上nologging也不起作用。所以搭建物理standby時,一定要將force logging開啟。

 

開啟關閉語句

Alter database force logging;

Alter database no force logging;

 

  1. 表空間級別

Force_logging屬性 , 表空間是否開啟強制記日志,如果開啟,表空間上所屬對象上的操作都會記日志到redo log ,忽略一切nologging操作。

 

Logging/nologging屬性,為表空間上的對象提供logging屬性的默認值,如果創建對象時不顯示指定是logging還是nologging,則取表空間的logging屬性。

開啟關閉語句

Alter tablespace users force logging;

Alter tablespace users no force logging;

 

Alter tablespace users logging;

Alter tablespace users nologging;

 

查詢表空間的日志記錄屬性

Select tablespace_name,force_logging,logging from dba_tablespaces where tablespace_name=’USERS’;

 

  1. 對象級別

Logging屬性取值為yesno,對該對象的更改是否記錄日志。

查詢對象的logging屬性

Select logging from dba_tables where table_name=’T’;

對象的logging開啟與關閉

Alter table t logging

Alter table t nologging;

 

  1. 語句級別

指定該sql語句是否記錄日志,默認依賴對象的logging屬性。

Insert into t nologging select object_id,object_name from dba_objects;

 

二、nologging的好處與影響

好處:

(1)可以大大減少插入大型表的時間

(2)提高並行創建大型表或索引的性能

(3)減少日志生成量,節省磁盤空間

 

影響:

(1) 無法從重做日志中恢復更改,帶來數據丟失的風險

(2) 對於物理standby,數據庫一旦應用了無效的重做日志,所有相應的數據塊將標記為邏輯壞塊,查詢引用時將報錯。

(3) 對於邏輯standbySQL apply會忽略無效的重做日志,因為它無法將其轉換為有效的sql,邏輯standby也不會立即收到任何錯誤,只是在查詢引用丟失的數據時報錯。

 

實驗:

數據庫表空間對象的logging屬性都設為no

把數據庫的force logging設為no,表空間的force logging設為nologging設為nologging,對象的logging屬性設為nologging

在這個基礎上,sql語句顯示加nologging 並不是都不記錄日志。

 

Insert into .... values 不管是否加hint /*+append*/, 始終會記錄redo log

 

以下語句可以調用nologging, 使nologging生效

(1) Insert /*+append*/ select .....

(2) CTAS , nologging模式下只記錄建表的日志

(3) Create index....

(4) Alter index ... rebuild

(5) Alter table ....move ...

(6) Sqlloader, datapump加載數據

 

三,如何防止nologging帶來的風險

  1. 對於有standby的數據庫,一定要開啟數據庫級別的force logging
  2. 對於核心的生產數據庫,為了避免數據丟失的風險,一定要開啟force logging
  3. 重要程度不高的數據庫上可以考慮使用nologging,臨時性批量操作可以考慮使用nologging,或在nologging操作之后及時做一次全備。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM