百度知,是由於oracle的shared_pool空間不夠的原因,解決方式有兩種
第一種:治標不治本
alter system flush shared_pool;
這種方法可以立即有效果,但是不是根本的解決辦法,一小時左右又開始報上面的錯誤了,再次執行就可以了。
第二種:治標又治本
查看:
SHOW PARAMETERS SHARED_POOL_SIZE
更改:
alter system set SHARED_POOL_SIZE='50M' SCOPE=both;
上面這句話必須在sys用戶下或是用dba的身份登錄的用戶下執行。
貼士:shared_pool 是什么東東?
share_pool_size(共享池)的作用:
1、sql共享緩沖池 2、該參數是庫高速緩存和數據字典的高速緩存。
設置共享池后,可能出現ORA-32001: 已請求寫入 SPFILE, 但是在啟動時未指定 SPFILE
alter system set SHARED_POOL_SIZE='50M' SCOPE=both;
ORA-32001: 已請求寫入 SPFILE, 但是在啟動時未指定 SPFILE
顯示spfile是未啟動狀態
首先確定數據庫是以spfile啟動的還是pfile啟動
用show parameter spfile查看如果values對應有值,表示是spfile啟動的。否則就是pfile啟動的。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ -----------------------------------------
spfile string
值為空,表示數據庫以pfile啟動
要動態修改一定要用spfile啟動。如果現在是用pfile啟動,可以這樣切換成spfile啟動:
SQL>create spfile from pfile;
SQL>shutdown immediate;
SQL>startup;