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);
你覺得我的答案有用嗎?如果是,請投票。 – 2014-11-04 09:20:33