ORACLE中如何找出大表分佈在哪些數據文件中? 在ORACLE數據中,我們能否找出一個大表的段對象分佈在哪些數據文件中呢? 答案是可以,我們可以用下麵腳本來找出對應表的區、段分別位於哪些數據文件中 SET PAGESIZE 60;COL SEGMENT_TYPE FOR A12;COL FILE_... ...
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
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資料庫當中,我們即可找出一個數據文件中保存有哪些對象, 又可以通過對象名(表名、索引名)定位到當前對象分佈在哪些數據文件當中。