问:我现在有一个大数据量的分区表(亿级别,每个月一个分区),已经对超过3个月的数据进行了归档备份,在清理这些数据时,计划对delete操作设置NOLOGGING来加快速度,这个想法可行吗?
答:不可行。因为NOLOGGING支持很多SQL语句,但是不包括delete操作。这种情况下,建议直接对分区表执行truncate操作。
对于数据库而言,重做日志至关重要,它不是开销,不是浪费。不过,有些情况下执行某些操作确实可以不生成重做日志。那么哪些操作是允许NOLOGGING呢?首先需要注意的是普通的DML操作,即:常规insert,update,和delete(以及merge)是不支持的。但以下SQL语句则可以NOLOGGING选项执行:
l direct load (SQL*Loader)
l direct load INSERT (using APPEND hint)
l CREATE TABLE … AS SELECT
l CREATE INDEX
l ALTER TABLE … MOVE PARTITION
l ALTER TABLE … SPLIT PARTITION
l ALTER INDEX … SPLIT PARTITION
l ALTER INDEX … REBUILD
l ALTER INDEX … REBUILD PARTITION
l INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line
关于NOLOGGING设置的具体信息,可以参考我之前翻译的官方文档:http://blog.itpub.net/30162081/viewspace-1976252/
另外,关于NOLOGGING操作,需要注意以下几点:
l 事实上,还是会生成一定数量的redo,主要是保护数据字典,这是不可避免的。
l 执行NOLOGGING操作后,必须尽快为受影响的数据文件建立一个新的基线备份,从而避免由于介质失败而丢失的由NOLOGGING操作创建的数据。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30162081/viewspace-1976274/ ,如需转载,请注明出处,否则将追究法律责任。