爲什麼不創建一個小程序來改變系統:
create or replace procedure change_cache_size (Px in number) is
begin
execute immediate 'alter system set db_cache_size = Xm scope=both';
end;
然後,您可以從C#調用它。
爲了找到在SQL參數的當前值,您可以查詢V$PARAMETER
select value
from v$parameter
where name = 'db_cache_size'
然後可以正常查詢。或者,您可以使用OUT參數將它們組合爲一個。
create or replace procedure change_cache_size (Psize out varchar2) is
begin
execute immediate 'alter system set db_cache_size = Xm scope=both';
select value into Psize
from v$parameter
where name = 'db_cache_size';
end;
我將極其警惕以這種方式的應用程序改變的初始化參數的。這很好地表明你的數據庫中有些東西需要改變。我希望能夠提供一種適用於所有使用數據庫的應用程序的緩存大小,而不是根據某個時刻的需求來更改緩存大小。
如果你想X是可變的,然後只是讓這另一個參數:
create or replace procedure change_cache_size (PX in number, Psize out varchar2) is
begin
execute immediate 'alter system set db_cache_size = ' || X || 'm scope=both';
select value into Psize
from v$parameter
where name = 'db_cache_size';
end;
值得一提的是,你現在可以執行系統與用戶輸入的動態變化......確保你第一次淨化輸入。
來源
2013-11-23 13:50:00
Ben
不錯,但你能告訴我如何設置X作爲參數,以及如何從SQL + – DigitalFox
創建此更新我更新了我的答案@DigitalFox。要創建簡單的運行,然後在下一個像添加一個'/'。如果你想查看錯誤,只需在那之後輸入'show errors' ... – Ben
我很感謝你,本先生。驚人 :) – DigitalFox