2014-10-28 52 views
2

在我的開發環境中,我安裝了Oracle 10G XE。Oracle用戶表空間有高分配內存但未被使用,可能的原因是什麼?

我經常運行包含大量存儲過程定義的腳本。 可能發生的情況是,我每天多次提交數百個存儲過程的CREATE或REPLACE PROCEDURE xxxxxxxxxxxx。

這是否會導致表空間的內存分配迅速增加,從而保持低使用率?

的問題是,一旦在一段時間甲骨文將拒絕編譯新的存儲過程發出「ORA-12952:請求超過4 GB的最大允許數據庫大小」

我必須發出一個緊湊的存儲命令(通過Oracle Web界面)釋放一些空間,以便重新定義存儲過程。

我有以下幾點:

TABLESPACE_NAME    TOTAL_BYTES USED_BYTES FREE_BYTES 
------------------------------ ----------- ---------- ---------- 
SYSAUX       461373440 461307904    
USERS       4414504960 32702464 4386127872 
SYSTEM       356515840 355991552  458752 
UNDO        524288000 10354688 513867776 

正如你所看到的用戶表空間有分配的內存4GB,但用法下20MBs。

這種行爲是否有任何典型的原因(高分配/低使用率)? 我可以做些什麼來避免這種情況?

這是我用來獲取統計腳本:

SELECT * FROM 
    (SELECT tablespace_name FROM dba_tablespaces) 
LEFT OUTER JOIN 
    (SELECT tablespace_name, SUM(bytes) AS total_bytes 
    FROM dba_data_files 
    GROUP BY tablespace_name) 
    USING (tablespace_name) 
LEFT OUTER JOIN 
    (SELECT tablespace_name, sum(bytes) AS used_bytes 
    from dba_segments 
    GROUP BY tablespace_name) 
    USING (tablespace_name) 
LEFT OUTER JOIN 
    (SELECT tablespace_name, SUM(bytes) AS free_bytes 
    FROM dba_free_space 
    GROUP BY tablespace_name) 
    USING (tablespace_name); 

回答

0

你不必擔心表空間的使用率。大部分存儲都是由表數據使用的,而不是由過程,函數,觸發器或包所使用。隨着表數據增長監控表空間使用情況。

+0

你覺得我的答案有用嗎?如果是,請投票。 – 2014-11-04 09:20:33

相關問題