问题描述
嗨,克里斯/康纳,
我们有两个数据库,即Primary和Secondary。
在Primary上,有一个计划作业,它从Primary中选择数据并将其插入到Secondary中,然后插入的记录从Primary中删除。
以下是程序中写的步骤-
1.立即执行 '更改会话启用并行dml'
2.插入/* 追加并行 (tb_test_transaction,8) nologing */ INTO tb_test_transaction @ remote_link
选择/* 并行 (tb_test_transaction,8) */ * 从tb_test_transaction中选择ROWID (从tb_archive_staging中选择row_id);
3.从tb_test_transaction中删除/* 并行 (tb_test_transaction,8) */在其中ROWID (从tb_archive_staging中选择row_id);
我在这里的查询是由于这个作业在主数据库中被调用,ALTER会话启用并行DML将仅适用于主数据库查询,如SELECT /* PARALLEL(tb_test_transaction,8) */ * FROM tb_test_transaction其中ROWID in (SELECT row_id FROM tb_archive_staging);
我想使用下面的插入在远程数据库上获得并行性的好处-
插入/* 追加并行 (tb_test_transaction,8) nologing */ INTO tb_test_transaction @ remote_link;
您能否帮助如何更改辅助数据库上的并行DML会话。
我们有两个数据库,即Primary和Secondary。
在Primary上,有一个计划作业,它从Primary中选择数据并将其插入到Secondary中,然后插入的记录从Primary中删除。
以下是程序中写的步骤-
1.立即执行 '更改会话启用并行dml'
2.插入/* 追加并行 (tb_test_transaction,8) nologing */ INTO tb_test_transaction @ remote_link
选择/* 并行 (tb_test_transaction,8) */ * 从tb_test_transaction中选择ROWID (从tb_archive_staging中选择row_id);
3.从tb_test_transaction中删除/* 并行 (tb_test_transaction,8) */在其中ROWID (从tb_archive_staging中选择row_id);
我在这里的查询是由于这个作业在主数据库中被调用,ALTER会话启用并行DML将仅适用于主数据库查询,如SELECT /* PARALLEL(tb_test_transaction,8) */ * FROM tb_test_transaction其中ROWID in (SELECT row_id FROM tb_archive_staging);
我想使用下面的插入在远程数据库上获得并行性的好处-
插入/* 追加并行 (tb_test_transaction,8) nologing */ INTO tb_test_transaction @ remote_link;
您能否帮助如何更改辅助数据库上的并行DML会话。
专家解答
事情通常会在dblink上连续进行。因此,您需要多个会话,因此每个会话都可以使用db链接来获取partnering远程会话。
这听起来像是DBMS_PARALLEL_EXECUTE的一个很好的用例。请查看下面的链接以获取完整的示例,您可以根据需要量身定制。
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4248554900346593542
这听起来像是DBMS_PARALLEL_EXECUTE的一个很好的用例。请查看下面的链接以获取完整的示例,您可以根据需要量身定制。
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4248554900346593542
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




