Nologging到底何时才能生效? link: http://www.itpub.net/242761.html http://www.itpub.net/239905.html ?...我们知道,Nologging只在很少情况下生效 通常,DML操作总是要生成redo的 这个我们不多说. 关于Nologging和append,一直存在很多误解....经过一系列研究,终于发现了Nologging的真相....我们来看一下测试: 1.Nologging的设置跟数据库的运行模式有关 a.数据库运行在非归档模式下: SQL> archive log list; Database log mode???????...我们注意到这里是DIRECT INSERT,而且是10470条记录,也就是每条记录都记录了redo. 2.对于Nologging的table的处理 a.
一般表上不建议使用NOLOGGING,在创建索引或做大量数据导入时,可以使用 NOLOGGING 。...NOLOGGING:正好与LOGGING、FORCE LOGGING 相反,尽可能的记录最少日志信息到联机日志文件。...注:FORCE LOGGING并不比一般的LOGGING记录的日志多,数据库在FORCE LOGGING 状态下,NOLOGGING选项将无效,因为NOLOGGING将破坏DATAGUARD的可恢复性...基于NOLOGGING模式操作所产生的日志远小于LOGGING模式产生的日志,即NOLOGGING模式最小化日志记录。...2.NOLOGGING模式 此模式不是不记录日志,而是最小化日志产生的数量,通常在下列情况下使用NOLOGGING SQL*Loader in direct mode INSERT /*+APPEND
158 SQL> @redo SQL> select * from redo_size; VALUE ---------- 80892 SQL> create table test nologging...SQL> @redo SQL> select * from redo_size; VALUE ---------- 35768 SQL> create table test nologging...结论: 显然ctas的Nologging在archivelog模式下才会不记录redo,而在Noarchivelog模式下会产生同样多的redo 在归档模式下的CTAS nologging应该等价于非归档模式下
所以在主库执行nologging操作是不被允许的。这也就是为什么我们需要在配置Data Guard阶段需要使用Force Logging。...在一些场景中,我们会去使用nologging操作去节省大量数据插入的时间,而这种操作所带来的问题就是,如果该库在有备库的情况下,因为主库的nologging插入操作不会生成redo,所以不会在备库上传输和应用...在Oracle 11g,如果遇到这样的问题,可以通过在备库恢复有问题的数据文件来解决问题,示例如下: 在一个具有主备关系的主库上将force_logging设置为nologging模式,随后创建一张表,...设置为nologging模式 SQL> alter database no force logging; SQL> create table DEMO tablespace users pctfree...如果,由于nologging操作导致某些块被标记为损坏的,那么这部分数据文件就是需要恢复的,然后怎么办?在恢复命令中有FORCE选项。但我们可能并不需要它。
如在对表段、索引段使用数据泵导入时,可以 使用NOLOGGING模式,而使用DATA GUARD或对可用性较高的场景中需要记录日志,甚至使用强制记录日志。...本文介绍了在表段,索引段使用 LOGGING与NOLOGGING时产生redo的大小以及DIRECT INSERT APPEND 的使用方法。...; --使用nologging重建索引。...--也可以在创建索引的时候直接使用nologging关键字 --如:create index idx_tb_obj_nolog tb_obj_nolog(object_id) nologging...对于归档模式下,logging模式产生的日志将远远大于使用nologging模式产生的日志量 二、使用DIRECT INSERT APPEND方式的LOGGING与NOLOGGING情况 DIRECT
♣ 题目部分 【DB笔试面试792】在Oracle中,ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案. ♣ 答案部分 (一)NOLOGGING操作引起的坏块...如果数据段(表段、索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND、UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING...若LOGGING='NO'则表示NOLOGGING。...(四)识别数据块什么时候被标志为NOLOGGING 识别数据块什么时候被标志为NOLOGGING,可以将trace文件中数据块SCN或者V$DATABASE_BLOCK_CORUPTION视图中CORRUPTION_CHANGE...可行的方法是在NOLOGGING操作之后立刻备份对应的数据文件。
第一种场景:table在nologging模式下。并且表中没有索引, 在插入不同数据量的时候,生成的redo和响应时间都有一定的幅度提升。...第三种场景:表在nologging模式,表中有主键,主键对应的索引处于logging模式 nologging+index(unique index) logging 00.22 25862 1381736...第四种场景,表采用nologging模式,表中无索引,使用append模式插入数据。...+append模式和nologging基本没有区别。...第五种场景:表处于nologging模式,表中有索引,处于Nologging模式。采用append插入数据。 可以看到采用index的logging和nologging模式,两者也没有明显的变化 ?
最后需要说明一下有关NOLOGGING的错误使用情况。...下面几条SQL都是使用NOLOGGING时的错误用法: INSERT INTO T1 NOLOGGING; INSERT INTO T1 SELECT * FROM T2 NOLOGGING; INSERT...NOLOGGING */ FROM T1; UPDATE /*+ NOLOGGING */ T1 SET A='1'; 实际上,上述所有的SQL没有一个能够实现“不产生”日志的数据更改操作。...事实上,NOLOGGING并不是Oracle的一个有效的Hint,而是一个SQL关键字,通常用于DDL语句中。这里NOLOGGING相当于给SELECT的表指定了一个别名为“NOLOGGING”。...下面是NOLOGGING的一些正确用法: CREATE TABLE T1 NOLOGGING AS SELECT * FROM T2; CREATE INDEX T1_IDX ON T1(A) NOLOGGING
(二)关于属性NOLOGGING和并行度的结论: 1、对于形如:“CREATE TABLE TT NOLOGGING PARALLEL 4 AS SELECT * FROM DBA_OBJECTS;”或...“CREATE INDEX IDNX11 ON TT(OBJECT_ID) NOLOGGING PARALLEL 4;”的SQL语句而言,创建的表或索引的并行度是4,日志模式是NOLOGGING,所以,...2、对于形如:“ALTER TABLE TT MOVE NOLOGGING PARALLEL 4;”或“ALTER INDEX IDNX11 REBUILD NOLOGGING PARALLEL 4;”...(四)NOLOGGING使用注意事项: 1、NOLOGGING方式插入数据后最好对表做个备份。生产上重要的表不建议设置NOLOGGING属性。...4、事实上,在NOLOGGING模式下,还是会生成一定数量的Redo。这些Redo的作用是保护数据字典,这是不可避免的。 5、NOLOGGING不能避免所有后续操作不生成Redo。
在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作: 1.将部分表置为nologging 2.将部分index置为nologging 3.将部分foreign...然后使用如下的脚本,就能生成完整的脚本,在升级前nologging,disable的工作就生成脚本到pre目录下,logging,enable的工作就生成脚本到post目录下 脚本内容也没有了冗余。...logging_flag=logging nologging_flag=nologging disable_flag=disable enable_flag=enable awk '{print "'\...xxxx dba 11280 Jun 23 21:00 fk_constraint_disable.sql -rw-r--r-- 1 xxxx dba 42631 Jun 23 21:00 index_nologging.sql...-rw-r--r-- 1 xxxx dba 13888 Jun 23 21:00 tab_nologging.sql -rw-r--r-- 1 xxxx dba 621 Jun 23 21:00
如果数据段(表段、索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND、UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING...若LOGGING='NO'则表示NOLOGGING。...(四)识别数据块什么时候被标志为NOLOGGING 识别数据块什么时候被标志为NOLOGGING,可以将trace文件中数据块SCN或者v$database_block_coruption视图中CORRUPTION_CHANGE...可行的方法是在NOLOGGING操作之后立刻备份对应的数据文件。...主库出现nologging坏块可能是由于主库执行过备份恢复或者之前是备库,执行了switchover。
修复由于主库NOLOGGING操作引起的备库ORA-01578和ORA-26040错误 (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578...如果数据段(表段、索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND、UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING...若LOGGING='NO'则表示NOLOGGING。...可行的方法是在NOLOGGING操作之后立刻备份对应的数据文件。...在一个具有主备关系的主库上将 force_logging 设置为 nologging 模式,随后创建一张表,设置为 nologging 模式: SQL> alter database no force
4,ctas nologging方法生成的log远远小于其它的方式。 5,append方式并不一定能减少redo的生成,但是肯定能减少undo的生成。...6,append减少redo,前提是表在nologging方式下面,注意这里表上面没有索引,append只对表有效,对索引无效。...下面是详细的测试步骤 1. ctas方式生成的undo与redo 2,ctas nologging方式生成的undo与redo 这种方式生成的UNDO,REDO的大小都是最好的 3,普通表与insert...普通create表与insert append方式生成的redo与undo 5. nologging方式的create表与insert append方式生成的undo与redo -----the end
若T表数据量适当,可选用在线重定义操作时,可参考:http://www.cnblogs.com/jyzhao/p/3876634.html 1.创建分区表 2.设置新建分区表为nologging, 重命名原表...2.设置新建分区表为nologging, 重命名原表T为T_OLD alter table t_part nologging; rename T to T_old; 3.并行直接路径插入 alter...create unique index PK_T on T_PART(OID, TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace DBS_I_JINGYU nologging...00.43 create index IDX_T_2 on T_PART (TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace DBS_I_JINGYU nologging...: 02: 27: 49.92 create index IDX_T_3 on T_PART (TIME_STAMP, CITY_ID) local tablespace DBS_I_JINGYU nologging
♣ 答案部分 快速复制表可以指定NOLOGGING选项,如: CREATE TABLE T1 NOLOGGING AS SELECT * FROM T2; 快速插入数据可以指定APPEND提示,需要注意的是...,在NOARCHIVELOG模式下,默认用了APPEND就是NOLOGGING模式的。...在ARCHIVELOG下,需要把表设置程NOLOGGING模式。
Active Data Guard 新增的 nologging 子句 当使用 Active Data Guard 时,通过该特性可以使 redo 日志的增长量不那么大。...这两种 nologging 模式可以替代现有的 nologging 模式。...STANDBY NOLOGGING FOR DATA AVAILABILITY STANDBY NOLOGGING FOR LOAD PERFORMANCE DBCA 静默模式新特性 创建一个 CDB
: update test set test='a'; update test set test=''; 基本上可以看出一些数据的执行情况, 在表为noparallel的情况下,使用logging,nologging...在表设置parallel的情况下,使用logging,nologging,没有明显的性能提升,但是使用session级别的parallel,执行的时间有了成倍的提高,生成的redo日志也从百兆降低到百字节...generated..Elapsed: 00:00:21.13 Elapsed: 00:00:00.01 Elapsed: 00:00:40.02 197236392 bytes of redo generated…nologging...generated…Elapsed: 00:00:30.31 Elapsed: 00:00:00.00 Elapsed: 00:00:16.24 320 bytes of redo generated…nologging
释放了表空间以后表的ROWID会发生变化,基于ROWID的索引会失效,此时就需要重建索引 --重建非分区索引 ALTER TABLE your_table_index REBUILD [ONLINE] [NOLOGGING...-重建分区索引 --针对分区索引-非组合索引 ALTER INDEX your_table_index REBUILD PARTITION your_partition_name [ONLINE] [NOLOGGING...]; 注意: 设置日志级别为NOLOGGING 意味尽量减少日志,可以加速索引重建 ONLINE,NOLOGGING 两者位置顺序可以对调,不影响 普通情况下建立索引或者REBUILD索引时,oracle...||index_name ||' REBUILD PARTITION ' || partition_name || ' NOLOGGING;' FROM dba_ind_partitions WHERE...||index_name ||' REBUILD SUBPARTITION ' || subpartition_name || ' NOLOGGING;' FROM dba_ind_subpartitions
♣ 题目部分 在Oracle中,如何修复由于主库NOLOGGING引起的备库ORA-01578和ORA-26040错误?...在这些场景中,DBA可能会使用NOLOGGING操作去节省大量数据插入的时间,而这种操作所带来的问题就是,如果该库在有备库的情况下,因为主库的NOLOGGING插入操作不会生成Redo,所以不会在备库上传输和应用...在一个具有主备关系的主库上将FORCE_LOGGING设置为NOLOGGING模式,然后创建一张表LHR.TESTDGNOLOG,设置为NOLOGGING模式: SQL> ALTER DATABASE...如果,由于NOLOGGING操作导致某些块被标记为损坏的,那么这部分数据文件就是需要恢复的。在恢复命令中有FORCE选项。因为有些时候数据文件是同步的,实时日志应用进程还是在运行的。...在Oracle 12.2中可以尝试使用NOLOGGING操作去节省大量数据插入的时间,然后在系统空闲时间进行备库恢复操作。但是,这种操作也存在弊端,因为备库的可用性就大大降低了。
controlfile序列操作和共享部分controlfile读和写: •发生检查点 •日志文件的切换 •归档online redolog •运行崩溃后的恢复 •热备的开始和结束 •DML通过nologging...选项执行对象时 看到最后一个可能原因的时候,客户突然想起了什么:表上好像在之前做优化的时候设置了nologging。...总结与建议: 其实nologging的设置,本身也是没有问题的,问题还是在于sqlldr的设置,每128条记录commit一次的频率太高,如果把每次提交的记录数调高(比如调到100万记录commit...我的建议就是不用改表上的nologging设置,而是增大每次commit的记录数。所有的sqlldr都修改这个参数,现有其他sqlldr的加载过程也会提速。
领取专属 10元无门槛券
手把手带您无忧上云