对于有过逻辑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,它跟你想到一块去啦,为了彰显其成果,将这项特性命名为: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
分享到:
相关推荐
2. 设置 Oracle Supplemental Logging,默认情况下。 3. 创建 Logminer 表空间。 4. 编译 Logminer 系统包。 5. 将 Oracle Catalog 复制到 redo logs。 PowerExchange 在调用 Logminer 时,使用 Extracting the ...
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,Oracle官方建议至少启用Minimal Supplemental Logging。此配置可通过`ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;`命令实现,并可通过`SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;`...
要使用Flashback事务,需要满足一定的前提条件,例如,必须启用补充日志(Supplemental Logging),并且可能还需要为数据库设置保留期保障(Undo Retention Guarantee)。 3. Oracle RMAN备份工具:Recovery ...
- **Forcing Logging和Supplemental Logging**:检查并确保数据库启用了Forcing Logging和Supplemental Logging,这对于OGG捕获所有DML操作至关重要。 - **字符集检查**:检查数据库的字符集,确保与目标端兼容,...
包括创建Goldengate用户、开启补充日志模式(supplemental log mode)、归档日志模式(archivelog mode)和强制日志模式(force logging mode)。 5. 配置Goldengate Manager进程:Goldengate Manager是Goldengate...
**补充日志(Supplemental Logging)**是确保Logminer有效工作的一个关键设置。默认情况下,Oracle不会记录某些特定信息,如索引簇、直接路径插入等,因此为了利用Logminer的全部功能,需要启用补充日志。启用数据库...
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 ...
2. 使用 supplemental logging:使用 supplemental logging 功能, GoldenGate 可以记录所有列的变化,从而正确地同步数据。 3. 使用 keycols 参数:在 GoldenGate 的配置文件中添加 keycols 参数,以便指定哪些列是...
SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database; ``` 如果结果显示为`ARCHIVELOG`、`YES` 和 `YES`,则表示归档模式及相关配置已启用。 3. **启用归档模式**: - 关闭数据库:`...
A选项指出需要为主键启用补全日志(Supplemental logging),这样Oracle数据库才能追踪到每个数据块的改变。C选项则涉及到了数据库的撤销保留时间设置(undo retention guarantee),确保在闪回事务时能够获取到足够...
SELECT LOG_MODE, FORCE_LOGGING, SUPPLEMENTAL_LOG_DATA$ FROM V$DATABASE; ``` 通过以上介绍,我们可以看到 Oracle CDC 提供了一种强大的工具来实现实时数据同步,无论是用于本地数据库还是跨数据库实例的数据...
alter database force logging; ``` - 验证是否已经设置为归档模式: ```sql archive log list; ``` #### 2.3 最小化补充日志 - 启用补充日志: ```sql alter database add supplemental log data; ``` - ...
如果最小化的 supplemental logging 启用的话,LogMiner 使用对应数据库实例生成重做日志不会有任何大的性能影响。PWX 仅仅在抽取的时候利用了 LogMiner,使用 LogMiner 访问日志提取变化数据要比直接进行数据库操作...
7. **确认强制日志记录和补充日志**:通过`SELECT force_logging, supplemental_log_data_min, ... FROM v$database`了解强制日志记录状态以及补充日志数据的详细设置。 8. **控制文件信息**:查询`V$CONTROLFILE`...
- `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. 控制文件信息 ...