我有一个查询,看起来像
SELECT *
FROM table0
WHERE id IN (SELECT id FROM table1 JOIN table2)
Run Code Online (Sandbox Code Playgroud)
Oracle 选择使用嵌套循环将 table0 与 (table1 x table2) 的结果连接起来,这需要几个小时。我试图弄清楚我是否可以暗示它使用 HASH 来代替,但不知道使用哪个提示以及在哪里使用。我尝试将 HASH_SJ 和 HASH_AJ 贴在各个地方,但没有帮助...
我们每周做一次完整备份,每天做一次差异。总 db 为 80Gb,差异开始时低于 1Gb,然后逐渐增长到大约 3-5Gb,这还可以,但几乎每周都会突然跃升至 40Gb。为什么会发生这种情况?我该如何调查?我有理由确信实际的数据库使用是统一的,没有尖峰。
我正在尝试调查 Oracle 11 RAC 上的一些并发问题。到目前为止,我拥有的最有用的工具是企业管理器的“阻塞会话”视图,它告诉我哪个查询阻塞了其他所有人以及它在等待什么。然而,为了利用这种观点,我需要在问题发生时抓住它。因此,我正在寻找一种向 oracle 查询历史数据的方法,该方法将为我提供类似于企业管理器中“阻止会话”屏幕必须提供的数据。