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 
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数据库当中,我们即可找出一个数据文件中保存有哪些对象, 又可以通过对象名(表名、索引名)定位到当前对象分布在哪些数据文件当中。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