`
tylgl
  • 浏览: 55986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入认识Oracle Supplemental logging

阅读更多
对于有过逻辑standby,streams搭建体验的朋友,肯定对Supplemental logging不会感到陌生,在一步一步学Dataguard系列笔记中,我曾将其译为附加日志,后来想了想,我觉着附加日志这几个字还是不能完全体现其真实意图,一时半会儿又找不到合适的词儿,算了,不译了,还是坚持以英文相称吧。

Supplemental Logging具体是做什么用的呢?要回答这个问题,我们就必须先搞明白,为什么我们需要Supplemental Logging!

事实上,目前最有可能用到Supplemental Logging的也只有逻辑standby和streams这两项特性(10g以后如果希望logminer能够分析出所有操作,建议也要启用Supplemental Logging),我们都知道,这两项特性的数据应用都属于逻辑应用,类似source database执行update语句之类,结果也要反映到target database,如何准确判断出source端修改的列,在target端中应该更新到哪条记录上呢?根据rowid?显然不靠谱啊,都说了是逻辑的,块的位置完全不一样,rowid已无用武之地~~~你想说,能否通过表中的唯一键?在更新表中记录时,将主键或唯一键做为附加的信息,与被修改的列一起存入redolog中,对于没有主键唯一键的表,则将表中所有列统统组合做为附加信息存入redolog,这样target端在分析redolog时,就知道该更新表中的哪些记录了!

哎呀,说到这里我不得不郑重表扬..............oracle,它跟你想到一块去啦,为了彰显其成果,Oracle将这项特性命名为:Supplemental Logging。当然啦,为了这项特性能够工作的更好,oracle深化了你的想法,并将其设计的更加灵活多样。

数据库启用了Supplemental Logging之后,对于修改操作,oracle就会同时附加一些能够唯一标识修改记录的列到redolog中,对于拥有主键或唯一键的表,这个操作最简单,只需要附加主键或唯一键即可,这样生成的redo也是最小的,当然这只是一个理想状态,现实情况下某些表可能无法创建主键/唯一键,或者历史原因确无主键/唯一键,这种情况下oracle会将所有列(提示,非log,long之类大字段类型的列)都做为附加信息记录到redo中,这种情况下redo有可能增长迅速,并且在target端应用时也会受到一些影响。因此oracle建议最好为每个涉及到复制的表都创建主键或者唯一键。

对于选择的列和那些用于精确定位的附加列的组合,oracle也对其做了定义叫做supplemental log group。随后oracle又对supplemental log group做了分类,目的是更精确的设置redolog中都记录些什么信息,分如下两类:
a.Unconditional Supplemental Log Groups:无条件记录指定列的前映像,而不管发生修改操作的是不是指定列。因此它还有个外号,叫"老记录日志组"。
b.Conditional Supplemental Log Groups:只有至少一个指定列发生修改操作时被触发,并记录下修改列的前映像。

Supplemental Logging可以在数据库级设置,也可以精确到表级设置,对于数据库级有两种类型:minimal logging和identification key logging,其主要区别就在于写入redolog中的数据详尽程度不同。

以数据库级为例,如何启用Supplemental Logging呢?试试这个命令:
alter database add supplemental log data;
注:这里启用minimal logging,一般做到这一步,logminer就拥有足够的信息分析所有所做过的操作。

如果想禁用Supplemental Logging,drop即可:
alter database drop supplemental log data;

如何查询当前数据库是否启用了Supplemental Logging呢?则可以试试这条语句:
select supplemental_log_data_min,
       supplemental_log_data_pk,
       supplemental_log_data_ui,
       supplemental_log_data_fk,
       supplemental_log_data_all
  from v$database;
注:supp....data_min/pk/ui等等分别表示不同附加列级别。

正如前面多次提到的,更多应用Supplemental Logging的场合是逻辑standby和streams,因此,如果你希望了解更多的信息,不妨多去测试测试这两项特性吧。
分享到:
评论

相关推荐

    OCP认证考试2014年9月底-053

    1Z0-053 Oracle Database 11g: Administration II QUESTION 1 What are the prerequisites for performing flashback transactions? (Choose all that apply) A. Supplemental log must be enabled B. Supplemental...

    logminer资料

    为了有效使用Logminer,Oracle官方建议至少启用Minimal Supplemental Logging。此配置可通过`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;`命令实现,并可通过`SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;`...

    oracle ocp 053精选200题

    要使用Flashback事务,需要满足一定的前提条件,例如,必须启用补充日志(Supplemental Logging),并且可能还需要为数据库设置保留期保障(Undo Retention Guarantee)。 3. Oracle RMAN备份工具:Recovery ...

    OGG实现ORACLE数据到大数据平台KFAKF的实时同步到KUDU数据库

    - **Forcing Logging和Supplemental Logging**:检查并确保数据库启用了Forcing Logging和Supplemental Logging,这对于OGG捕获所有DML操作至关重要。 - **字符集检查**:检查数据库的字符集,确保与目标端兼容,...

    Oracle Logminer

    **补充日志(Supplemental Logging)**是确保Logminer有效工作的一个关键设置。默认情况下,Oracle不会记录某些特定信息,如索引簇、直接路径插入等,因此为了利用Logminer的全部功能,需要启用补充日志。启用数据库...

    informatica powerexchange原理

    2. 设置 Oracle Supplemental Logging,默认情况下。 3. 创建 Logminer 表空间。 4. 编译 Logminer 系统包。 5. 将 Oracle Catalog 复制到 redo logs。 PowerExchange 在调用 Logminer 时,使用 Extracting the ...

    oracle11安装配置向导手册(Oracle Goldengate 11g Install and Setup Guide)

    包括创建Goldengate用户、开启补充日志模式(supplemental log mode)、归档日志模式(archivelog mode)和强制日志模式(force logging mode)。 5. 配置Goldengate Manager进程:Goldengate Manager是Goldengate...

    gg-oracle-to-mysql-配置文档fyp170321.docx

    CREATE TABLESPACE TBS_OGG DATAFILE '/home/oracle/oracle/oradata/testdb/tbs_ogg.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING; CREATE USER gg IDENTIFIED BY oracle DEFAULT TABLESPACE ...

    OGG 实现oracle11g 主从备份

    SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database; ``` 如果结果显示为`ARCHIVELOG`、`YES` 和 `YES`,则表示归档模式及相关配置已启用。 3. **启用归档模式**: - 关闭数据库:`...

    goldengate同步无主键无唯一索引表的问题以及解决方案.docx

    2. 使用 supplemental logging:使用 supplemental logging 功能, GoldenGate 可以记录所有列的变化,从而正确地同步数据。 3. 使用 keycols 参数:在 GoldenGate 的配置文件中添加 keycols 参数,以便指定哪些列是...

    oracle cdc

    SELECT LOG_MODE, FORCE_LOGGING, SUPPLEMENTAL_LOG_DATA$ FROM V$DATABASE; ``` 通过以上介绍,我们可以看到 Oracle CDC 提供了一种强大的工具来实现实时数据同步,无论是用于本地数据库还是跨数据库实例的数据...

    Oracle 11g OCP 053

    A选项指出需要为主键启用补全日志(Supplemental logging),这样Oracle数据库才能追踪到每个数据块的改变。C选项则涉及到了数据库的撤销保留时间设置(undo retention guarantee),确保在闪回事务时能够获取到足够...

    Streams表级别复制配置(oracle9i,10g).pdf

    [Supplemental Logging Configuration](http://download.oracle.com/docs/cd/B19306_01/server.102/b14228/man_gen_rep.htm) 通过以上步骤,可以成功地在Oracle数据库中配置一个简单的Streams表级别的复制环境。此...

    ORACLE EBS全新环境了解步骤

    - `SELECT force_logging, supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk, supplemental_log_data_all FROM v$database;` #### 8. 控制文件信息 ...

    goldengate+oracle部署文档

    alter database force logging; ``` - 验证是否已经设置为归档模式: ```sql archive log list; ``` #### 2.3 最小化补充日志 - 启用补充日志: ```sql alter database add supplemental log data; ``` - ...

    oracle环境查询

    7. **确认强制日志记录和补充日志**:通过`SELECT force_logging, supplemental_log_data_min, ... FROM v$database`了解强制日志记录状态以及补充日志数据的详细设置。 8. **控制文件信息**:查询`V$CONTROLFILE`...

Global site tag (gtag.js) - Google Analytics