当我们创建了一个表空间并指定了数据文件,在操作系统上就是出现这个文件。但是如果我们将这个文件开启了自动扩展,只要有新的数据存入,这个文件就会越来越大,直到达到文件或者操作系统的限制。
但是有时候明明表是空的,但是却还是占据了很大的空间。这时候就需要我们降低表的高水位线,使得表所使用的段变小,释放多余空间。然后通过resize改变数据文件大小。已达到释放操作系统空间的作用。
实验一:
降低高水位线(truncate方式)缩小数据文件大小

  1. --创建一个表空间并指定对应的数据文件
  2. VAST@prod > create tablespace vdedutbs datafile '/u01/app/oracle/oradata/prod/vdedutbs01.dbf' size 10M autoextend on;
  3. Tablespace created.
  4. --在这个表空间上创建一张大表
  5. VAST@prod > create table ote tablespace vdedutbs as select * from dba_objects;
  6. Table created.
  7. --再次插入数据,将表变的更大一些
  8. VAST@prod > insert into ote select * from ote;
  9. 75354 rows created
  10. VAST@prod > commit;
  11. Commit complete.
  12. --查看此时数据文件大小
  13. VAST@prod > set line 200
  14. VAST@prod > col file_name for a50
  15. VAST@prod > select file_id,
  16. 2 file_name,
  17. 3 tablespace_name,
  18. 4 autoextensible,
  19. 5 bytes / 1048576 total,
  20. 6 user_bytes / 1048576 used,
  21. 7 online_status
  22. 8 from dba_data_files
  23. 9 where tablespace_name = 'VDEDUTBS';
  24. FILE_ID FILE_NAME                                          TABLESPACE_NAME                AUT TOTAL      USED       ONLINE_
  25. ---------- -------------------------------------------------- ------------------------------ --- ---------- ---------- -------
  26. 7 /u01/app/oracle/oradata/prod/vdedutbs01.dbf        VDEDUTBS                       YES         19         18 ONLINE
  27. --查看表空间上的各个段
  28. VAST@prod > col segment_name for a10
  29. VAST@prod > select owner, segment_name, segment_type, tablespace_name, bytes / 1048576
  30. 2 from dba_segments
  31. 3 where tablespace_name = 'VDEDUTBS';
  32. OWNER                          SEGMENT_NA SEGMENT_TYPE       TABLESPACE_NAME                BYTES/1048576
  33. ------------------------------ ---------- ------------------ ------------------------------ -------------
  34. VAST                           OTE        TABLE              VDEDUTBS                                  18
  35. --降低高水位线
  36. VAST@prod > truncate table ote;
  37. Table truncated.
  38. --查看表空间上的各个段
  39. VAST@prod > select owner, segment_name, segment_type, tablespace_name, bytes / 1048576
  40. 2 from dba_segments
  41. 3 where tablespace_name = 'VDEDUTBS';
  42. OWNER                          SEGMENT_NA   SEGMENT_TYPE       TABLESPACE_NAME                BYTES/1048576
  43. ------------------------------ ----------   ------------------ ------------------------------ -------------
  44. VAST                           OTE          TABLE              VDEDUTBS                               .0625
  45. --resize数据文件
  46. VAST@prod > alter database datafile '/u01/app/oracle/oradata/prod/vdedutbs01.dbf' resize 10M;
  47. Database altered.
  48. --查看此时数据文件大小
  49. VAST@prod > select file_id,
  50. 2 file_name,
  51. 3 tablespace_name,
  52. 4 autoextensible,
  53. 5 bytes / 1048576 total,
  54. 6 user_bytes / 1048576 used,
  55. 7 online_status
  56. 8 from dba_data_files
  57. 9 where tablespace_name = 'VDEDUTBS';
  58. FILE_ID FILE_NAME                                          TABLESPACE_NAME                AUT TOTAL      USED       ONLINE_
  59. ---------- -------------------------------------------------- ------------------------------ --- ---------- ---------- -------
  60. 7 /u01/app/oracle/oradata/prod/vdedutbs01.dbf        VDEDUTBS                       YES         10          9 ONLINE

前几天出现这么一个情况,想讲一个空的数据文件的大小减小一部分,查询表空间的使用率以及表空间下是否有表的存在,发现都没有。但是却一直报ORA-03297错误
 实验二:

  1. --表空间使用率
  2. set line 200
  3. select total.tablespace_name,
  4. round(total.MB, 2) as Total_MB,
  5. round(total.MB - free.MB, 2) as Used_MB,
  6. round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct from
  7. (select tablespace_name,sum(bytes) / 1024 / 1024 as MB from dba_free_space group by tablespace_name) free,
  8. (select tablespace_name,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name) total
  9. where free.tablespace_name = total.tablespace_name order by used_pct desc;
  10. TABLESPACE_NAME                TOTAL_MB   USED_MB    USED_PCT
  11. ------------------------------ ---------- ---------- ----------
  12. SYSTEM                                720     717.69     99.68%
  13. SYSAUX                                620     580.13     93.57%
  14. EXAMPLE                            345.63     310.13     89.73%
  15. VASTTBS                            421.81     227.56     53.95%
  16. UNDOTBS1                              105      50.44     48.04%
  17. USERS                              196.25        4.5      2.29%
  18. VDEDUTBS                               10          1        10%
  19. --修改文件大小为5M
  20. VAST@prod > alter database datafile '/u01/app/oracle/oradata/prod/vdedutbs01.dbf' resize 5M;
  21. alter database datafile '/u01/app/oracle/oradata/prod/vdedutbs01.dbf' resize 5M
  22. *
  23. ERROR at line 1:
  24. ORA-03297: file contains used data beyond requested RESIZE value
  25. --查看VEDUDTBS下有哪些表
  26. VAST@prod > select * from dba_tables where tablespace_name='VDEDUTBS';
  27. no rows selected
  28. 明明修改的大小小于使用大小,且表空间下无表的存在为什么不能缩小数据文件呢
  29. --查看表空间上的各个段
  30. VAST@prod > col segment_name for a30
  31. VAST@prod > /
  32. OWNER                          SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME                BYTES/1048576
  33. ------------------------------ ------------------------------ ------------------ ------------------------------ -------------
  34. VAST                           BIN$RpdF3cZzdTTgU2VQqMBzGg==$0 TABLE              VDEDUTBS                                   9
  35. 这时查看段发现,在这个表空间内存在着一个被删除的表
  36. --查看回收站
  37. VAST@prod > show recyclebin;
  38. ORIGINAL         NAME                           RECYCLEBIN   NAME OBJECT TYPE DROP TIME
  39. ---------------- ------------------------------ ------------ -------------------
  40. OTE              BIN$RpdF3cZzdTTgU2VQqMBzGg==$0 TABLE        2017-01-21:16:13:00
  41. 此表已经不再使用,将他从回收站中清除干净
  42. VAST@prod > purge table ote;
  43. Table purged.
  44. --修改文件大小为5M
  45. VAST@prod > alter database datafile '/u01/app/oracle/oradata/prod/vdedutbs01.dbf' resize 5M;
  46. Database altered.
  1. 修改成功
  2. 原来是由于之前将一个表删除,但是没有真的被删除,而是被放在的回收站中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30820196/viewspace-2132782/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30820196/viewspace-2132782/

