1.日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)

1.1三者的含义

LOGGING:当创建一个数据库对象时将记录日志信息到联机重做日志文件。LOGGING实际上是对象的一个属性,用来表示在创建对象时是否记录REDO日志,包括在做DML时是否记录REDO日志。一般表上不建议使用NOLOGGING,在创建索引或做大量数据导入时,可以使用NOLOGGING

FORCE LOGGING:简言之,强制记录日志,即对数据库中的所有操作都产生日志信息,并将该信息写入到联机重做日志文件。

NOLOGGING:正好与LOGGING、FORCE LOGGING 相反,尽可能的记录最少日志信息到联机日志文件。

FORCE LOGGING可以在数据库级别、表空间级别进行设定、而LOGGING与NOLOGGING可以在数据对象级别设定。

在使用DATA GUARD 时,要求使用强制记录日志模式。注:FORCE LOGGING并不比一般的LOGGING记录的日志多,数据库在FORCE LOGGING状态下,NOLOGGING选项将无效,因为NOLOGGING将破坏DATAGUARD的可恢复性.FORCE LOGGING强制数据库在任何状态下必须记录日志。

1.2与归档模式及非归档模式之间的关系

关于归档及非归档请参考一下链接:

http://www.55linux.com/oracle/DBA/473.html

日志记录模式与归档模式之间并不能等同,归档模式是指对系统产生的日志是否进行归档或不归档。归档模式下,将日志记录到日志文件,并进行归档。非归档模式下,同样将日志记录到日志文件,只不过不归档而已,容易丢失日志。日志的记录模式则不论是否处于归档或非归档,可以对日志进行记录,强制记录,或少记录日志。归档模式中的LOGGING或FORCE LOGGING 支持介质恢复,而NOLOGGING 模式不支持介质恢复。基于NOLOGGING模式操作所产生的日志远小于LOGGING模式产生的日志,即NOLOGGING模式最小化日志记录。

1.3优先级别

当数据库使用FORCE LOGGING时,具有最高优先级别,其次是表空间级别的FORCE LOGGING。即是当一个对象指定NOLOGGING时,而表空间或数据库级别的日志模式为FORCE LOGGING,则该选项不起作用,直到表空间或数据库级别的FORCE LOGGING解除。

一般建议将整个数据库设置为FORCE LOGGING或基于表空间级别设定FORCE LOGGING,而不建议两者都设置为FORCE LOGGING。

当数据库或表空间使用非强制日志模式时,则记录优先级别由低到高为:数据库、表空间、数据对象

2.三者的使用情况

2.1LOGGING模式

这是日志记录的缺省模式,无论数据库是否处于归档模式,这并不改变表空间与对象级别上的缺省的日志记录模式。对于临时表空间将不记录日志到联机重做日志文件。

2.2NOLOGGING模式

此模式不是不记录日志,而是最小化日志产生的数量,通常在下列情况下使用NOLOGGING

1
2
3
4
5
6
SQL*Loader indirect mode
INSERT/*+APPEND*/...
CTAS
ALTERTABLEstatements (move/add/split/merge partitions)
CREATEINDEX
ALTERINDEXstatements (move/add/split/merge partitions)

NOLOGGING与表模式,插入模式,数据库运行模式(archived/unarchived)的关系:下面仅说明使用append方式插入数据时日志产生的情况,如使用下面的方式进行插入

1
insert/*+append+*/intotb_name select colnam1,colname2from table_name;

数据库处于归档模式:

当表模式为logging状态时,无论是否使用append模式,都会生成redo.当表模式为nologging状态时,只有append模式,不会生成redo

2.3FORCE LOGGING模式

设定数据库为Force Logging模式后,数据库将会记录除临时表空间或临时回滚段外所有的操作,而忽略类似NOLOGGING之类的指定参数。

通过下面的操作来修改

1
2
ALTERDATABASEFORCE LOGGING;
ALTERTABLESPACE tablespace_name FORCE LOGGING;

取消FORCE LOGGING模式

1
2
ALTERDATABASENOFORCE LOGGING;
ALTERTABLESPACE tablespace_name NOFORCE LOGGING;

2.4查看不同级别的日志模式

查看数据库级别日志的归档模式、记录模式

1
2
3
4
5
sys@ORCL> select log_mode,force_logging from v$database;
    
