我正在努力解决一种 PL/SQL 数据复制过程,该过程在多个远程站点上完美运行,但在一个特定站点上超时。我们的 AWR 和 ASH 报告指出“虚拟电路”等待是主要瓶颈,占数据库总时间的 79%,令人震惊。
该过程的逻辑可识别我们数据库中与远程数据库相比缺失的行,并触发数据复制以查找缺失的条目。虽然其他站点的数据复制任务在一分钟内完成,但此特定站点的操作会遇到令人沮丧的超时。
下面附上我们的 AWR 报告的片段,它强调了“虚拟电路等待”事件下的长时间等待时间:
我将非常感谢这个社区的智慧所提供的任何见解或推荐的诊断方法。
预先感谢您的时间和帮助。
每当我为有问题的站点手动运行此过程时,运行至少需要五分钟。我刚刚在测试数据库上运行了它,总共花了大约 22 分钟。这可能比正常情况要长,因为它已经快一周没有复制所有数据了。当我在任何其他网站上运行它时,它会在一分钟内完成。
这可能是因为远程数据库被配置为使用共享服务器连接而不是客户端连接的专用服务器连接。您可以重新配置远程数据库以仅使用专用服务器连接,或者尝试在本地数据库 tnsnames.ora 中放置“SERVER=DEDICATED”参数或在数据库链接中放置客户端连接字符串以强制专用连接:
net_service_name=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(SERVER=dedicated)))