Oracle中可以nologging執行的操作


redo重做日志是Oracle數據庫恢復(recovery)的基礎;但在很多情況下可以通過禁用重做日志的產生來加速SQL語句的完成,也就是我們所說的可nologging化的操作,這些操作大多是或串行的或並行的數據載入。

那么哪些操作是允許被nologging化的呢?首先需要注意的是普通的DML操作,即:常規insert,update,和delete(以及merge)總是不能被nologging執行的。但以下SQL語句則可以以nologging選項執行:

  • direct load (SQL*Loader)
  • direct load INSERT (using APPEND hint)
  • CREATE TABLE … AS SELECT
  • CREATE INDEX
  • ALTER TABLE … MOVE PARTITION
  • ALTER TABLE … SPLIT PARTITION
  • ALTER INDEX … SPLIT PARTITION
  • ALTER INDEX … REBUILD
  • ALTER INDEX … REBUILD PARTITION
  • INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line

以上列出的語句,其產生undo和redo重做日志幾乎可以完全禁絕。因為都是數據載入語句(或者裝載索引)其所產生的新的區間(new extent)在執行過程中被標記為無效的(invalid),同時僅有少量的由數據字典變更引起的重做日志會產生。


免責聲明!

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



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