共享SQL區在shared pool中釋放的條件

oracle_ace發表於2008-05-04
自己總結了一下shared pool中的shared sql area會在以下條件下被釋放:

1,當shared pool要為shared sql area分配記憶體的時候,恰好這個時候shared pool中已經沒有足夠的記憶體可供分配,這個時候根據改進的LRU演算法,oracle會將shared pool中一些不經常被用到的object區域釋放掉。

2,當使用analyze語句來分析/刪除oracle中各種諸如表,索引等統計資訊時,所以與被分析物件相關的shared sql area就會被從shared pool中釋放掉,當下一次這些被釋放的shared sql area中的sql語句再次執行時又需要重新在一個新的共享SQL區(在shared pool中分配記憶體)中根據被更新過的統計資訊重新解析。

3,當一個object的結構被修改過後,和object相關的一些shared sql area就被視為invalid,這些區域也會被釋放,下次再次執行這些物件相關的語句時再次被解析。

4,更改資料庫的GLOBAL DATABASE NAME時,shared pool中的所有資訊都會被清空。

5,alter system flush shared_pool

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-259954/,如需轉載,請註明出處,否則將追究法律責任。

相關文章