ORACLE数据文件收缩步骤

本人使用的是19c版本,使用使用过程中发现预分配空间冗余率太高,通过下述步骤成功进行文件收缩。


-----1 查询各表空间文件使用情况
SELECT
*
FROM
(
SELECT
a.tablespace_name,
to_char( a.bytes / 1024 / 1024, '999,999' )||'M' total_bytes,
to_char( b.bytes / 1024 / 1024, '999,999' )||'M' free_bytes,
to_char( a.bytes / 1024 / 1024 - b.bytes / 1024 / 1024, '999,999' )||'M' use_bytes,
to_char( ( 1 - b.bytes / a.bytes ) * 100, '990.99' ) || '%' USE
FROM
( SELECT tablespace_name, sum( bytes ) bytes FROM dba_data_files GROUP BY tablespace_name ) a,
( SELECT tablespace_name, sum( bytes ) bytes FROM dba_free_space GROUP BY tablespace_name ) b
WHERE
a.tablespace_name = b.tablespace_name UNION ALL
SELECT
c.tablespace_name,
to_char( c.bytes / 1024 / 1024, '999,999' )||'M' total_bytes,
to_char( ( c.bytes - d.bytes_used ) / 1024 / 1024, '999,999' )||'M' free_bytes,
to_char( d.bytes_used / 1024 / 1024, '999,999' )||'M' use_bytes,
to_char( d.bytes_used * 100 / c.bytes, '990.99' ) || '%' USE
FROM
( SELECT tablespace_name, sum( bytes ) bytes FROM dba_temp_files GROUP BY tablespace_name ) c,
( SELECT tablespace_name, sum( bytes_cached ) bytes_used FROM v$temp_extent_pool GROUP BY tablespace_name ) d
WHERE
c.tablespace_name = d.tablespace_name
) ;


---2 了解各数据文件详情
select * from dba_data_files t where t.file_name like '%USERS%';

---3 了解各数据文件的剩余空间详情
SELECT * FROM DBA_FREE_SPACE ORDER BY 2;

---4 统计表空间合计空间大小
 SELECT tablespace_name, sum( bytes ) bytes FROM dba_data_files GROUP BY tablespace_name ;
 
 ---5 统计指定数据文件的数据位置大小,block_size=8k
 
 ---查询数据文件对应的file_id
 select file#,name from v$datafile;
 
select max(block_id) from dba_extents where file_id=8;  

----数据的使用占用容量大小
 select 621952*8/1024 from dual;
 

 ---621952  已使用4859M
select max(block_id) from dba_extents where file_id=9;  
 
select 621952*8/1024 from dual;
 
---6 结合总空间和剩余空间,计算收缩后的数据文件大小
alter database datafile 'D:\SOFTWARE\ORACLE_19C\A\ORADATA\ORCL\USERS03.dbf' resize 6000M ;
 
alter database datafile 'D:\SOFTWARE\ORACLE_19C\A\ORADATA\ORCL\USERS02.dbf' resize 16000M ;
    
 commit;
 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值