【Oracle】datafile的resize大小確認方法


在對Oracle的表進行刪除操作的時候,雖然數據被清空了,但是物理上占用的空間卻沒有被釋放掉,這有可能使我們的DB服務器的物理存儲始終在增長。

我們在刪除用戶,表的同時也要對datafile文件進行resize。

具體resize的大小可以通過下面的SQL語句來確認。

SELECT
    'alter database datafile '''
    || t1.file_name
    || ''' resize '
    || ceil((nvl(hwm, 1) * &&blksize) / 1024 / 1024)
    || 'M;' resize_cmd
FROM
    dba_data_files t1,
    (
        SELECT
            file_id,
            MAX(block_id + blocks - 1) hwm
        FROM
            dba_extents
        GROUP BY
            file_id
    ) t2
WHERE
    t1.file_id = t2.file_id (+)
AND
    ceil(blocks * &&blksize / 1024 / 1024) - ceil((nvl(hwm, 1) * &&blksize) / 1024 / 1024) > 0;

這里的blksize的值通常為8192

檢索得到的結果例:

alter database datafile '/u01/app/oracle/oradata/db/system01.dbf' resize 800M;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM