ORA 04031 無法分配 共享記憶體

2022-09-15 20:03:20 字數 709 閱讀 4638

今天現場專案oracle系統定時器插入資料報錯:

--ora-04031: 無法分配 3936 位元組的共享記憶體 ("shared pool","truncate table jxd7_pub_rtdb...","sga heap(1,0)","kglsim object batch");

第一種:治標不治本

alter system flush shared_pool;

這種方法可以立即有效果,但是不是根本的解決辦法,一小時左右又開始報上面的錯誤了,再次執行就可以了。

第二種:治標又治本

alter system set shared_pool_size='100m' scope=both;

上面這句話必須在sys使用者下或是用dba的身份登入的使用者下執行。

貼士:shared_pool 是什麼東東?

share_pool_size(共享池)的作用:

1、sql

共享緩衝池 2、該引數是庫快取記憶體和資料字典的快取記憶體。 

檢視:show parameters shared_pool_size

更改:alter

system

set shared_pool_size='50m' scope=both;

個人見解:shared_pool是儲存在oracle執行過的sql語句,為了使得下次執行的時候更加迅速,但是oracle 沒有自動釋放,長時間再使用的sql,空間滿了

ORA 04031錯誤的解決思路

使用asmm的情況下04031問題很少,但有些應用不合理也會導致記憶體耗盡.1.沒有使用繫結變數,導致解析資源占用太多 2.開啟過多的cursor不釋放 3.bug 第一種.使用繫結變數 使用cursor sharing引數 第二種.查詢哪個會話開啟的游標比較多 sql select sid,cou...

Oracle TNS無法解析ORA 12154報錯

在伺服器配置好python開發環境,進行資料庫連線測試時發現,程式執行報錯 cx oracle.databaseerror ora 12154 tns 無法解析指定的連線識別符號 分析 在我本機電腦測試資料庫連線正常,伺服器有問題,伺服器的資料庫使用正常,任務計畫也正常執行 進行tnsping or...

ora 01940 無法刪除當前連線使用者

英文提示如下 ora 01940 cannot drop a user that is currently connected 產生原因 由於當前使用者正在連線到資料庫,所以無法刪除。解決辦法 1.檢視此使用者的會話過程 sql select sid,serial from v session wh...