Oracle

Shell:如何對在 SQLPlus 中執行的腳本進行計時並在 x 分鐘後將其終止?

  • June 7, 2013

我有一個小工具,它會在發出適當的請求時自動執行一系列 SQL 腳本並輸出到 .XLS。但是,一些 SQL 腳本需要在實時數據庫上執行,我不希望它們執行超過 5 分鐘。

有沒有辦法 - 在我的 shell 腳本中 - 計算腳本的執行時間並在 5 分鐘後終止它?

提前致謝。

如果您必須從腳本中終止會話,那麼這是我將研究的一種方法。

創建一個表來儲存執行狀態。它只需要一列用於 SID。您的腳本要做的第一件事是啟動在後台執行的第二個自身實例,並向其傳遞一個參數以指示它是後台程序。腳本的後台分支將在您希望程序執行的最長時間內休眠,當它喚醒時,它將檢查表,如果儲存了 SID,將終止會話並結束。與此同時,原始/前台程序在啟動其後台版本後將創建一個會話,將其 SID 插入新表並送出。然後它可以執行所有必要的語句並通過從表中刪除它的 SID 來結束。

如果腳本花費的時間少於分配的時間,那麼後台程序在喚醒時將無事可做。如果腳本花費的時間太長,後台程序將終止前台會話。

從理論上講,這似乎可行,但我還沒有嘗試過。

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