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