暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 数据移动操作中的所有步骤是否都需要进入已记录的表,或者只要记录了最终表,就可以对某些步骤进行记录?

askTom 2017-09-14
86

问题描述

我找不到答案。

在启用ARCHIVELOG模式 (不强制日志记录!) 的数据库中,通常的做法是通过SQLLDR直接补丁将数据加载到未记录的暂存表中。

ETL过程的最后阶段是将一些数据插入到正常的,已记录的表中。

现在,鉴于最终目标表已记录,如果我将该DML提交到该表中,它将在故障转移的情况下恢复 (Dataguard在此处存在设置了零数据丢失)

我问是因为这里的一些答案表明
“如果ETL流程的任何部分都通过NOLOGGING表进行,则数据可能会丢失。”

这类似于说 “ETL管道中的所有步骤都需要通过记录的表”。

我的观点是,只要记录到目标表中的 “最终” 插入,数据就可以恢复。
(当然,接受任何interrim nologed表都会在故障转移中丢失其数据的风险)。

哪种观点是正确的?

专家解答

日志记录就像一个关于你开车时如何到达某个地方的说明列表。

如果我从珀斯开车去悉尼,说明可能是:

-从珀斯走1号高速公路到卡尔古利
-走17号高速公路从卡尔古利到阿德莱德
-从阿德莱德走22号高速公路到堪培拉
-从堪培拉走32号高速公路到悉尼

现在假设我已经到达悉尼,但是我没有记录一些说明,所以它们看起来像:

-从珀斯走1号高速公路到卡尔古利
-...
-...
-从堪培拉走32号高速公路到悉尼

是的,我在悉尼很成功,如果我现在备份,我 * 知道 * 我在悉尼。但是,假设我的数据库崩溃了,到达悉尼后我 * 没有 * 进行备份。将数据库还原到上次备份使它看起来像我仍在珀斯。然后恢复必须重放指令。我只会去Kargoorlie... 那我有麻烦了-我失去了指示。

因此,只要 * 完成后,您就可以备份受影响的数据文件,例如

SQL> create table t nologging as select * from dba_objects;

Table created.

SQL> select file#, UNRECOVERABLE_CHANGE# from v$datafile;

     FILE# UNRECOVERABLE_CHANGE#
---------- ---------------------
         1                     0
         3                     0
         5                     0
         7            1.4816E+13
复制


文件 #7是我的用户表空间数据文件。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论