LOG_MODE     FOR
------------ ---
NOARCHIVELOG NO

查看表空间级别的日志记录模式

1
2
3
4
5
6
7
8
9
10
11
12
13
sys@ORCL> select tablespace_name,logging,force_logging from dba_tablespaces;
    
TABLESPACE_NAME                LOGGING   FOR
------------------------------ --------- ---
SYSTEM                         LOGGING   NO
UNDOTBS1                       LOGGING   NO
SYSAUX                         LOGGING   NO
TEMP                           NOLOGGING NO
USERS                          LOGGING   NO
LINUX                          LOGGING   NO
ASK1                           LOGGING   NO
ASK2                           LOGGING   NO
ASK3                           LOGGING   NO

查看对象级别的日志记录模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
scott@ORCL> select table_name,logging from user_tables;
    
TABLE_NAME                     LOG
------------------------------ ---
DEPT                           YES
EMP                            YES
BONUS                          YES
SALGRADE                       YES
EMPLOYEE                       YES
EMP_HIST                       YES
DUMMY_EMP                      YES
ASKORACLE_RANGE_LIST
ASKORACLE_RANGE_HASH1
ASKORACLE_RANGE_HASH
ASKORACLE_LIST
    
TABLE_NAME                     LOG
------------------------------ ---
ASKORACLE_HASH
ASKORACLE
EMP_TEST                       YES

2.5日志模式记录转换

1
2
3
4
5
6
7
8
9
10
11
a.数据库从非强制日志模式切换到强制日志模式
sys@ORCL>alterdatabaseforce logging; 
b.数据库从强制日志模式切换到非强制日志模式
sys@ORCL>alterdatabasenoforce logging;
c.表空间级别从强制日志模式切换到非强制日志模式
sys@ORCL>alterdatabasenoforce logging;
d.表空间级别从非强制日志模式切换到强制日志模式
sys@ORCL>alterdatabasenoforce logging;
e.对象级别日志记录模式
sys@ORCL>altertabletb_a nologging;--不记录日志模式
sys@ORCL>altertabletb_a logging;--采用日志记录模式

3.LOB段上有关NOLOGGING与LOGGING的情况

3.1计算所有LOB的大小:

1
2
SELECT SUM(BYTES)/1024/1024/1024 as LOB_Size FROM user_segments
WHERE segment_type='LOBSEGMENT';

3.2计算所有nologging的大小

1
2
3
4
SELECT SUM(s.BYTES)/1024/1024/1024 as Nologging_size
FROM user_segments s,user_lobs l
WHERE s.segment_type='LOBSEGMENT'
AND l.LOGGING='NO'AND l.SEGMENT_NAME=s.SEGMENT_NAME;

3.3列出所有nologging/logging 的lobs和对应的表空间及其大小:

1
2
3
4
5
6
7
8
9
SELECT s.segment_name,s.bytes,s.TABLESPACE_NAME
FROM user_segments s,user_lobs l
WHERE s.segment_type='LOBSEGMENT'
AND l.LOGGING='NO'AND l.SEGMENT_NAME=s.SEGMENT_NAME;
    
SELECT s.segment_name,s.bytes,s.TABLESPACE_NAME
FROM user_segments s,user_lobs l
WHERE s.segment_type='LOBSEGMENT'
AND l.LOGGING='YES'AND l.SEGMENT_NAME=s.SEGMENT_NAME;

3.4计算LOB段上nologging/logging的数量

1
2
SELECT COUNT(*) FROM user_lobs WHERE logging='NO';
SELECT COUNT(*) FROM user_lobs WHERE logging='YES';

关于LOGGING在Oracle 10g考试中的题如下:

Which two statements regarding the LOGGING clause of the CREATE TABLESPACE. .. statement are

correct? (Choose two.)

A. This clause is not valid for a temporary or undo tablespace.

B. If the tablespace is in the NOLOGGING mode, no operation on the tablespace will generate redo.

C. The tablespace will be in the NOLOGGING mode by default, if not specified while creating a tablespace.

D. The tablespacelevel logging attribute can be overridden by logging specifications at the table, index,materialized view, materialized view log, and partition levels.

Answer: AD

本文链接:http://www.askoracle.org/oracle/DBA/655.html | Ask Oracle社区

