欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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