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

【译】Oracle从 DataGuard expdp导出数据

原创 smiling 2022-05-12
1683

原文链接:
https://dohdatabase.com/2021/04/22/datapump-export-from-data-guard/

从生产数据库中导出数据可能会很痛苦,原因如下:

你可能想要一个一致的导出,因此设置了数据泵参数FLASHBACK_TIME。这需要很大的undo空间。 如果数据库上有大量活动,那可能会遇到ORA-01555。

您希望使用 Data Pump 中的并行选项快速导出数据。导出得越快,对 ORA-01555 的影响就越小。但是并行使用更多的资源。

如果您有 Active Data Guard,则可以从备库中导出数据。这应该很简单,对吧? 导出毕竟只是读取据…

但 Data Pump 不仅仅是一个简单的导出工具。它是相当高级的,为了支持所有这些功能,它需要创建一个主表,用于协调操作。此外,它使用Advanced Queueing (AQ)来进行进程间的通信。 AQ还需要一个可写数据库。

但是Oracle Database 19c 中引入的DML重定向又如何呢?它可以用来处理少量 DML 吗?不能,因为主表的创建是 DDL,而不是 DML。如果你尝试,你会失败:

$  expdp system@localhost:1521/pdb1 schemas=SH directory=mydir

Export: Release 19.0.0.0.0 - Production on Mon Apr 12 18:19:22 2021
Version 19.10.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Password:

Connected to: Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
ORA-31626: job does not exist
ORA-31633: unable to create master table "SYSTEM.SYS_EXPORT_SCHEMA_05"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT", line 1163
ORA-16000: database or pluggable database open for read-only access
ORA-06512: at "SYS.KUPV$FT", line 1056
ORA-06512: at "SYS.KUPV$FT", line 1044

解决方案:

我打开了我的bat 信号,并从我的产品经理 Pieter Van Puymbroeck那里得到了帮助。

他说,使用快照备库。Snapshot Standby是 Enterprise Edition 的一部分,所以如果您有 Data Guard,那么您也有 Snapshot Standby。如果您需要快速回顾一下什么是快照备库,您应该看看这个视频。

首先,我将我的物理备用数据库(CDB19_fra3zt)转换为快照备库:

DGMGRL> convert database 'CDB19_fra3zt' to snapshot standby;

接下来,创建一个可以与 Data Pump 使用的目录对象:

SQL> create directory mydir as '/tmp';

最后,开始导出。请注意,我没有设置FLASHBACK_TIME。从快照备库导出时,数据库上可能没有其他用户,因此无需担心导出的一致性:

$ expdp system schemas=sales directory=mydir

我的数据现在已经导出,是时候将我的快照备库转回物理备据库,适当地保护我宝贵的数据库:

DGMGRL> convert database 'CDB19_fra3zt' to physical standby;

这会危及我的主数据库吗?不会,但…

您的主数据库仍然受到保护,因为日志文件仍然发送到备用数据库,但未应用。如果我需要切换或故障转移会发生什么?

1.将快照备用数据库转换回物理备用数据库
2.这将隐式发出闪回数据库并恢复所做的所有更改
3.然后通过应用所有日志文件赶上主节点
4.最后,完成切换或故障转移

归根结底,这将需要更长的时间!闪回操作非常快,应该在几分钟内完成。毕竟,Data Pump 并没有改变很多。只有主表和一些 AQ 的东西。那么应用日志需要多少时间?这完全取决于应用延迟的大小。

因此,如果您选择这方式,请做好准备,以防万一发生切换或故障转移,备库将需要更长的时间才能开始启用。除非您有两个备库,那样你仍然可以立即准备运行。

GoldenGate:
如果您需要Data Pump导出为GoldenGate执行初始化,那么您可能需要控制正在进行导出的SCN。如果是这样,取消备库上的redo应用,并前滚到所需的SCN:

alter database recover managed standby database cancel;
alter database recover managed standby database until change n;

转换备库为快照备库前:

alter database convert to snapshot standby;

稍后,当你需要在GoldenGate中开始复制时,你可以使用以下选项:

START REPLICAT ATCSN n

结论:

如果您将备库临时转换为快照备库,你可以从 Data Guard 导出。准备好切换或故障转移操作将花费更长的时间。

如果你想了解更多关于Data Pump的信息,你应该查看我们的网络研讨会迁移策略-见解,提示和秘密。

最后,说到数据泵,记得获取数据泵包补丁(bug 32551008),正如Roy在Twitter上提到的。

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

评论