于oracle的NOLOGGING
来源:互联网 发布:榕基软件重组 编辑:程序博客网 时间:2024/04/19 17:26
可以采用NOLOGGING模式执行以下操作:
1 索引的创建和ALTER(重建)。
2 表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是
所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。
3 LOB操作(对大对象的更新不必生成日志)。
4 通过CREATE TABLE AS SELECT创建表。
5 各种ALTER TABLE操作,如MOVE和SPLIT。
在一个ARCHIVELOG模式的数据库上,如果NOLOGGING使用得当,可以加快许多操作的速度,因为它能显著减少生成的重做日
志量。假设你有一个表,需要从一个表空间移到另一个表空间。可以适当地调度这个操作,让它在备份之后紧接着发生,这样就能把表
ALTER为NOLOGGING模式,移到表,创建索引(也不生成日志),然后再把表ALTER回LOGGING模式。现在,原先需要X小时才能
完成的操作可能只需要X/2 小时(运行是会不会真的减少50%的时间,这一点我不敢打保票!)。要想适当地使用这个特性,需要DBA的
参与,或者必须与负责数据库备份和恢复(或任何备用数据库)的人沟通。如果这个人不知道使用了这个特性,一旦出现介质失败,就可
能丢失数据,或者备用数据库的完整性可能遭到破坏。对此一定要三思。
使用范例
create table t
NOLOGGING
as
select * from all_objects
关于NOLOGGING操作,需要注意以下几点:
1 事实上,还是会生成一定数量的redo。这些redo的作用是保护数据字典。这是不可避免的。与以前(不使用NOLOGGING)相
比,尽管生成的redo量要少多了,但是确实会有一些redo。
2 NOLOGGING不能避免所有后续操作生成redo。在前面的例子中,我创建的并非不生成日志的表。只是创建表(CREATE TABLE)
这一个操作没有生成日志。所有后续的“正常“操作(如INSERT、UPDATE和DELETE)还是会生成日志。其他特殊的操作(如
使用SQL*Loader的直接路径加载,或使用INSERT /*+ APPEND */语法的直接路径插入)不生成日志(除非你ALTER这个表,
再次启用完全的日志模式)。不过,一般来说,应用对这个表执行的操作都会生成日志。
3 在一个ARCHIVELOG 模式的数据库上执行NOLOGGING 操作后,必须尽快为受影响的数据文件建立一个新的基准备份,从而
避免由于介质失败而丢失对这些对象的后续修改。实际上,我们并不会丢失后来做出的修改,因为这些修改确实在重做日志中;
我们真正丢失的只是要应用这些修改的数据(即最初的数据)。
1 索引的创建和ALTER(重建)。
2 表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是
所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。
3 LOB操作(对大对象的更新不必生成日志)。
4 通过CREATE TABLE AS SELECT创建表。
5 各种ALTER TABLE操作,如MOVE和SPLIT。
在一个ARCHIVELOG模式的数据库上,如果NOLOGGING使用得当,可以加快许多操作的速度,因为它能显著减少生成的重做日
志量。假设你有一个表,需要从一个表空间移到另一个表空间。可以适当地调度这个操作,让它在备份之后紧接着发生,这样就能把表
ALTER为NOLOGGING模式,移到表,创建索引(也不生成日志),然后再把表ALTER回LOGGING模式。现在,原先需要X小时才能
完成的操作可能只需要X/2 小时(运行是会不会真的减少50%的时间,这一点我不敢打保票!)。要想适当地使用这个特性,需要DBA的
参与,或者必须与负责数据库备份和恢复(或任何备用数据库)的人沟通。如果这个人不知道使用了这个特性,一旦出现介质失败,就可
能丢失数据,或者备用数据库的完整性可能遭到破坏。对此一定要三思。
使用范例
create table t
NOLOGGING
as
select * from all_objects
关于NOLOGGING操作,需要注意以下几点:
1 事实上,还是会生成一定数量的redo。这些redo的作用是保护数据字典。这是不可避免的。与以前(不使用NOLOGGING)相
比,尽管生成的redo量要少多了,但是确实会有一些redo。
2 NOLOGGING不能避免所有后续操作生成redo。在前面的例子中,我创建的并非不生成日志的表。只是创建表(CREATE TABLE)
这一个操作没有生成日志。所有后续的“正常“操作(如INSERT、UPDATE和DELETE)还是会生成日志。其他特殊的操作(如
使用SQL*Loader的直接路径加载,或使用INSERT /*+ APPEND */语法的直接路径插入)不生成日志(除非你ALTER这个表,
再次启用完全的日志模式)。不过,一般来说,应用对这个表执行的操作都会生成日志。
3 在一个ARCHIVELOG 模式的数据库上执行NOLOGGING 操作后,必须尽快为受影响的数据文件建立一个新的基准备份,从而
避免由于介质失败而丢失对这些对象的后续修改。实际上,我们并不会丢失后来做出的修改,因为这些修改确实在重做日志中;
我们真正丢失的只是要应用这些修改的数据(即最初的数据)。
- 于oracle的NOLOGGING
- 关于oracle的NOLOGGING
- oracle的nologging
- oracle 的NOLOGGING
- 关于Oracle的NOLOGGING
- oracle 的nologging和append
- Oracle nologging
- Oracle logging 和nologging 的区别
- ORACLE Nologging相关知识
- ORACLE Nologging相关知识
- Oracle中的nologging
- Oracle DML NOLOGGING
- Oracle DML NOLOGGING
- oracle nologging append 注意
- Oracle Nologging And Append
- Oracle中的nologging
- Oracle抑制日志(NOLOGGING)
- oracle nologging operation
- hdu (2578) Dating with girls(1)
- 鼠标移到导航上面 当前的LI变色 处于当前的位置
- Deep Learning(深度学习)学习笔记整理系列之(七)
- 音频处理领域的瑞士军刀──SoX
- [读书笔记]黑客与画家[Hackers.and.Painters]
- 于oracle的NOLOGGING
- 用canvas 绘制动画时,刷新时有阴影的解决问题
- 类继承中构造函数和析构函数的调用
- 安卓常见内存泄露解决办法
- fsdfdsfsd
- POJ 一 2388 Who's in the Middle
- 【libcurl使用简介】
- 初始化基类
- 企业级web负载均衡完美架构