`

【转】nologging与insert

阅读更多

转载自:http://hi.baidu.com/420350501/blog/item/46f1eed2892abc3107088b97.html

nologging与insert
2011-12-12 16:33

nologging是ORACLE提供的操作无日志选项,对于普通的INSERT 没有多少影响,   但如果INSERT的时候采用了/*+append*/,就会产生很少的日志

前提条件:非归档模式
测试如下(每次都是先删除表,再建表)
建表:
CREATE TABLE test1 AS SELECT * FROM dba_Objects WHERE 1>8 ;

表不作NOLOGGING处理:产生redo 8,697,536
SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                              1124
 
SQL> INSERT INTO test1 SELECT * FROM dba_objects ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                              1124    8698660        8,697,536
 
SQL>
SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                           8698800
 
SQL> INSERT INTO test1 SELECT * FROM dba_objects nologging ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                           8698800   17390924        8,692,124
 
对表进行nologging操作   产生redo 8,692,300  相对于不作处理,没有变化
SQL> alter table test1 nologging ;
 
Table altered
 
SQL>
SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                          17393168
 
SQL> INSERT INTO test1 SELECT * FROM dba_objects ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                          17393168   26085468        8,692,300
 
 insert的时候,如果采用append  就会少很很多。 产生redo   66,600
SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                          26085608
 
SQL> INSERT/*+append*/ INTO test1 SELECT * FROM dba_objects ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                          26085608   26152208           66,600

如果再将表更改为nologging ,然后再insert的时候APPEND   会产生更少的REDO 26,472
 
SQL> alter table test1 nologging ;
 
Table altered
 
SQL>
SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                          26162576
 
SQL> INSERT/*+append*/ INTO test1 SELECT * FROM dba_objects ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                          26162576   26189048           26,472

测试条件:归档模式

以上结果大部分不会影响太大,只有append的时候会影响很大。

SQL> SET ECHO OFF
SQL> SET VERIFY OFF
SQL> COLUMN VALUE NEW_VAL V
SQL> DEFINE S='&1'
SQL> SET AUTOTRACE OFF
Cannot SET AUTOTRACE
SQL> SELECT A.NAME,B.VALUE  FROM V$STATNAME A ,V$MYSTAT B
  2  WHERE A.STATISTIC#=B.STATISTIC#
  3  AND LOWER(A.NAME) =LOWER('&S');
 
NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                           8736356
 
SQL> INSERT/*+append*/  INTO test1 a SELECT * FROM dba_objects ;
 
72220 rows inserted
 
SQL>
SQL> set echo off
SQL> set verify off ;
SQL> select distinct a.name,&v 执行前 ,b.value 执行后,to_char(b.value-&v,'999,999,999,999') 操作产生的redo
  2  from v$statname a ,v$mystat b
  3  where a.statistic#=b.statistic#
  4  and lower(a.name) =lower('&s');
 
NAME                                                                    执行前        执行后 操作产生的REDO
---------------------------------------------------------------- ---------- ---------- ----------------
redo size                                                           8736356   17555000        8,818,644
 这个区别也说明了,append只有在非归档模式下才会减少redo

分享到:
评论

相关推荐

    NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...

    oracle nologging 总结

    oracle nologging全面总结,从数据库级别,对象以及表级别都有说明,以及在生产环境的影响,和及时止损的处理方法。

    ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧分享

    UPDATE 1、先备份数据(安全、提高性能)。2、分批更新,小批量提交,防止锁表。3、如果被更新的自动有索引,更新的数据量很...2、大批量数据删除加上rownum<1000> nologging;)2、使用/*+ append */ 暗示。3、绑定变

    abator 生成ibaties dao xml

    abator 生成ibaties dao xml 生成命令

    Oracle事例

    sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0 sql> maxextents 50); <3>.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of ...

    oracle 8795792补丁

    ORA-14102: 只能指定一个 LOGGING 或 NOLOGGING 子句 安装补丁:8795792补丁 oracle

    profile和bashrc比较测试.

    profile和bashrc比较测试, 结论:bashrc文件可以在nologging状态下生效,而profile文件不可以

    oracle分区表学习与应用

    oracle 分区表学习及应用示例Create table(创建分区表) ... storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0) nologging;  grant all on bill_monthfee_zero to dxsq_dev;

    mybatis源码中文注释.zip

    org.apache.ibatis.logging.nologging org.apache.ibatis.logging.slf4j org.apache.ibatis.logging.stdout 对象适配器设计模式 2.异常 org.apache.ibatis.exceptions 3.缓存 org.apache.ibatis.cache org.apache...

    Data Guard配置

    1. 启动主数据库的强制日志记录功能,避免Nologging子句的影响 ALTER DATABASE FORCE LOGGING; 2. 配置日志传递的安全认证 一般情况,设定remote_login_passwordfile=exclusive,并且配置tnsnames.ora即可 3. 配置主...

    2021 云和恩墨大讲堂PPT汇总(50份).zip

    Oracle Nologging全面总结 Oracle RAC 集群安装部署 Oracle RMAN 单实例异机迁移恢复(版本:11GR2) Oracle存储过程性能分析案例 Oracle技术加油站:快速处理紧急性能问题的工具与经验 Oracle诊断性能问题时常用...

    oracle详解

    在导入时指定参数indexes=n,只导入数据而忽略index,在导完数据后在通过脚本创建index,指定 NOLOGGING选项 导出/导入与字符集 进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    10.2.6 LOGGING和NOLOGGING 348 10.2.7 INITRANS和MAXTRANS 349 10.3 堆组织表 349 10.4 索引组织表 352 10.5 索引聚簇表 368 10.6 散列聚簇表 376 10.7 有序散列聚簇表 386 10.8 嵌套表 390 10.8.1 嵌套表...

    前端-后端java的Util类的工具类

    │ │ ftp二进制与ascii传输方式区别.txt │ │ IPDeal.java │ │ Md5.java │ │ MD5Encrypt.java │ │ MyFileFilter.java │ │ PropsUtil.java │ │ RegExUtil.java │ │ SimpleConfig.java │ │ ...

    Oracle数据库实验操作

    实验52:日志文件管理和nologging的实现 107 数据文件 111 实验53:建立新的表空间 111 实验54:更改表空间的名称,更改数据文件的名称 113 表空间 116 实验55:建立临时表空间 117 实验56:大文件表空间和表空间的...

    Oracle编程艺术

    1.3.6 DBA与开发人员的关系.........................................................119 1.4 小结....................................................................................121 第 2章体系结构概述...

Global site tag (gtag.js) - Google Analytics