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 IMPLICIT

The 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的设置问题的更多相关文章

  1. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  2. 【.net 深呼吸】设置序列化中的最大数据量

    欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. Visual Studio Code 代理设置

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...

  5. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  6. Linux scp 设置nohup后台运行

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  7. 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置

    网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...

  8. PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

    在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能: 主键:pk_TableName 外键:fk_TableName_ForeignKeyC ...

  9. 实现代理设置proxy

    用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...

  10. Android GridView 通过seletor 设置状态和默认状态

    Android中可以通过selector控制GridView Item 的状态,而省去使用代码控制 GridView View Selector Xml文件 <?xml version=&quo ...

随机推荐

  1. App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用

    企业上云是近些年的发展热潮,越来越多的企业把自己的应用部署在各个云厂商中,利用云计算带来的弹性.灵活.安全.低成本等特性,轻松帮助企业搭建自己的应用. 随着企业规模和业务形态的发展,一个应用需要组合多 ...

  2. sprint-boot 存储图片的base64

    需求:将前端上传的图片转换成base64码发送到后端存储到数据库中(oracle或者mysql) 问题:当图片大小比较大(大概是超过1M)后端接收到的数据就会有错误. 解决方法:  sprint-bo ...

  3. map三层循环遍历,操作数据

    let tempArr = this.oldCityList.map(item => { return { value: item.code, text: item.name, type: it ...

  4. 如何一键私有化部署 Laf ?

    太长不看:Laf 上架了 Sealos 的模板市场,通过 Laf 应用模板即可一键部署! Laf 是一个完全开源的项目,除了使用公有云之外,还有大量的用户选择私有化部署 Laf.然而,私有化部署通常伴 ...

  5. 深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制

    转载请注明出处:https://www.cnblogs.com/zjdxr-up/p/15026824.html 目录: 6.1.Kafka核心总控制器Controller 6.2.Controlle ...

  6. Laravel - 部署到万网虚拟主机 (2020年最新版本)

    一,在根目录下创建一个local文件夹,把网站根目录下除了public文件夹以外所有文件及文件夹剪切到local文件夹中然后把public文件夹下的所有文件剪切到网站根目录,接着删除public文件夹 ...

  7. Laravel - except() 函数

         /**      *  用户添加      * @param 接收的表单数据  (name,password,id)      * @return 返回添加是否成功      */      ...

  8. 使用requests爬虫遇到的一个奇葩的问题:UnicodeEncodeError: 'latin-1' codec can't encode character

    每一位成功的程序员,背后也许都站着无数的秃头的男人--为其提供各种开发工具&代码库,当然也包括-- 各种玄学bug-- 玄学的开端 最近在用Python做一个爬虫项目的时候遇到一个很奇怪的问题 ...

  9. Java中有哪些方式能实现锁某个变量

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 在Java中,有几种方式可以实现对某个变量的锁定 ...

  10. [转帖]使用Rclone实现minio数据的迁移

    使用Rclone实现minio数据的迁移 一.准备 1.1 使用工具 rclone:开源的对象存储在线迁移工具,用于文件和目录的同步,支持阿里云的oss.minio .亚马逊S3 等. 1.2 注意事 ...