星期日, 3月 20, 2011

[轉載] 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),同時僅有少量的由資料字典變更引起的重做日誌會產生。



沒有留言:

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...