- 浏览: 56840 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
对于有过逻辑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,因此,如果你希望了解更多的信息,不妨多去测试测试这两项特性吧。
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,因此,如果你希望了解更多的信息,不妨多去测试测试这两项特性吧。
发表评论
-
oracle 命令
2009-02-05 20:30 1011一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1346在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 890优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1572Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 1009创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 736移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1172--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 13331.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 847通过以下方法可以把Autotrace的权限授予Everyone ... -
user和schema的区别:
2009-01-21 11:30 1053说穿了其实user是控制权限的,而schema是个容器,非所有 ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2102今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2633在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2273说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11931.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2332概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1529--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 928分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1764在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 1000深入分析Oracle数据库日志文件 作者:程永新 发文时间: ... -
oracle 介绍
2008-09-20 21:04 1160第二章 架构 ORACLE架构由3部分组成: 文件, 内存结 ...
相关推荐
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操作至关重要。 - **字符集检查**:检查数据库的字符集,确保与目标端兼容,...
**补充日志(Supplemental Logging)**是确保Logminer有效工作的一个关键设置。默认情况下,Oracle不会记录某些特定信息,如索引簇、直接路径插入等,因此为了利用Logminer的全部功能,需要启用补充日志。启用数据库...
2. 设置 Oracle Supplemental Logging,默认情况下。 3. 创建 Logminer 表空间。 4. 编译 Logminer 系统包。 5. 将 Oracle Catalog 复制到 redo logs。 PowerExchange 在调用 Logminer 时,使用 Extracting the ...
包括创建Goldengate用户、开启补充日志模式(supplemental log mode)、归档日志模式(archivelog mode)和强制日志模式(force logging mode)。 5. 配置Goldengate Manager进程:Goldengate Manager是Goldengate...
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 ...
- **目的**:为了能够捕获所有 DML 操作,需要开启 minimal supplemental logging 功能。 - **步骤**: - 使用 `alter database add supplemental log data;` 命令开启该功能。 - 确认日志已开启,可通过执行 `...
SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database; ``` 如果结果显示为`ARCHIVELOG`、`YES` 和 `YES`,则表示归档模式及相关配置已启用。 3. **启用归档模式**: - 关闭数据库:`...
2. 使用 supplemental logging:使用 supplemental logging 功能, GoldenGate 可以记录所有列的变化,从而正确地同步数据。 3. 使用 keycols 参数:在 GoldenGate 的配置文件中添加 keycols 参数,以便指定哪些列是...
SELECT LOG_MODE, FORCE_LOGGING, SUPPLEMENTAL_LOG_DATA$ FROM V$DATABASE; ``` 通过以上介绍,我们可以看到 Oracle CDC 提供了一种强大的工具来实现实时数据同步,无论是用于本地数据库还是跨数据库实例的数据...
A选项指出需要为主键启用补全日志(Supplemental logging),这样Oracle数据库才能追踪到每个数据块的改变。C选项则涉及到了数据库的撤销保留时间设置(undo retention guarantee),确保在闪回事务时能够获取到足够...
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. 控制文件信息 ...
Oracle GoldenGate 是一款...总之,Oracle GoldenGate的安装配置是一个涉及多个环节的过程,需要对Oracle数据库和系统管理有深入理解。正确配置能确保数据复制的高效、稳定和安全,满足业务连续性和灾难恢复的需求。
alter database force logging; ``` - 验证是否已经设置为归档模式: ```sql archive log list; ``` #### 2.3 最小化补充日志 - 启用补充日志: ```sql alter database add supplemental log data; ``` - ...