`
PolyAngel
  • 浏览: 114828 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

关于ORACLE中的nologging

 
阅读更多
Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
数据库使用归档方式运行时才可以进行灾难性恢复。
归档日志模式和非归档日志模式的区别
非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.

改变归档模式到非归档模式:
1)SQL>SHUTDOWN NORMAL/IMMEDIATE;
2)SQL>START MOUNT;
3)SQL>ALTER DATABASE NOARCHIVELOG;
4)SQL>ALTER DATABASE OPEN;


启用自动归档: LOG_ARCHIVE_START=TRUE
归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止.
这时只能读而不能写.
运行过程中关闭和重启归档日志进程
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START

手动归档: LOG_ARCHIVE_START=FALSE
归档当前日志文件
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
归档序号为052的日志文件
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
归档所有日志文件
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改变归档日志目标
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';


1------------------------------------------------------
某DBA告诉我这样可以不写LOG:
alert tablename nologgin;
insert into tablename (select ...)
注意:insert语句后面必须是‘select...’语句,否则无效

2------------------------------------------------------
NOLOGING选项只是在direct-load模式下才不写redo log,nomal DML无效

3------------------------------------------------------
alter table tb_txn_log nologging,然后改回来alter table tb_txn_log logging这种模式
会影响联机交易

4------------------------------------------------------
insert into test1 nologging select * from dba_objects
alter table test1 nologging
insert into test1  select * from dba_objects

5------------------------------------------------------

关于nologging的用法
有许多朋友误已写SQL或把表的属性加NOLOGGING,就可以不采成日志。这是一个误解。

在数据迁移或大量的数据insert入库时,由于大量数据的insert或修改,经常引起redo log sync的等待,造成数据库性能缓慢。
因为许多朋友对NOLOGGING的误解,所以许多人在insert数据时,在SQL后加nologging,想通过该用法使操作不采生日记录。但无效果。
这里讨论nologging的具体用法:

数据库操作,只有如下几种情况下不产成redo记录:
1、用sql*load的direct load方式时,不采用redo记录
2、用insert的direct方式,即在append方式insert( insert append可以实现直接路径加载,速度比常规加载方式快很多。但有一点需要注意: insert append时在表上加“6”类型的Exclusive锁,会阻塞表上的所有DML语句。因此在有业务运行的情况下要慎重使用.在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。
使用append会增加数据插入的速度。
的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间
append 属于direct insert,归档模式下append+table nologging会大量减少日志,非归档模式append会大量减少日志,append方式插入只会产生很少的undo
不去寻找 freelist 中的free block , 直接在table HWM 上面加入数据。)
3、create table .... as select
4、create index
5、alter table ... move partition
6、alter table ... split partition
7、alter index ... split partition
8、alter index ... rebuild
9、alter index ... rebuild partition
10、INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line
分享到:
评论

相关推荐

    oracle nologging 总结

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

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

    ### Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL选项下REDO、UNDO及执行速度的比较 #### 1. 引言 在Oracle数据库管理中,了解不同操作模式下REDO与UNDO的生成量以及这些操作对执行速度的影响至关重要。这有助于...

    ORACLE自动内存管理和存储调整

    ORACLE 自动内存管理和存储调整是 ORACLE 数据库中的一种重要配置,它可以根据系统的实际情况自动调整内存和存储的使用,以提高数据库的性能和效率。本文将详细介绍 ORACLE 自动内存管理和存储调整的相关知识点。 ...

    oracle海量数据中提升创建索引的速度.docx

    "Oracle 海量数据中提升创建...为了提高 Oracle 海量数据中的创建索引速度,可以从多方面入手,包括使用 nologging 参数、parallel 并行参数、manual pga 模式等。同时,调整pga的参数和了解pga的工作机制也很重要。

    ORACLE中对大数据量表的处理方法

    ### ORACLE中对大数据量表的处理方法 #### 一、引言 随着ORACLE数据库在各个领域的广泛应用,很多应用场景下的共享数据量逐渐增大。在这些应用中,少数几个大数据量表占据了大量的存储空间。这类表往往具有很强的...

    Oracle在线建立超大表的索引

    在Oracle数据库中,为含有千万级别记录的大表创建索引是一项挑战性任务,尤其是对于那些处于高并发在线生产环境中的表。本文将详细介绍如何为一个核心大表(INFO_CUSTOMER)创建一个全局B树索引,并在此过程中尽可能...

    Oracle常用的SQL语句维护

    本文将深入探讨Oracle中常用的SQL语句以及与数据库表空间相关的维护知识。 首先,让我们了解如何在Oracle中创建表空间。表空间是Oracle数据库中存储数据的逻辑单位,它由一个或多个数据文件组成。创建表空间的SQL...

    \Oracle 表空间与数据文件

    通过以上内容,我们详细了解了Oracle中的表空间与数据文件的概念、分类以及它们在Oracle数据库存储结构中的作用,并学习了如何通过SQL查询来查看和管理这些表空间和数据文件。这对于管理和优化Oracle数据库的性能至...

    Oracle常见问题1000题

    在Oracle数据库中,`INSERT`命令用于向表中插入新的记录。例如,使用`/*+append*/`提示,可以将数据直接追加到表尾部,提高插入效率。不记录日志的插入操作可通过`NOLOGGING`关键字实现,这在大量数据插入时可显著...

    典藏之作 oracle 常用命令大汇总

    在Oracle数据库系统中,日志管理是维护数据库稳定性和数据完整性的重要组成部分。本章将详细介绍Oracle中的日志管理相关命令及其应用。 ##### 1. 强制日志切换 (Forcing Log Switches) 强制日志切换是为了确保当前...

    oracle 常用的备份方式及备份策略

    EXP/IMP 逻辑备份可以跨版本使用,例如可以将 Oracle 11g 的备份文件导入到 Oracle 12c 中。 OS 备份 OS 备份是指备份操作系统文件,例如数据文件、日志文件等。 冷备份 冷备份是指数据库关闭时进行备份,冷备份...

    oracle开发

    【Oracle开发】中关于“ORACLE索引与高性能SQL”的知识点涵盖了索引的基本概念、目的、类型、管理和优化策略等多个方面。以下是对这些知识点的详细解释: 1. **索引定义**:索引是一种数据库对象,它加快了对表中...

    对比Oracle数据库中多种导入数据方法

    为了优化导入性能,可以调整Oracle的初始化参数,如SORT_AREA_SIZE以增大排序区,或者使用NOLOGGING选项减少redo日志生成,但这可能影响数据库的恢复和standby数据库的同步。此外,合理规划导入过程,如分批导入、...

    Oracle数据库管理员指南-管理表-中文版.pdf Administrator's Guide Oracle Managing Tables

    Oracle数据库管理员在管理表的过程中,需要遵循一系列的准则和最佳实践,以确保数据库的高效、安全和易于维护。本文将详细介绍Oracle数据库中表的管理要点,包括表的基本概念、设计原则、创建、修改、删除以及相关的...

    Oracle表空间和数据文件的管理.docx

    Oracle数据库中的存储结构可以分为逻辑结构和物理结构两大部分。逻辑结构主要包括数据库、表空间、段、区段和Oracle数据块,而物理结构则主要指操作系统层面的数据文件和数据块。下面是这些结构之间的关系概述: - ...

    ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt

    本文将详细介绍Oracle中实现批量更新的四种常见方法,并通过示例代码来具体说明每种方法的应用场景及优缺点。 #### 二、方法一:直接SQL更新语句 **定义:** 最直观的方法是直接使用SQL更新语句来进行批量更新。 ``...

    oracle数据泵导入

    根据题目中的描述,这里详细介绍如何使用Oracle数据泵导入功能进行数据导入。 ##### 1. 创建表空间 首先,需要创建一个新的表空间用于存放即将导入的数据。在题目中给出的例子中,创建了一个名为`ABS`的表空间,其...

    ORACLE常用命令大全.

    以下是一些关于Oracle常用命令的详细说明,分为日志管理和表空间管理两大部分。 ### 日志管理 #### 1. 强制日志切换 ```sql alter system switch logfile; ``` 这个命令用于在当前重做日志文件填满前强制进行日志...

    Oracle插入大量数据

    NOLOGGING`),可以在大数据量的插入操作中显著降低日志写入的开销,从而大幅减少操作时间。但值得注意的是,禁用日志记录会牺牲数据恢复的安全性,因此在操作完成后应立即恢复日志记录(`ALTER TABLE ... LOGGING`...

    oracle在线创建索引和重组索引

    * 在并行创建或者重组完成以后,一定要取消索引的并行度,否则,在 OLTP 环境中,可能会因为意外的使用并行而出现严重性能问题。 在线创建索引和重组索引可以提高查询性能和减少索引的碎片化和空间浪费,但需要注意...

Global site tag (gtag.js) - Google Analytics