三 补充日志(supplemental logging)

补充日志是对重做记录中变更矢量的补充信息,增加了变更矢量记载的记录量。Oracle某些功能要求启用补充日志才能正常或更好的工作,比如logminer(日志挖掘器)、闪回事务查询、闪回事务等。

对于insert和delete来说,常规的重做记录记载了被更改的行的所有字段,没有什么补充,但是update例外,不但所有字段的旧值没有被记录(除非更新所有字段),有时update还是导致行迁移,

补充日志主要就是为update服务的,补充的目的就是要高度还原真实的update,在某种情况下,当实例和介质恢复不能百分百地完成作用时,只能向残存的日志索取更多的信息

1 数据库级补充日志

在oracle 11g中,默认不启用

TEST@ orcl >select supplemental_log_data_min sl_min,supplemental_log_data_pk sl_pk,supplemental_log_data_ui sl_ui,
supplemental_log_data_fk sl_fk,supplemental_log_data_all sl_all from v$database; 2 SL_MIN SL_ SL_ SL_ SL_
-------- --- --- --- ---
NO NO NO NO NO

最小补充日志是最基本的一种数据库级补充日志

LogMiner依赖最小补充日志产生的特殊信息以识别、分组与合并dml所产生的重做记录,目的是为了让logminer通过分析redo log就可以识别由update导致的行迁移、行移动。

如果update命令导致行变长,在数据块空间不足的情况下行会部分(行头部除外)迁移至另一个数据块,称为行迁移

TEST@ orcl >alter database add supplemental log data; ##启用最小补充日志
Database altered.
TEST@ orcl >select supplemental_log_data_min sl_min from v$database;
SL_MIN
--------
YES
TEST@ orcl >alter database drop supplemental log data; ##关闭最小补充日志

启用最小补充日志不会对重做记录的生成产生明显的额外开销,又能使日志文件支持logminer和闪回事务查询功能,提高数据块抵抗人为错误的能力上考虑,应该启用此功能。

注意:凡是启用或关闭数据库级补充日志都会导致共享池中的所有的sql命令游标非法,在短期内硬解析会显著上升。

TEST@ orcl >select count(*) from scott.emp;
COUNT(*)
----------
14
TEST@ orcl >select invalidations from v$sql where sql_text='select count(*) from scott.emp';
INVALIDATIONS
-------------
0
select sql_text,invalidations from v$sql where sql_text like 'select count(*) %';

关键字段补充日志有4种主键、唯一索引、外键和全体字段补充日志。

--alter database add supplemental log data (primary key) columns;

开启主键补充日志的前提必须要开启最新补充日志,关闭也是一样。

主键补充日志的作用是在update命令的重做记录中添加被修改行的主键字段的旧值。

唯一索引补充日志只有当唯一索引字段被update时才会记录该字段。

外键补充一样,只有当外键字段被update修改时,其修改前的旧值才会被记录。

全体字段补充日志,它和主键补充一样同为不条件,无论哪个字段被update,所有字段(除了LOB\LONG类型)的旧值都将被记录。

--alter database add supplemental log data (all) columns;

2 表级补充日志

针对某些表进行日志补充,前提要开启数据库最小日志补充。

表级补充分为主键、唯一索引、外键、全字段和自定义5种类型,前4种与数据库级对应的类型特点一样。

--alter table scott.emp add supplemental log data (primary key) columns;

--alter table scott.emp add supplemental log group emp_info(first_name,last_name,email);

如果只从DML命令性能的角度出发,没有人会启用补充日志,建议至少启用最小日志补充,否则至少将丧失logminer和闪回事务查询功能。

oracle 11g 数据库恢复技术 ---03 补充日志的更多相关文章

  1. oracle 11g 数据库恢复技术 ---01 重做日志

    一 redo log Oracle数据库中的三大核心文件分别是数据文件(data file).重做日志(redo log)和控制文件(control file).数据文件保证了数据库的持久性,是保存修 ...

  2. oracle 11g 数据库恢复技术 ---02 控制文件

    oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...

  3. oracle 11g 数据库恢复技术 ---04 rman

    四 RMAN RMAN体系结构的主要组成部分: --1 目标数据库(target) --2 RMAN命令行客户端 --3 通道(channel) --4 快速恢复区(fast recovery are ...

  4. oracle 11g 数据库恢复技术 --rman catalog

    Oracle RMAN的catalog并不是指标备份恢复操作的一个必要组件,但oracle推荐使用该组件.启用之后,归档日志.备份集.镜像复制等备份信息的保存地点是RMAN资料库(catalog), ...

  5. 在Windows 10上安装Oracle 11g数据库出现的问题及解决

    在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...

  6. 完美完全卸载Oracle 11g数据库

    Oracle 11g可在开始菜单中卸载,然后同时需要删除注册表中相关内容. 操作系统:windows10专业版. 卸载步骤: 1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的 ...

  7. PL/SQL Developer工具包和InstantClient连接Oracle 11g数据库

    一.前言 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能. ...

  8. 在Windows10系统下安装Oracle 11g数据库

    在Windows10系统下安装Oracle 11g数据库 https://blog.csdn.net/wei1992_6/article/details/60054727

  9. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

随机推荐

  1. intellij idea 的快捷键方法

    1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...

  2. django基础篇02-url路由系统

    django的路由系统: 一.基本用法: 1.path('index', views.index), # 通过类的方式创建url映射 2.path('home', views.Home.as_view ...

  3. [ZJOI2006]物流运输(动态规划,最短路)

    [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个 ...

  4. [每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock

    开发apache camel应用,最好的方式就是tdd,因为camel的每个组件都是相互独立并可测试的. 现在有很多好的测试框架,用groovy的Spock框架的BDD(行为测试驱动)是比较优秀和好用 ...

  5. java环境contos上solr-5.5.0 安装部署

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  6. 关于js节流函数throttle和防抖动debounce

    废话不多说,直奔主题. 什么是throttle和debounce? 这两个方法的主要目的多是用于性能优化.最常见的应用尝尽就是在通过监听resize.scroll.mouseover等事件时候的性能消 ...

  7. 常见BUG

    1.没有配置Tomcat服务,由于 <exclusions> <exclusion> <groupId>org.springframework.boot</g ...

  8. Django【第15篇】:Django之Form组件归类

    Form组件归类 一.Form类 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: 1 Field 2 r ...

  9. 如何用git将本地代码上传github

    其实去年就用github了,但是毕竟也只是在上面搜索一些工作的难点和自我学习,自己都没有贡献过代码,觉得确实很low,知道今天自己用了2周左右的时间开发了 微信小程序,有了自己的贡献代码,所以想上传到 ...

  10. H5 图片上传

    1.h5 图片异步上传 (1) 异步上传input触发onchange事件的时候,就把图片上传至服务器.后台可能会返回图片的链接等信息,前台可以把图片信息展示给用户看. (2) 另一种情况可能需要前台 ...