关于SUPPLEMENTAL_LOG_DATA_MIN的设置问题
Oracle数据库开启附加日志,用于Logminer或基于Logminer的一些操作。
客户咨询关于开启附加日志,SUPPLEMENTAL_LOG_DATA_MIN显示为啥是implicit,如何改成yes呢?
因为要同步数据给某国产库,有对应工具要求开启附加日志,可以简单理解为类似ogg的同步工具吧,调试时有报错,国产厂商认为是implicit不为yes导致。
首先查阅Oracle官方文档,看下SUPPLEMENTAL_LOG_DATA_MIN这个字段的含义:
Ensures that LogMiner (and any products building on LogMiner technology) will have sufficient information to support chained rows and various storage arrangements such as
cluster tables:NO - None of the database-wide supplemental logging directives are enabled.
In a CDB, a value of NO means that minimal supplemental logging is not enabled in all of the PDBs in the CDB.
IMPLICIT - Minimal supplemental logging is enabled because all or a combination of primary key, unique key, and foreign key supplemental logging is enabled
YES - Minimal supplemental logging is enabled through an ALTER DATABASE ADD SUPPLEMENTAL LOG DATA statement.
In a CDB, a value of YES means that minimal supplemental logging is enabled in all of the PDBs in the CDB.
See Also: Oracle Database SQL Language Reference for additional information about the ALTER DATABASE ADD SUPPLEMENTAL LOG DATA statement
可以清楚的看到IMPLICIT的意思也是启用了,只不过是通过启用具体主键、唯一键、外键中的一个或多个实现的,所以implicit意思也就是含蓄、隐含的算设置了,有什么区别/影响后面再说。
现在我们先查询下当前这些设置吧:
select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL from v$database;
1. 数据库默认配置
如果没有设置任何附加日志,结果应该都是NO:
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
-------- --- --- --- ---
NO NO NO NO NO
2. 检查客户的设置情况
客户这里的情况是:
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
-------- --- --- --- ---
IMPLICIT YES NO NO YES
3. 模拟客户的设置
因此推断客户应该之前设置了:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(all) columns;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(primary key) columns;
测试环境设置这两项后,结果和客户显示一致。
4. 设置SUPPLEMENTAL_LOG_DATA_MIN
那么如何将SUPPLEMENTAL_LOG_DATA_MIN也设置为yes呢?
上面文档也说了,可以执行:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
设置,测试环境执行后设置成功:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Database altered.
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 YES NO NO YES
但有意思的是,客户去自己环境这样执行,显示成功,再次查询还是没有设置成功,怀疑是OGG运行有影响,去另外节点执行就成功修改了。
最后,先不管客户用的这类小众的同步工具是怎样,因为也不普遍,我们就看看OGG是否也有这种情况,查了下MOS,还真有因为IMPLICIT的设置ogg有问题的这类情况:
- Does OGG Support IMPLICIT db level Supplemental Logging (Doc ID 2039204.1)
文章中提到,
GOAL
Clarify and confirm for the user if OGG supports implicit db level supplemental logging.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
IMPLICIT NO NO NO YES
SOLUTION
ADD TRANDATA does not work if v$database.supplemental_log_data_min is IMPLICITThe reason is, if you drop the database-wide primary key logging, the minimal setting will revert to NO, and hence Extract's ALWAYS log group will not have any effect
GG requires v$database.supplemental_log_data_min to say YES
Users can issue the following statement to get the setting of IMPLICIT to change to YES
SQL> alter database add supplemental log data;
解决方案中同样也是设置了supplemental_log_data_min为yes解决。
关于SUPPLEMENTAL_LOG_DATA_MIN的设置问题的更多相关文章
- Linux命令总结大全,包含所有linux命令
使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...
- 【.net 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...
- Linux scp 设置nohup后台运行
Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)
在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能: 主键:pk_TableName 外键:fk_TableName_ForeignKeyC ...
- 实现代理设置proxy
用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...
- Android GridView 通过seletor 设置状态和默认状态
Android中可以通过selector控制GridView Item 的状态,而省去使用代码控制 GridView View Selector Xml文件 <?xml version=&quo ...
随机推荐
- 配置项目按eslint规范格式化代码
配置项⽬按eslint规范格式化代码 vscode下载 ESlint,Prettier,Vetur 插件 打开vscode的设置 添加如图配置(window系统,mac系统配置稍有不同) 可⾃定义es ...
- 如何使用chatgpt编写代码
功能列举 回答编程问题 我想让你充当 Stackoverflow 的帖子.我将提出与编程有关的问题,你将回答答案是什么.我希望你只回答给定的答案,在没有足够的细节时写出解释.当我需要用英语告诉你一些事 ...
- Canal使用和安装总结
转载请注明出处: 1.定义 Canal 组件是一个基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,支持将增量数据投递到下游消费者(如 Kafka.RocketMQ 等)或者存储(如 El ...
- Linux系列之文件和目录权限
前言 我们知道,root用户基本上可以在系统中做任何事.其他用户有更多的限制,并且通常被收集到组中.你把有类似需求的用户放入一个被授予相关权限的组,每个成员都继承组的权限. 让我们看一下: 查看权限( ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.25)
来给大家伙送福利了! 一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘, ...
- [转帖]Web技术(六):QUIC 是如何解决TCP 性能瓶颈的?
文章目录 一.QUIC 如何解决TCP的队头阻塞问题? 1.1 TCP 为何会有队头阻塞问题 1.2 QUIC 如何解决队头阻塞问题 1.3 QUIC 没有队头阻塞的多路复用 二.QUIC 如何优化T ...
- [转帖] 如何kill一条TCP连接?
https://www.cnblogs.com/codelogs/p/16838850.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 如果你的程序写 ...
- [转帖]Kibana查询语言(KQL)
时间 2020-12-27 标签 html java 数据库 ide ui 翻译 日志 htm 对象 blog 栏目 HTML 繁體版 原文 https://www.cnblogs.com/-b ...
- [转帖]Ubuntu Server安装图形界面
最早接触到的Linux系统是Ubuntu 10.04,当时在自己的一台Win7笔记本电脑上安装的Win/Ubuntu双系统,Ubuntu简洁的操作界面给我留下了深刻的印象. 后来开始做一些服务器开发, ...
- 容器方式运行Mysql8.0.26的方法
容器化运行Mysql8.0.26测试环境的方法 1. 前言 之前为了好处理,都是二进制包的方式安装mysql,但是有时候需要下载和安装也比较费时费力, 今天中午在弄Oracle RAC时想着以后能够容 ...