Oracle-suppelmental log

时间:2021-08-26 13:52:02   收藏:0   阅读:34

概述

附加日志(suppelmental log)是指在数据库的redo记录中添加额外的信息,以支持基于日志类工具正常工作,如:logminer, streams, goldengate, logical standby。

附加日志主要针对update命令,避免因update命令造成行迁移和行移动。

按设置对象分类

数据库级设置

最小附加日志(minimal supplemental logging)
-- 语法:
alter database {add|drop} supplemental log data;

启用或禁用最小附加日志

标识键日志(identification key logging)

标识键有如下类型:all, primary key, unique key, foreign key

标识键日志是对指定columns启用或关闭最小日志及列数据日志。当开启 all, primary, unique和foreign 附加日志时,若最小补充日志尚未启用,则oracle会隐式开启最小补充日志,其状态为IMPLICIT。

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

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

技术分享图片

查看当前设置
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;

如果某一列的值为"YES",表明开启了对应的附加日志。如果开启标识键日志时,对应列的值为"YES",同时

supplemental_log_data_min列的值为"IMPLICIT"

注意事项

表级附加日志设置

设置命名日志组
alter table table_name 
{add|drop} supplemental log group group_a(column_a [no log],column_b,...) [always];
设置所有列或主键/外键/唯一键组合日志组
alter table table_name 
{add|drop} supplemental log data(all,primary key,unique,foreign key) columns;
查看日志组信息
set lines 168 pages 99
col owner for a16
col log_group_name for a16
col table_name for a16
col log_group_type for a16
col always for a8
col generated for a12
col column_name for a32
select lg.owner, lg.log_group_name, lg.table_name, lg.log_group_type, lg.always, lg.generated, lgcs.column_name, lgcs.position, lgcs.logging_property 
  from dba_log_groups lg, dba_log_group_columns lgcs
where lg.LOG_GROUP_NAME = lgcs.LOG_GROUP_NAME(+)
and lg.TABLE_NAME = lgcs.TABLE_NAME(+)
and lg.owner = lgcs.owner
;

技术分享图片

测试
组合日志组
drop table test;
create table test(x int,y int);
 
--增加附加日志
alter table test
add supplemental log data(all,primary key,unique,foreign key) columns;

--删除附加日志
alter table test
drop supplemental log data(all,primary key,unique,foreign key) columns;
命名日志组
--增加命名附加日志
alter table test
add supplemental log group group_a(x,y);

--删除命名附加日志
alter table test
drop supplemental log group group_a;

原文:https://www.cnblogs.com/binliubiao/p/15188993.html

评论(0)
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!