簡體   English   中英

如何在Oracle查詢中禁用PL / SQL

[英]How to disable PL/SQL in Oracle queries

這是我想阻止在我的服務器上運行的那種查詢的示例:

begin
  While True
  LOOP
     dbms_output.put_line('tst');
  END LOOP;
end

此查詢(或其他類似的查詢)可能通過Oracle JDBC瘦驅動程序訪問我的Oracle服務器。 我願意阻止此查詢在JDBC配置級別,數據庫服務器配置級別或通過架構中的用戶權限運行。 我希望用戶能夠繼續運行正常的select / insert / update / delete查詢。 老實說,如果沒有PL / SQL類型命令可用,我會很高興,而只是標准SQL。

更新

我還要提一下,我希望用戶能夠繼續在SQL查詢中使用標准函數。 我真的不希望他們做任何看起來像程序編程的事情(並且不得不擔心這些事情的陷阱,如上所示)。

您無法阻止人們針對您的服務器編寫程序性PL / SQL代碼。 但是,根據您嘗試解決的問題的確切性質,您可能還有其他選擇。 兩個選項讓人想起......

您可以創建與數據庫用戶關聯的配置文件 ,以強制執行各種資源限制。 因此,您可以限制單個調用可以消耗的CPU量或它可以執行的讀取次數。 這使您可以自動終止執行類似無限循環編碼的會話。 請注意, RESOURCE_LIMIT初始化參數需要設置為TRUE,以便Oracle在配置文件中強制執行資源限制。

您可以使用Oracle Resource Manager來優先訪問資源,以降低開發人員的錯誤將占用服務器上所有可用資源並使重要生產流程匱乏的風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM