千家信息网

oracle附加日志(supplemental log)

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、GoldenGate、LogMiner。可以在数据
千家信息网最后更新 2025年02月01日oracle附加日志(supplemental log)

附加日志(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;

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;

select * from dba_log_group_columns;

-删除附加日志

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

select * from dba_log_groups;

select * from dba_log_group_columns;

-增加命名附加日志
alter table test
add supplemental log group group_a(x,y);

select * from dba_log_groups;

select * from dba_log_group_columns;

alter table test
drop supplemental log group group_a;


日志 附加 最小 数据 条件 数据库 系统 索引 语法 中将 位图 只有 可以通过 就是 情况 标识 语句 逻辑 变化 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 古精灵网络技术有限公司 腾讯云轻量服务器多少钱 西安 数据库审计企业 网站远程连接数据库 华为多个应用软件无法连接服务器 数据库心跳网络 江阴智能软件开发怎么样 软件开发包括几个过程 连云港专业联想服务器供货厂 钱海网络技术有限公司怎么样 网络安全系统维护是啥工作 回答网络安全问题的公众号 电脑pubg服务器正在维修中 军职网络技术 csgo社区服务器列表看不见 生命周期和个别软件开发模型 将数据库表格导成csv格式 瑞安有软件开发公司吗 网络安全大队工作方案 闵行区音频led大屏服务器 数据库的二进制怎么读取文件 软件开发国家支持政策 学生对软件开发老师看法 台州本地软件开发信息推荐 公安局网络技术手段 net平台的软件开发是什么 初中关于网络安全的政治题 疫情期间网络安全应急预案 软件开发组主管多少钱一年 江阴美德软件开发公司怎么样
0