网站首页 > 技术文章 正文
附加日志(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};
缺省情况下,Oracle不启用以上任何附加日志。当使用ALL,PRIMARY,UNIQUE或FOREIGN附加日志时最小补全日志默认开启(即检查结果为IMPLICIT)。 在删除所有导致IMPLICIT最小化附加日志的附加日志后,最小化附加日志变为NO。
查询当前设置
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;
猜你喜欢
- 2024-11-05 Graylog日志管理 glog日志库
- 2024-11-05 如何定义日志消息的级别?详解日志的5个级别
- 2024-11-05 Metadata(Ordered) Journaling日志文件系统
- 2024-11-05 PostgreSQL WAL日志详解 poster是什么意思中文
- 2024-11-05 运行`sh startup.sh -m standalone`命令后,如何查看启动日志?
- 2024-11-05 ORACLE DG 日志传输的停止与恢复 oracle 12c crsd日志
- 2024-11-05 Oracle 参数 ENABLE_DDL_LOGGING oracle 参数调优
- 2024-11-05 linux定时自动清理日志文件 linux定时自动清理日志文件怎么删除
- 2024-11-05 如何确定重做日志组的个数 日志记录重做和回滚
- 2024-11-05 老王,怎么完整SQL的显示日志 sql 日志查询
你 发表评论:
欢迎- 620℃几个Oracle空值处理函数 oracle处理null值的函数
- 612℃Oracle分析函数之Lag和Lead()使用
- 601℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 597℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 593℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 585℃【数据统计分析】详解Oracle分组函数之CUBE
- 574℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 563℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)