问题描述
你好,
希望你做得很好。
我们正在进行数据库迁移练习,其中我们的源Oracle数据库位于11g (11.2.0)上,目标Oracle数据库是12c (12.1.0)。
我们正在使用expdp/impdp在两个数据库之间导出和导入数据。有一些表,其中有LOB数据,大小超过450 GB。
其中一个表上的expdp运行了12个小时以上,最终失败,并出现快照太旧的错误。
我们想知道有没有一种有效的方法将LOB数据从源迁移到目标数据库?
据我所知,我们的应用程序不能有超过5小时的停机时间,因此我们希望尽可能地优化数据迁移活动。
以下是我能够通过在较低的环境 (表大小较小)和性能环境 (表大小模仿生产环境)上进行一些测试运行来收集的一些其他详细信息。
1.源数据库版本:-11g (11.2.0.2)。
2.目标数据库版本:-12c (12.1.0.2)
3.两个数据库上的字符集不同
a.源数据库字符集-WE8ISO8859P1
b.目标数据库字符集-AL32UTF8
4.由于数据库具有不同的字符集,因此我们不能使用可传输表空间,因为要使用它们,两个数据库都应在同一字符集上。(
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces013.htm#ADMIN11396
)
5.在表大小较小的较低环境中,具有大小为18 GB的lob数据且压缩 = 全部设置在par文件中的表对于expdp命令花费了31分钟。
6.在同一数据库中没有压缩参数的情况下导出的同一表需要3分钟的expdp命令。
7.具有LOB数据的表不分区他们确实有历史数据,可以在实际上线之前预先迁移。
8.旧数据库所在的框具有125 GB的RAM,但是最大SGA设置为15 GB。
查询:-
1.压缩参数实际上会使LOB数据的expdp过程变慢吗?
2. We are thinking of exporting and importing (expdp/impdp)data in phases before hand since it is all historic and does not change using the query parameter in par file. Is this a good option? Since the table has close to 75 million rows we dont want the query parameter itself to add on to the expdp slowness. Any thoughts on any other way of picking up data in chunks beforehand?
3. The 2 databases are not in the same data centres and are geographically located at different places. In such a case would an expdp using network link really benefit? (We havent tried that approach yet.)
4.除了可传输表空间之外,我们还可以使用其他功能来有效地在更短的时间内迁移此数据吗?
5.在expdp与lob数据的情况下并行工作吗?我读过,即使我们提到平行度超过1,Oracle也只使用1个进程来执行具有lob数据的表的导出?如果我在这里错了,请纠正我。如果并行不起作用,是什么原因导致oracle无法并行运行它。
6.是否有其他方法可以并行化expdp进程lob数据?
7.增加SGA大小会帮助expdp进程更快地运行吗?
希望你做得很好。
我们正在进行数据库迁移练习,其中我们的源Oracle数据库位于11g (11.2.0)上,目标Oracle数据库是12c (12.1.0)。
我们正在使用expdp/impdp在两个数据库之间导出和导入数据。有一些表,其中有LOB数据,大小超过450 GB。
其中一个表上的expdp运行了12个小时以上,最终失败,并出现快照太旧的错误。
我们想知道有没有一种有效的方法将LOB数据从源迁移到目标数据库?
据我所知,我们的应用程序不能有超过5小时的停机时间,因此我们希望尽可能地优化数据迁移活动。
以下是我能够通过在较低的环境 (表大小较小)和性能环境 (表大小模仿生产环境)上进行一些测试运行来收集的一些其他详细信息。
1.源数据库版本:-11g (11.2.0.2)。
2.目标数据库版本:-12c (12.1.0.2)
3.两个数据库上的字符集不同
a.源数据库字符集-WE8ISO8859P1
b.目标数据库字符集-AL32UTF8
4.由于数据库具有不同的字符集,因此我们不能使用可传输表空间,因为要使用它们,两个数据库都应在同一字符集上。(
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces013.htm#ADMIN11396
)
5.在表大小较小的较低环境中,具有大小为18 GB的lob数据且压缩 = 全部设置在par文件中的表对于expdp命令花费了31分钟。
6.在同一数据库中没有压缩参数的情况下导出的同一表需要3分钟的expdp命令。
7.具有LOB数据的表不分区他们确实有历史数据,可以在实际上线之前预先迁移。
8.旧数据库所在的框具有125 GB的RAM,但是最大SGA设置为15 GB。
查询:-
1.压缩参数实际上会使LOB数据的expdp过程变慢吗?
2. We are thinking of exporting and importing (expdp/impdp)data in phases before hand since it is all historic and does not change using the query parameter in par file. Is this a good option? Since the table has close to 75 million rows we dont want the query parameter itself to add on to the expdp slowness. Any thoughts on any other way of picking up data in chunks beforehand?
3. The 2 databases are not in the same data centres and are geographically located at different places. In such a case would an expdp using network link really benefit? (We havent tried that approach yet.)
4.除了可传输表空间之外,我们还可以使用其他功能来有效地在更短的时间内迁移此数据吗?
5.在expdp与lob数据的情况下并行工作吗?我读过,即使我们提到平行度超过1,Oracle也只使用1个进程来执行具有lob数据的表的导出?如果我在这里错了,请纠正我。如果并行不起作用,是什么原因导致oracle无法并行运行它。
6.是否有其他方法可以并行化expdp进程lob数据?
7.增加SGA大小会帮助expdp进程更快地运行吗?
专家解答
但是要回答你的问题
1) 潜在的。压缩成本CPU
2) 当然。这份声明
“他们确实有历史数据,可以在实际上线之前预先迁移。”
是你掌握的关键武器。对于任何形式的迁移,在中断窗口之外可以做的任何事情都是额外的奖励。
3) 不太可能,但是无论您做什么,我都认为您将不得不以某种方式传输该数据。你没有提到 “有多远”,但永远不要低估外部硬盘和车辆的网络带宽 :-)
5/6) 没有什么可以阻止您使用查询参数来隔离同一表的不同行范围来运行多个datapump。
7) 可能,但不是数量级,只有几个百分点。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