RESIZE DATAFILE与ORA-03297相关推荐

  1. Resize Datafile时ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据

    前些天做测试,为了图方便,在sys用户下建立了一张大表,插入的数据大概几亿条,导致system空间增长了30G左右,后面想删除数据,缩小system空间,因此truncate table,后面又dro ...

  2. oracle resize datafile,用resize缩小datafile大小

    以下是一个缩小datafile大小的例子> pwd /opt/oracle/oradata/irdex > ll total 65021612 drwxr-xr-x  2 oracle o ...

  3. alter database datafile resize(+释放空间)

    RESIZE DATAFILE的时候会失败,因为一些OBJECT的EXTENTS已经扩展到DATAFILE的边缘(最大的地方).  下面的SQL可以让我们找到前5个最边缘的OBJECT select ...

  4. oracle resize什么意思,Oracle调整表空间大小resize

    SQL> ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\ICAPP\IC_DATA6.ORA' RESIZE 300m; ALTER DATABASE D ...

  5. 对图像数据最主要的预处理: Resize

    简 介: 对于图像进行预处理,对于训练视觉深度网络非常重要.可以借助于OpenCV中的相关的函数,或者Paddle中的对于图像预处理的函数完成.本文验证了对于旋转数字进行Resize的方法. 关键词: ...

  6. ORA_ERROR大全

    常见错误: -60 ORA00060: deadlock detected while waiting for resource 一般错误:   - 1 ORA00001: unique constr ...

  7. ORACLE ERROR大全

    ORA_ERROR大全 1 ORA00001: unique constraint (.) violated -17 ORA00017: session requested to set trace ...

  8. 达梦数据库DCA培训课程笔记

    说明:本笔记根据达梦培训课程整理,笔记内容仅供交流和参考,如内容有误请指正:如侵权,请联系本人处理,谢谢! ps:如果需要视频录播的话,可以私信我哈 一.达梦数据库安装 查看cpu:lscpu或者ca ...

  9. 如何提高ORACLE数据库的查询统计速度

    2019独角兽企业重金招聘Python工程师标准>>> 我们在开发大型oracle数据库系统时结合项目的特点,本着安全.高效的原则对数据库进行了一些物理设计,从而大大提高了数据库的查 ...

最新文章

  1. 寻找兄弟单词(2012.5.6百度实习)
  2. WiFi攻击中的“核武器”长啥样?来,今天咱们开开眼...
  3. 基于深度学习的目标检测技术演进:从目标检测到人脸检测
  4. word修改一处另一处自动修改_这么做让word自动记录修改明细,再也不用一个字一个字的核对了...
  5. 【东软实训】SQL函数
  6. nodejs libararies
  7. 仿iOS Segmented Control样式
  8. did拼接屏最小拼缝0.88mm
  9. 提高排名的 15 个基本 SEO 技巧
  10. J.J. Abrams的神秘电影 amp; 一个解谜网站
  11. 傻白入门芯片设计,先进封装技术(五)
  12. matlab自带的神经网络例子,MATLAB-network m
  13. 2011大学英语四级核心高频词汇表免费下载
  14. 蓝牙室内定位技术方案有什么优势?
  15. ElementUI的Table组件不支持SSR
  16. mysql中如何调整列的顺序,SQL Server 数据库调整表中列的顺序操作
  17. 第四篇《复合故障诊断技术综述》论文阅读笔记
  18. 新咪咕Mg100、M101-强刷固件-刷机包
  19. 笔记----DX11.0转为DX11.2
  20. java中 参数的调用_Java中的参数调用

热门文章

  1. 经济寒冬背景下,企业如何利用OA系统保暖
  2. 使用BookMarkHub插件实现在不同浏览器之间进行书签同步
  3. 程序员的福利--百度的71个开源项目
  4. Impossible n‘est pas français (Exploit) 答案
  5. Entity Framework 6三层架构入门:创建数据访问层DAL
  6. webRTC(十二):webrtc 传输速率控制
  7. 浅浅讲解下Linux内存管理之CMA
  8. HTC Android系统 自定义ROM定制图文教程
  9. c语言-选手评分系统
  10. ros ubuntu 卸载_ROS安装与卸载