Oracle

事後調查 Oracle 12c 中斷,但僅限於 SQL*Plus

  • March 5, 2020

預先警告:不幸的是,我僅限於在遠端站點上使用 SQL*Plus,沒有其他可用的工具。這是在 Windows Server 2012R2 上執行的 Oracle 12c (12.2.0.1.0) 標準版。

上週末發生了一次中斷,Oracle 停止響應大約 15 分鐘。查看應用程序日誌和 Oracle 的警報日誌,很明顯,在遇到 ORA-04031 之前,某些東西一直在捆綁著 Oracle,例如

ORA-04031: unable to allocate 64 bytes of shared memory ("shared pool","unknown object","KGLH0^b3e62c9b","kkocsBeElem: kkoMergeBindEqvCtx")

我的問題是我不知道這個問題的原因。我的問題是,在 48 小時後的這個階段我可以使用哪些工具來弄清楚發生了什麼?如前所述,我已經查看了警報日誌和應用程序日誌。

您可以檢查 V$SQL 中不使用綁定的語句,例如。

select substr(sql_text,1,80), count(*)
  from v$sql 
  group by substr(sql_text,1,80)
  order by count(*) desc

然後檢查最上面的語句的全文,看看它們的不同之處。

有人有權訪問警報日誌。嘗試訪問。也許他們可以把它寄給你。您對該數據庫擁有全部權限嗎?如果是這樣,請嘗試找出具有警報日誌的目錄。例如“show parameter diag” 在該目錄中添加以下 %DIAG%\rdbms\\trace 並為該路徑創建一個目錄對象。然後創建一個指向該位置的數據庫目錄,您可以使用 utl_file 讀取 alert.log 文件並將其顯示在螢幕上。但是,如果有人只是將文件發送給您,那會更快。

自從您使用標準版以來,沒有多少實用程序可用於查看發生了什麼。查看偵聽器日誌也可能會有所幫助。您可以主動嘗試向數據庫添加記憶體。您還可以查詢作業並將作業的執行分散在更長的時間段內。您使用調度程序還是 dbms_jobs?

引用自:https://dba.stackexchange.com/questions/260985