Oracle数据库LOGGINGNOLOGGING模式概述相关推荐

  1. JSP停车场车位管理系统myeclipse开发oracle数据库BS模式java编程网

    一.源码特点      JSP 停车场车位管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet+bean+dao (mvc模式开发),系统具有完整的源代码和数据库 ...

  2. oracle数据库归档模式修改ARCHIVELOG

    oracle数据库归档模式修改ARCHIVELOG 一.查看当前数据库的归档模式 第一步:查看oracle数据库的归档模式 命令如下:(该命令登录sys用户可查) select log_mode fr ...

  3. oracle数据库中emp表,根据Oracle数据库scott模式下的emp表和dept表

    Oracle数据库scott模式下的emp表和dept表的搜索练习,仅供参考 题目要求:根据Oracle数据库scott模式下的emp表和dept表,完成下列操作. (1) 查询20号部门的所有员工信 ...

  4. Oracle中emp与dept下载,根据Oracle数据库scott模式下的emp表和dept表

    根据Oracle数据库scott模式下的emp表和dept表 题目要求:根据Oracle数据库scott模式下的emp表和dept表,完成下列操作. (1) 查询20号部门的所有员工信息. selec ...

  5. Oracle数据库什么模式,数据库模式是什么?关于数据库模式的详细介绍

    数据库系统的数据库模式是以数据库管理系统(DBMS)支持的形式语言描述的结构.术语"模式"指的是指将数据组织为数据库构建方式的蓝图(在关系数据库的情况下分为数据库表).数据库模式的 ...

  6. oracle 数据库运行模式

    可以通过如下命令查看oracle数据库的运行模式: SQL>CONNECT /AS SYSDBA; SQL>ARCHIVE LOG LIST Database log mode       ...

  7. java汽车4S店管理系统myeclipse定制开发oracle数据库网页模式java编程jdbc

    一.源码特点  java汽车4S店管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 oracle数据库,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. jav ...

  8. Oracle 数据库启动模式

    目录 1.启动数据库的步骤 2.启动模式 1.启动实例不加载数据库(NOMOUNT模式 ) 2.加载数据库但不打开数据库(MOUNT模式) 3.打开数据库(OPEN模式) 4.强制启动数据库 3.转换 ...

  9. oracle数据库方案模式,Oracle数据库技术服务方案.doc

    Oracle技术服务方案书 第 PAGE 2 页/总 NUMPAGES 8 页 Oracle数据库技术服务方案 (V1.0) 目录 TOC \o "1-3" \h \z HYPER ...

最新文章

  1. 利用函数BAPI_PR_CREATE开发采购申请批导
  2. Jzoj4778 数列编辑器
  3. Servlet 处理多种请求应用
  4. leetcode-114-二叉树展开为链表*
  5. fsck 修复文件系统_微软推出Win10 20H2 Build 19042.608测试版 修复多种已知错误
  6. C#多线程之线程池篇2
  7. JS 获取随机颜色值
  8. 计算机考研专业课卷子,考研统考专业课有哪些?题型都有什么?你了解吗
  9. C++,std::shared_future的使用
  10. oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
  11. CMOS开关学习(一)
  12. Redis实战第一篇
  13. Linux PostgreSQL离线下载与安装
  14. codeforces1467D. Sum of Paths
  15. php 接口文档写法,php 接口文档
  16. 硬盘维修彻底揭密 新手必读
  17. OPPOR8107_官方线刷包_救砖包_解账户锁
  18. python:将汉字转换为拼音
  19. 微信撤回视频服务器还有吗,微信更新又来了,这次终于不会把撤回和删除搞错了...
  20. 混音和母带处理插件:IK Multimedia T-RackS 5 for Mac

热门文章

  1. 数据库系统概念总结:第四章 中级SQL
  2. Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序(文末送书)
  3. SpringCloud之微服务
  4. 2021年河北高考生成绩排名查询,2021年河北高考成绩查询网站查分网址:http://www.hebeea.edu.cn/...
  5. 神策数据王灼洲 徐缓:ID-Mapping 用户打通那些事儿
  6. 案例 | 易快报:解放“客户成功”的背后故事
  7. HTML-语义类标签
  8. 本地突破XP系统权限
  9. Dubbo的静态服务
  10. 命令行编译xcodebuild