Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3672914
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2022-02-13 16:15:48

有时文件膨胀太大,或者对象清理后想调整数据文件大小,看看文件使用率不高:

  1. col tablespace_name for a12
  2. col file_name for a50
  3. select b.file_id ,
  4.        b.tablespace_name ,
  5.        b.file_name ,
  6.        round(b.bytes / 1024 / 1024) size_M,
  7.        round(c.max_extents / 1024 / 1024) max_extents_M,
  8.        round(b.bytes / 1024 / 1024 + c.max_extents / 1024 / 1024) total_M,
  9.        trunc((b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024) used_M,
  10.        trunc(sum(nvl(a.bytes, 0)) / 1024 / 1024) free_M,
  11.        trunc(100-sum(nvl(a.bytes, 0)) / (b.bytes) * 100, 2) used_percent
  12.   from dba_free_space a, dba_data_files b, dba_tablespaces c
  13.  where a.file_id = b.file_id
  14.    and b.tablespace_name = c.tablespace_name
  15.  group by b.tablespace_name,
  16.           b.file_name,
  17.           b.file_id,
  18.           b.bytes,
  19.           c.max_extents,
  20.           b.bytes / 1024 / 1024 + c.max_extents / 1024 / 1024
  21.  order by b.tablespace_name;


可是 将文件resize 10M时,提示ORA-03297

是有对象存在文件的末尾”,收缩时发现这中情况后就停止了。


怎么办?


MOS中有个脚本 show_segment_above_size.sql
用这个脚本可以查出哪些对象导致的,执行这个脚本:

输入文件号8和想要的大小10M,然后会看到是T41这个表导致的。

接下来的策略就是把T41 表move到其他表空间或者导出再导入,来改变位置,然后再resize应该就可以了。

查一下各文件中最大的extend位置(较慢)

  1. column file_name format a50;
  2. column tablespace_name format a15;
  3. column highwater format 9999999999;
  4. set pagesize 9999

  5. select a.tablespace_name
  6. ,a.file_name
  7. ,(b.maximum+c.blocks-1)*d.db_block_size highwater
  8. from dba_data_files a
  9. ,(select file_id,max(block_id) maximum
  10. from dba_extents
  11. group by file_id) b
  12. ,dba_extents c
  13. ,(select value db_block_size
  14. from v$parameter
  15. where name='db_block_size') d
  16. where a.file_id = b.file_id
  17. and c.file_id = b.file_id
  18. and c.block_id = b.maximum
  19. order by a.tablespace_name,a.file_name
  20. /

这个结果就是每个文件可以收缩的最小值(最高水位)。

参考: 如何在通过查找表 Highwatermark 来调整数据文件大小时解决 ORA-03297(文档 ID 130866.1)
阅读(629) | 评论(0) | 转发(0) |
0

上一篇:诊断io blktrace btt

下一篇:asm 磁盘回家

给主人留下些什么吧!~~