ITPub博客

首页 > Linux操作系统 > Linux操作系统 > NOLOGGING模式下的操作

NOLOGGING模式下的操作

原创 Linux操作系统 作者:279531451 时间:2009-10-18 20:03:37 0 删除 编辑
 
  1. NOLOGGING模式下的操作
    1. 索引创建和alter(重建索引)
    2. 经 */* + append */ 提示,使用“直接路径插入” 批量的insert
    3. LOB操作(大对象更新不必记录到日志中)
    4. 用create table as select 创建表
    5. 各种ALTER table 操作,例如MOVE 和 SPLIT
    6. Truncated  (但不需要nologging语句),因为总是在nologging模式中执行

 

不使用NOLOGGING模式

SQL> set timing on

SQL> select * from redo_size

  2  ;

 

     VALUE

----------

  29310912   --创建表前的redo的大小

 

已用时间:  00: 00: 00.03

SQL> create table a as select * from all_objects;

 

表已创建。

 

已用时间:  00: 00: 45.71

SQL> select * from redo_size;

 

     VALUE

----------

  37800216   --创建表后的redo的大小

 

已用时间:  00: 00: 00.01

SQL> select (37800216 - 29310912 )/1024/1024 || 'M' from dual;

 

(37800216-29310912)/

--------------------

8.09603118896484375M    --产生的redo大小为

 

已用时间:  00: 00: 00.01

SQL>

 

使用NOLOGGIN模式

SQL> drop table t;

 

表已删除。

 

已用时间:  00: 00: 00.47

SQL> selet * from redo_size;

SP2-0734: 未知的命令开头 "selet * fr..." - 忽略了剩余的行。

SQL> select * from redo_size;

 

     VALUE

----------

  37819340

 

已用时间:  00: 00: 00.01

SQL> create table t

  2  nologging

  3  as

  4  select * from all_objects;

 

表已创建。

 

已用时间:  00: 00: 45.66

SQL> select * from redo_size;

 

     VALUE

----------

  46359304

 

已用时间:  00: 00: 00.01

SQL> select (46359304-37819340)/1024/1024 ||'M' from dual;

 

(46359304-37819340)/1

---------------------

8.144344329833984375M

 

为什么比不用nologging产生的redo还多呢?

我的数据库是归档模式

SQL> show user;

USER 为 "SYS"

SQL> archive log list;

数据库日志模式                  存档模式

自动存档             启用

存档终点            /u01/app/oracle/archivelog

最早的联机日志序列     22

下一个存档日志序列   24

当前日志序列               24

书上说在非归档模式下,nologging模式和非nologging模式没有区别。

那位大哥看了后,帮忙找找原因;
数据库平台是:11gR2
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7551038/viewspace-616806/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 块清除的原因
请登录后发表评论 登录
全部评论

注册时间:2009-09-01

  • 博文量
    100
  • 访问量
    182887