设为首页 收藏本站
查看: 1663|回复: 0

[经验分享] oracle 附加日志

[复制链接]

尚未签到

发表于 2018-9-13 11:28:11 | 显示全部楼层 |阅读模式
  附加日志(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;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-577897-1-1.html 上篇帖子: PL/SQL连接不上本地ORACLE数据库 下篇帖子: oracle escape-pl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表