0
假設我有一個物理存儲在數據庫服務器上的SQL腳本。是否有SQL命令可以從應用程序發送Oracle來告訴它執行該腳本?是否可以使用遠程命令執行存儲在數據庫服務器上的SQL腳本文件?
(是的,我知道這聽起來很可笑。我認爲它作爲一種解決一個很討厭的問題是「不應該發生」,但確實的一部分。)
假設我有一個物理存儲在數據庫服務器上的SQL腳本。是否有SQL命令可以從應用程序發送Oracle來告訴它執行該腳本?是否可以使用遠程命令執行存儲在數據庫服務器上的SQL腳本文件?
(是的,我知道這聽起來很可笑。我認爲它作爲一種解決一個很討厭的問題是「不應該發生」,但確實的一部分。)
最簡單的方法一般會使用dbms_scheduler
包到run an external job。這可以讓你調用一個啓動SQL * Plus的shell腳本,連接到數據庫並運行你的.sql腳本。
也可以創建一個Java存儲過程,它使用Java調用操作系統的能力來運行相同的shell腳本。但是,這往往會帶來更多的安全問題,因爲您最終會授予此過程的所有者權限,以在oracle
用戶身上運行數據庫服務器上的任何命令。這將包括像SYSDBA連接到數據庫或破壞數據庫(意外或故意)的事情,所以這是審計人員通常會沮喪的事情。