暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

补充日志

原创 yBmZlQzJ 2022-12-20
336

Manager parameters: General

名字 用途

CHARSET Speci fies a multibyte character set for the process to use

instead of the operating system default when reading the

parameter file.| 参数名 | 作用 |
| ---------------- | ------------------------------------------------------------ |
| EXTRACT EINI_1 | 说明这是 EXTRACT 进程,名字是 EINI_1 |
| REPLICAT RINI_1 | 说明这是 REPLICAT 应用进程,名字叫 RINI_1 |
| SETENV | 环境变量,一定要设置和数据库字符集一样,否则可能会乱码 |
| USERID | 数据库 OGG 用户 |
| PASSWORD | 数据库用户 OGG 的密码 |
| RMTHOST | 目标端地址,如果在/etc/hosts 文件里已经设置解析,可以写主机名 |
| MGRPORT | 目标端 MGR 管理进程监听的端口 |
| RMTTASK REPLICAT | 目标端 REPLICAT 应用进程的组和名字 |
| TABLE | 源端要初始化数据的表的名字,编辑好捕获进程 EINI_1 后,还需要在目标端配置 REPLICAT 应用进程,名字要和源端的捕获进程 EINI_1 里面 RMTTASK REPLICAT 参数配置的一样,也就是还需要在目标端配置 RMTTASK REPLICAT RINI_1。 |
| ASSUMETARGETDEFS | 告诉 OGG 目标端和源端需要同步的表的结构完全一致,不需要 OGG 去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用 SOURCEDEFS 参数 |
| DISCARDFILE | 错误信息存放位置及命名规则 |
| MAP | 源端捕获的表的名字 |

https://www.cnblogs.com/chinas/p/7339465.html```
start replicat rora_3,aftercsn 1057865061


# 概念

**补充日志:**主要是针对 UPDATE 命令的,是对重做日志记录中 变更矢量块的补充信息,增加了变更矢量记载的记录量。日志挖掘器(LogMiner)、闪回事务查询、闪回事务等都需要 补充日志的支持。尤其是 日志挖掘器如果发现未启用补充日志,就拒绝服务。也就是说补充日志主要是为UPDATE 命令服务的,补充的目的是高度还原 UPDATE 命令,避免因为update 命令造成的行迁移和行移动,让LogMiner 通过分析重做日志中识别 update 命令 不是 由 insert 和 delete 完成的。如果未启用补充日志,重做日志只将 UPDATE 命令更改的字段的旧值保存在撤销数据块的变更矢量中。而在数据块中的变更矢量中记载被修改后的字段的新值。同行中的未被修改的字段,不会被记载。如果启用了补充日志,重做日志中的撤销数据块的变更矢量中会记录 被修改字段前的值和修改后的值,而且还会记录修改字段的那个条件的值。即变更矢量中会记载:几号数据文件+几号文件中的几号块+第几个字段+修改后的值+修改前的值+“where 条件” 的值。

**行移动:** 指 update 命令执行时时,在索引组织表中有时会导致整行被转移至另一个索引块中。该情况或过程称为行移动。

**行迁移:**如果是在堆栈表中,update 命令导致行太长,在数据块空间不足的情况下会将部分(行头部除外)迁移到另一个数据块中,行头任然保留在原数据块中。

**补充日志分为:数据库级补充日志、 表级补充日志**

其他补充日志都是基于数据库级最小补充日志之上的,如果未启用数据库级最小补充日志,在启用或使用其他补充日志时,会自动启用数据库的最小补充日志(Implicit)。

**数据库级补充日志分为:最小补充日志、标识关键字段补充日志**

最小补充日志:是最基本的一种数据库级补充日志,而 LogMiner 正是依赖最小补充日志工作服务的(即识别 行移动 行迁移)。 
启用最小补充日志命令: ALTER DATABASE ADD Supplemental LOG DATA ; 

关闭最小补充日志命令:ALTER DATABASEDROP SupplementalLOG DATA;

标识关键字段补充日志:分为主键、外键、唯一索引、全体字段 补充日志4种。

**主键补充日志:**

在update 命令的重做记录中添加被修改行的主键字段的旧值,无论是否被修改,都记录。

如果表没有主键,则由长度最小的唯一索引字段代替,若连唯一索引也没有,则记录该行所有字段。 
alter database add supplemental log data (Primary key) columns ; 

**唯一索引补充日志:**

唯一索引主要是为 复合索引(唯一)服务的。只有唯一索引的字段被 update 时,才会记录该字段被修改前的值。

alter database add supplemental log data (unique) columns ; 

**外键补充日志:**

同唯一索引补充日志一样,只有外键字段被 update 时,才会记录被修改前的旧值,即也是为复合外键服务的。

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

**全体字段补充日志:**

顾名思义就所有字段的值不论是否被修改都记录。会导致磁盘快速增长,LGWR进程繁忙。不建议使用。

alter database add supplemental log data (all) columns ; 

这 4 种补充日志可以并行使用,效果累加。

**表级补充日志**分为: 主键、唯一索引、外键、全体字段、用户自定义字段 5种。

前 4 种 同数据库级标识关键字段补充日志效果用法一样。只不过是在特定表上启用补充日志。

1、 alter table tb_name add supplemental log data (primary key) columns ; 
2、alter table tb_name add supplemental log data (unique) columns ; 
3、 alter table tb_name add supplemental log data (foreign key) columns ; 
4、 alter table tb_name add supplemental log data (all) columns ; 
5、 alter table tb_name add supplemental log group group_name (col01,col02,col05,col09) | always ;    

**自定义字段表级补充日志:**

用户可以任意指定哪些字段的旧值需要被补充日志记录。

**有条件日志组:**只要补充日志组中至少一个列被修改(update),那么就要记录所有(日志组)指定列的前镜像(旧值)。

**无条件日志组:**当表被修改时要记录所有(日志组)指定列的前镜像(旧值),无论改变是否对任一(日志组)指定列造成影响。需添加 always 关键字。

# 官方文档说明

**conditional log group**:A [**supplemental log group**](http://docs.oracle.com/cd/E11882_01/server.112/e17069/strms_glossary.htm#CHDJHFHF) that logs the before images of all specified columns only if at least one of the columns in the supplemental log group is modified.

unconditional log group:A [**supplemental log group**](http://docs.oracle.com/cd/E11882_01/server.112/e17069/strms_glossary.htm#CHDJHFHF) that logs the before images of specified columns when the table is changed, regardless of whether the change affected any of the specified columns.



表级补充日志的情况 通过 dba_log_groups 和 dba_log_group_columns 视图查询获得



补充日志不是独立的日志,而是对重做日志变更矢量的补充。LogMiner、闪回事务、闪回事务查询等功能需要开启补充日志才能正常工作。

补充日志可分为两类数据库级别补充日志和表级别补充日志,数据库级别补充日志可分为最小补充日志、主键补充日志、唯一索引补充日志、外键补充日志、全体补充日志6种,表级别补充日志在数据库级别补充日志的基础上增加了一种自定义补充日志,没有最小补充日志。

因为insert会记录所有修改后字段,delete会记录所有修改前字段,所以补全日志只对update产生影响,开启补全日志时共享池中的SQL游标都会失效,他们的影响和功能如下:

|                  | 最小补充日志                                                 | 主键补充日志                                                 | 唯一补充日志                                                 |
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Update操作的影响 | 产生特殊的日志信息,可以识别update命令产生的行迁移和行转换。Logminer和闪回事务查询功能需要最小补全日志支持。打开最小补全日志会使共享池SQL游标失效。 | 无条件补充日志,无论主键是否被修改旧值都会被记录到日志中。没有主键则记录长度最小唯一非空索引,没有非空唯一索引则记录所有字段。依赖最小补全日志,开启主键补充日志自动开启最小补充日志。关闭最小补全日志自动关闭主键补全日志 | 有条件补充日志,当复合唯一索引的其中一个字段被修改时,唯一索引的所有字段旧值都会被记录。唯一补充日志专门为复合唯一索引服务。 |
| 开启/关闭        | 开启/关闭:  alter database add/drop supplemental log data。 | 开启/关闭(数据库级):  alter database add/drop supplemental log data (primary key) columns。  开启/关闭(表级):  alter table T1 add/drop supplemental log data (primary key) columns。 | 开启/关闭(数据库级):  alter database add/drop supplemental log data (unique) columns。  开启/关闭(表级):  alter table T1 add/drop supplemental log data (unique) columns。 |
| 依赖             | 无                                                           | 依赖最小补全日志                                             | 依赖最小补全日志                                             |



|                  | 外键补充日志                                                 | 全体补充日志                                                 | 自定义补充日志(表)                                           |
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Update操作的影响 | 有条件补充日志,当复合外键索引的其中一个字段被修改时,外键索引的所有字段旧值都会被记录。唯一补充日志专为复合外键索引服务。 | 无条件补充日志,表的所有字段旧值都会被记录(除了LOB、LONG类型)。 | 有/无条件补充日志,设置多个字段为日志组,日志组中的任何字段被修改,整个日志组字段的旧值都记录在日志中。 |
| 开启/关闭        | 开启/关闭(数据库级):  alter database add/drop supplemental log data (foreign key) columns。  开启/关闭(表级):  alter table T1 add/drop supplemental log data (foreign key) columns。 | 开启/关闭(数据库级):  alter database add/drop supplemental log data (all) columns。  开启/关闭(表级):  alter table T1 add/drop supplemental log data (all) columns。 | 开启/关闭(表级):  alter table T1 add/drop supplemental log group GROUPNAME(C1,C2,C3) allways。 |
| 依赖             | 依赖最小补全日志                                             | 依赖最小补全日志                                             | 依赖最小补全日志                                             |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论