ORACLE中如何找出大表分布在哪些數據文件中?


ORACLE中如何找出大表分布在哪些數據文件中?

 

在ORACLE數據中,我們能否找出一個大表的段對象分布在哪些數據文件中呢? 答案是可以,我們可以用下面腳本來找出對應表的區、段分別位於哪些數據文件中

 

SET PAGESIZE 60;
COL SEGMENT_TYPE FOR A12;
COL FILE_NAME FOR A64;
COL SEGMENT_NAME FOR A24;
COL TABLESPACE_NAME FOR A24;
COL SEGMENT_OWNER FOR A12;
SELECT  E.OWNER                    AS SEGMENT_OWNER 
      , E.SEGMENT_TYPE             AS SEGMENT_TYPE
      , E.SEGMENT_NAME             AS SEGMENT_NAME
      , E.PARTITION_NAME           AS PARTITION_NAME
      , E.TABLESPACE_NAME          AS TABLESPACE_NAME
      , F.FILE_NAME                AS FILE_NAME
      , SUM(E.BYTES)/1024/1024     AS SEGMENT_SIZE
FROM DBA_EXTENTS E
INNER JOIN DBA_DATA_FILES F ON E.FILE_ID= F.FILE_ID
WHERE         E.OWNER='&OWNER'
        AND E.SEGMENT_NAME='&SEGMENT_NAME'
GROUP BY E.OWNER
        ,E.SEGMENT_TYPE
        ,E.PARTITION_NAME
        ,E.SEGMENT_NAME
        ,E.TABLESPACE_NAME
        ,F.FILE_NAME
ORDER BY SEGMENT_SIZE DESC;

 

其實之前寫過一篇博客ORACLE查看數據文件包含哪些對象,這個腳本只是那個腳本的變異版本,本質沒有區別。所以,在ORACLE數據庫當中,我們即可找出一個數據文件中保存有哪些對象, 又可以通過對象名(表名、索引名)定位到當前對象分布在哪些數據文件當中。


免責聲明!

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



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