author:zy

附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、GoldenGate、LogMiner。可以在数据库和表上设置。

1.数据库级设置,分两类:

1.1最小附加日志(minimal supplemental logging):

DATA选项启用最小附加日志。启用最小日志可以确保LogMiner(或其他任何基于LogMiner的产品)可以支持行链接、簇表、索引组织表等。

语法如下:

alter database {add|drop} supplemental log data;

1.2标识键日志(identification key logging):

DATA(all,primary key,unique,foreign key) columns选项启用最小日志及列数据日志。在源库日志为变化来源同步其他数据库的情况下,比如逻辑备用数据库,受影响的数据行必须以列数据标识(而不是rowid),必须启用此种附加日志。

语法如下:

alter database {add|drop} supplemental log {data(all,primary key,unique,foreign key) columns};

1.3缺省情况下,Oracle不启用以上任何附加日志。当使用ALL,PRIMARY,UNIQUE或FOREIGN附加日志时最小补全日志默认开启(即检查结果为IMPLICIT)。 在删除所有导致IMPLICIT最小化附加日志的附加日志后,最小化附加日志变为NO。

1.4查询当前设置

SELECT supplemental_log_data_min min,

supplemental_log_data_pk pk,

supplemental_log_data_ui ui,

supplemental_log_data_fk fk,

supplemental_log_data_all allc

FROM v$database;

MIN PK UI FK ALLC

YES NO NO NO NO

2,表级附加日志设置,分两类

2.1,可以通过以下语句设置命名日志组:

语法:

alter table table_name

add supplemental log group group_a(column_a [no log],column_b,...) [always];

NO LOG选项用于指定在日志中排除哪些列。在命名日志组中,至少存在一个无”NO LOG“的定长列。比如,对LONG列使用 no log选项,可以在更改LONG列时,记录其他列的内容(LONG列本身不能存在日志里)。

ALWAYS选项, 在更新时,日志组中的所有列都会记录在日志中。这就是所谓的”无条件“日志组,有时也叫”always log group“。如果不指定该选项,只有在日志组中的任何列被修改时,所有列才会出现在日志中。这就是所谓的”有条件“日志组。

说明:同一列可以在多个日志组中存在,但日志中只记录一次;同一列在“无条件”与“有条件”日志组中存在时,该列将“无条件”记录。

2.2,可以通过以下语句设置所有列或主键/外键/唯一键组合日志组:

语法:

alter table table_name

add supplemental log data(all,primary key,unique,foreign key) columns;

Oracle将生成无条件或有条件日志组。对于无条件日志组,日志中将记录该日志组中的所有列;对于有条件日志组,只有日志组中的列有变化时,才会记录日志组中的所有列。

如果指定“ALL”列,日志中将包含所有最大大小固定长度的列。这种日志是系统创建的无条件日志组。

如果指定“PRIMARY KEY”列,只要有更新,组成主键的所有列都会记录在日志中。这种日志是系统创建的无条件日志组。Oracle使用如下顺序确定附加记录哪些列:

*组成主键的列(主键有效,或rely且非DISABLED or INITIALLY DEFERRED状态)

*最小的、至少有一个非空列的唯一索引

*记录所有标量列

如果指定“UNIQUE”列,如果任何组成唯一键或位图索引的列被修改,组成该唯一键或位图索引的其他列都会记录在日志中。这种日志是系统创建的有条件日志组。

如果指定“FOREIGN KEY”列,如果任何组成外键的列被修改,组成该外键的其他列都会记录在日志中。这种日志是系统创建的有条件日志组。

2.3表级测试

drop table test;

create table test(x int,y int);

--增加附加日志

alter table test

add supplemental log data(all,primary key,unique,foreign key) columns;

select * from dba_log_groups;

OWNER LOG_GROUP_NAME TABLE_NAME LOG_GROUP_TYPE      ALWAYS      GENERATED

SYS   SYS_C0037555   TEST       ALL COLUMN LOGGING  ALWAYS      GENERATED NAME

SYS   SYS_C0037556   TEST       PRIMARY KEY LOGGING ALWAYS      GENERATED NAME

SYS   SYS_C0037557   TEST       UNIQUE KEY LOGGING  CONDITIONAL GENERATED NAME

SYS   SYS_C0037558   TEST       FOREIGN KEY LOGGING CONDITIONAL GENERATED NAME

select * from dba_log_group_columns;

no row selected

--删除附加日志

alter table test

drop supplemental log data(all,primary key,unique,foreign key) columns;

select * from dba_log_groups;

no row selected

select * from dba_log_group_columns;

no row selected

--增加命名附加日志

alter table test

add supplemental log group group_a(x,y);

select * from dba_log_groups;

OWNER LOG_GROUP_NAME TABLE_NAME LOG_GROUP_TYPE ALWAYS GENERATED

SYS GROUP_A TEST USER LOG GROUP CONDITIONAL USER NAME

select * from dba_log_group_columns;

OWNER LOG_GROUP_NAME TABLE_NAME COLUMN_NAME POSITION LOGGING_PROPERTY

SYS   GROUP_A        TEST       X           1        LOG

SYS   GROUP_A        TEST       Y           2        LOG

alter table test

drop supplemental log group group_a;

oracle表级附加日志视图,Oracle 附加日志(supplemental log)相关推荐

  1. oracle 行级死锁_解决Oracle数据库死锁

    介绍 本文我们尝试总结在多个用户并发情况下,如何识别和解决删除操作期间发生的死锁问题,在开始之前,我们先简单描述一下什么是死锁以及什么东西会导致死锁. 死锁 在任何数据库中发生死锁都是不愉快的,即使是 ...

  2. oracle报错查询动态视图,oracle基表和动态性能视图

    1. 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息.它是只读表和视图的集合,所有者为sys用户.用户自能在数据字典上执行查询操作,而维护和修改是由系统自动完成的. 数据 ...

  3. oracle表分析都分析什么,oracle表分析

    analyze table tablename compute statistics; analyze index indexname compute statistics; 对于使用CBO很有好处, ...

  4. oracle表空间管理图形界面,Oracle表空间管理和优化

    Oracle 表空间管理和优化 1. TOM大神的表查询和授权语句create or replace procedure SHOW_SPACE(P_SEGNAME IN VARCHAR2, Oracl ...

  5. oracle表分析效果怎么看,Oracle 索引与表分析几种方法

    分析表与索引有几种方法,现在列举出来参考下. 1.分析表与索引(analyze 不会重建索引) analyze table tablename compute statistics 等同于 analy ...

  6. oracle范围分区表,Oracle表分区之范围分区-Oracle

    Oracle表分区之范围分区 以表中的一个列或一组列的值的范围分区 语法: [sql] PARTITION BY RANGE (column_name) (    www.2cto.com PARTI ...

  7. oracle表空间默认增长大小,Oracle 用户表空间查看、修改大小、设置自增长等

    分类: Oracle 首先登入某个用户,查看某个用户在哪个表空间下: select username,default_tablespace from user_users; 查看该用户下所有的表: s ...

  8. 查询oracle表空间是否满了,查看Oracle表空间大小的方法

    Oracle表空间大小的查看方法应该是我们都需要掌握的知识,下面就为您详细介绍查看Oracle表空间大小的方法,供您参考学习. 在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. -- ...

  9. oracle表空间大小规划,关于oracle表空间的规划方法

    事实表(如果很大)的一定要分区,而且分区方式和你的业务逻辑相关,每个分区放在一个单独的分区中.我所指的业务逻辑是指比如一个表基本粒度是 天+客户代码+产品代码,如果查询比较偏重于 时间+客户,并且每次 ...

  10. oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...

    87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...

最新文章

  1. 某头条程序员吐槽:前同事银行流水造假,背调也是找同事编的!工资翻了300%!自己老实巴交提供真实银行流水,却惨遭压薪!...
  2. 基于xfire发布web Service简单实例
  3. 不得不知的小程序基本知识
  4. nginx中配置react-router参数跳转
  5. Substring Removal
  6. javaweb学习6——自定义标签
  7. JavaScript学习随记——数组一
  8. php注入教程,php注入点构造代码实例详解
  9. 提取多个字段_【博客翻译】建筑物轮廓线提取以及损坏分类
  10. 【常见Web应用安全问题】---12、URL redirection
  11. 微信怎么at所有人_微信怎么艾特所有人 微信艾特所有人方法
  12. matlab求解拉格朗日第一方程,matlab求解拉格朗日方程肿么编程
  13. 为什么一提到苹果就想到乔布斯,蒂姆·库克的事迹你知道多少?
  14. Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
  15. 关于蓝墨云班课,视频不能拖动,但想快速搞完的解决方法
  16. Java中变量与常量
  17. Java创建对象方式初谈
  18. 英语发音规则---Y字母
  19. 呀!原来这就是前端监控系统
  20. Pycharm连接远程服务器、使用Pycharm运行深度学习项目、Pycharm使用总结以及Pycharm报错和解决办法

热门文章

  1. 逆水寒服务器列表文件,逆水寒9月20日服务器合并结果公告一览 逆水寒9.20合服大全有哪些...
  2. 共享IPFS生态红利丨IPFS合伙人招募大会哈尔滨站圆满落幕
  3. 人人网冷落主业,押注智能硬件
  4. linux vdi,linux – 调整vdi大小不能正常工作
  5. ubuntu上安装微信教程
  6. 戴口罩直播1天卖3亿的雷军,像极了曾经的李嘉诚
  7. 互联网dmz区_idc是什么行业(idc区和dmz区)
  8. 应急响应之windows进程排查
  9. .wim .GHO 类型的镜像文件如何恢复系统
  10. kfold cross_validate Stratified KFold StratifiedKFold 和 StratifiedShuffleSplit 交叉验证方法