原文链接:
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
米乐app官网下载 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
m6米乐安卓版下载的解决方案:
我打开了我的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上提到的。