ORA-04031的傻瓜解決辦法
資料庫版本:8.1.6.0
作業系統:WINDOWS 2000 SERVER
應用過程中總是出現ORA-04031錯誤,採用該方法後執行2個月沒有再次出現過該錯誤。
可以提交一個JOB來自動執行這個過程。
可以將儲存過程先釘在緩衝區中。但是現在還不知道如何將字典緩衝區的內容也釘起來,望各位大俠告之:)
create or replace procedure AUTO_PIN is
address varchar2(20); --sql_address
hashvalue varchar2(20); --sql_hashvalue
SumMemory number; --SQL緩衝區總空間
PinMemory number; --釘在SQL緩衝區的空間
cursor cSele_SQL is --查詢執行過100次的SQL
select t.ADDRESS,t.HASH_VALUE
from v$sql t
where t.KEPT_VERSIONS=0
and t.EXECUTIONS>100
order by t.EXECUTIONS desc;
begin
select nvl(sum(t.SHARABLE_MEM),0) --查詢釘住的SQL所佔空間
into PinMemory
from v$sql t
where t.KEPT_VERSIONS<>0;
select sum(t.SHARABLE_MEM) --查詢總空間
into SumMemory
from v$sql t;
if PinMemory/SumMemory<0.7 then --小於70%
open cSele_SQL;
fetch cSele_SQL into address,hashvalue;
while cSele_SQL%found loop
-- dbms_output.put_line(address||','||hashvalue);
sys.dbms_shared_pool.keep(address||','||hashvalue,'C'); --釘SQL
fetch cSele_SQL into address,hashvalue;
end loop;
close cSele_SQL;
else --大於70%
execute immediate 'alter system flush shared_pool'; --重新整理SHARED_POOL
end if;
end AUTO_PIN;[@more@]
作業系統:WINDOWS 2000 SERVER
應用過程中總是出現ORA-04031錯誤,採用該方法後執行2個月沒有再次出現過該錯誤。
可以提交一個JOB來自動執行這個過程。
可以將儲存過程先釘在緩衝區中。但是現在還不知道如何將字典緩衝區的內容也釘起來,望各位大俠告之:)
create or replace procedure AUTO_PIN is
address varchar2(20); --sql_address
hashvalue varchar2(20); --sql_hashvalue
SumMemory number; --SQL緩衝區總空間
PinMemory number; --釘在SQL緩衝區的空間
cursor cSele_SQL is --查詢執行過100次的SQL
select t.ADDRESS,t.HASH_VALUE
from v$sql t
where t.KEPT_VERSIONS=0
and t.EXECUTIONS>100
order by t.EXECUTIONS desc;
begin
select nvl(sum(t.SHARABLE_MEM),0) --查詢釘住的SQL所佔空間
into PinMemory
from v$sql t
where t.KEPT_VERSIONS<>0;
select sum(t.SHARABLE_MEM) --查詢總空間
into SumMemory
from v$sql t;
if PinMemory/SumMemory<0.7 then --小於70%
open cSele_SQL;
fetch cSele_SQL into address,hashvalue;
while cSele_SQL%found loop
-- dbms_output.put_line(address||','||hashvalue);
sys.dbms_shared_pool.keep(address||','||hashvalue,'C'); --釘SQL
fetch cSele_SQL into address,hashvalue;
end loop;
close cSele_SQL;
else --大於70%
execute immediate 'alter system flush shared_pool'; --重新整理SHARED_POOL
end if;
end AUTO_PIN;[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-04031的傻瓜解決辦法(轉)
- OpenStack 的NAT解決辦法
- 公寓噪音的解決辦法
- SVN被鎖的解決辦法
- ORA-28056的解決辦法
- job都停了的解決辦法
- github慢解決辦法Github
- Grub Rescue解決辦法
- /dev/null解決辦法devNull
- MSBuild Tools解決辦法UI
- ORA-04031 的原因分析解決方法
- 新浪UC無法登入的解決辦法
- 無法訪問google picasa的解決辦法Go
- 檔案無法粉碎解決辦法
- 該文件未能列印的解決辦法
- MySQL 忘記口令的解決辦法MySql
- Spark on mesos的坑以及解決辦法Spark
- mongodb日誌太大的解決辦法MongoDB
- ORA-16038 的解決辦法
- oracle imp過慢的解決辦法Oracle
- git報錯400的解決辦法Git
- android ExceptionInInitializerError解決辦法AndroidExceptionError
- Could not find *.apk!解決辦法APK
- man出錯解決辦法
- ARP病毒解決辦法
- tar包解壓not in gzip format的解決辦法ORM
- jvm:jmap無法dump檔案的解決辦法JVM
- 登錄檔無法開啟的解決辦法
- 印表機無法列印的原因與解決辦法
- Xamarin Android SDK無法更新的解決辦法Android
- 微信域名被封的原因及解決辦法
- Vue 下 ESLint 的 error 解決辦法VueEsLintError
- PHP提示Notice: Undefined variable的解決辦法PHPUndefined
- web前端陣列塌陷的解決辦法Web前端陣列
- puppeteer 安裝失敗的解決辦法
- 方差與偏差的解釋和解決辦法
- git出現Permission denied的解決辦法Git
- library cache pin/lock的解決辦法