goldengate单独一个表数据不同步解决方法
2017-06-28 18:24
381 查看
补充日志只要是针对UPDATE命令的,是对重做日志记录中变更矢量块的补充信息,增加了变更矢量记载的记录量。日志挖掘器(LogMiner)、闪回事务查询、闪回事务等都需要补充日志的支持。也就是说补充日志主要是为UPDATE命令服务的,补充的目的是高度还原UPDATE命令,避免因为update命令造成的行迁移和行移动,让LogMiner 通过分析重做日志中识别update 命令不是由insert和delete完的。
数据库级补充日志分为:最小补充日志、标识关键字段补充日志
(1).最小补充日志:是最基本的一种数据库级补充日志,而LogMiner正是依赖最小补充日志工作服务的(即识别 行移动 行迁移)。
启用最小补充日志命令:
alter database add supplemental log data;
关闭最小补充日志命令:
alter database drop supplemental log data;
(2).标识关键字段补充日志:分为主键、外键、唯一索引、全体字段补充日志 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;
表级补充日志:
分为: 主键、唯一索引、外键、全体字段、用户自定义字段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;
1.查看数据库是否开启补充日志
SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; --开启了补充日志
SUPPLEME
--------
YES
SQL> SELECT supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui,
supplemental_log_data_fk,supplemental_log_data_all FROM v$database;
SUPPLEME SUP SUP SUP SUP --只开启了主键的补充日志
-------- --- --- --- ---
YES NO NO NO NO
SQL>
2.查看表是否添加到补充日志中
SQL> select * from dba_log_groups where table_name='abc'; --查看表是否有补充日志
no rows selected
SQL> select * from dba_log_group_columns where table_name='abc'; --查看补充日志的字段
no rows selected
SQL>
3.解决方法(1)
GGSCI (iZ23jtzbnliZ) 35> dblogin userid ggs,password system --EXTRACT进程里的用户名和密码
Successfully logged into database.
GGSCI (iZ23jtzbnliZ) 36> add TRANDATA tong.abc --添加补充日志(tong是数据库,abc是表名)
Logging of supplemental redo data enabled for table UPCENTER.NEWS_FLASH_TAB_CLAS_RELA.
GGSCI (iZ23jtzbnliZ) 37>
3.解决方法(2)
SQL> alter table abc add supplemental log data(all,primary key,unique,foreign key) columns;
SQL>
数据库级补充日志分为:最小补充日志、标识关键字段补充日志
(1).最小补充日志:是最基本的一种数据库级补充日志,而LogMiner正是依赖最小补充日志工作服务的(即识别 行移动 行迁移)。
启用最小补充日志命令:
alter database add supplemental log data;
关闭最小补充日志命令:
alter database drop supplemental log data;
(2).标识关键字段补充日志:分为主键、外键、唯一索引、全体字段补充日志 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;
表级补充日志:
分为: 主键、唯一索引、外键、全体字段、用户自定义字段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;
1.查看数据库是否开启补充日志
SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; --开启了补充日志
SUPPLEME
--------
YES
SQL> SELECT supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui,
supplemental_log_data_fk,supplemental_log_data_all FROM v$database;
SUPPLEME SUP SUP SUP SUP --只开启了主键的补充日志
-------- --- --- --- ---
YES NO NO NO NO
SQL>
2.查看表是否添加到补充日志中
SQL> select * from dba_log_groups where table_name='abc'; --查看表是否有补充日志
no rows selected
SQL> select * from dba_log_group_columns where table_name='abc'; --查看补充日志的字段
no rows selected
SQL>
3.解决方法(1)
GGSCI (iZ23jtzbnliZ) 35> dblogin userid ggs,password system --EXTRACT进程里的用户名和密码
Successfully logged into database.
GGSCI (iZ23jtzbnliZ) 36> add TRANDATA tong.abc --添加补充日志(tong是数据库,abc是表名)
Logging of supplemental redo data enabled for table UPCENTER.NEWS_FLASH_TAB_CLAS_RELA.
GGSCI (iZ23jtzbnliZ) 37>
3.解决方法(2)
SQL> alter table abc add supplemental log data(all,primary key,unique,foreign key) columns;
SQL>
相关文章推荐
- activity开启一个启动模式为SingleTask的activity,intent传递数据为空的解决方法
- 打印同样一个数据,竟然出现不同的结果,解决方法。
- form 表的post提交,其中一个超多数据的input标签在后台获取数据被截断的解决方法
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
- 怎样将datatable中的一列的数据放入一个数组解决方法
- GoldenGate 12.3 MA架构介绍系列(2) - 数据同步测试
- MySQL(Navicat)运行.sql文件时报错:[Err] 2006 - MySQL server has gone away 的解决方法 背景: 今天导入一个数据量很大的.sql文件时,
- SQL Server导入导出数据时最常见的一个错误解决方法
- 在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题
- 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫 -- 解决方法【转】
- 利用Sqoop从oracle同步数据到HDFS出现The Network Adapter could not establish the connection的解决方法
- 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫 -- 解决方法
- js赋值改变后原来的东西也改变了,影响了好几个其它使用同一个源数据的原因以及解决方法
- 提示错误“没有可访问的表。请确保在 Global.asax 中注册了至少一个数据模型.. ”解决方法
- 用自制数据训练修改过的基于caffe的fcn网络时loss在一个较大值震荡的解决方法
- mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
- 一个简单的读写同步的空间解决方法
- 解决gradle长时间同步不了的一个怪方法
- 生产者与消费者模型(数据错位解决办法:同步方法)
- ORACLE GOLDEN GATE oracle同步数据至kafka