对于table空间的收缩是一个老生常谈的问题,不过却是一个一直都没有很透彻的讨论清楚过的问题。借ks_reny的机会,谈谈个人看法,有不及之处,希望高手引领更深入研究此话题。

datafile是物理上的一个文件在下层就是基于文件系统的block块了,而我们经常提到的segment,extent,数据库的 block,这里都是oracle存储是的逻辑上的单位,所以首先设想一下如果是你来实现delete或者drop的操作的时候,你会是真正的调用文件系统的API,而重新把datafile重新整理一遍吗,我想你也不会如此的吧。这样的话,每个delete或者是drop的操作将会带来我们更多的痛苦。所以Oracle更不会如此,这就是为什么你的datafile的大小并没有发生变化的原因,那么,文件系统上虽然没有重新修理datafile,但是 oracle里却通过自己的实现,通过对内部逻辑单元的处理,在逻辑上已经删除了那些单元,从而storage manage知道以后如果需要的连续block这里可以满足的话,就把这个碎片填上了。所以对于oracle来说,他很清楚这里是可用的,这样利用率也就小了变话了。

所以这里要解决你的问题就要使我们的datafile瘦身,只有datafile瘦下来了,你的data又不变化了,利用率也就上升了。那么如何让你的datafile瘦下来?

1. exp/imp expdp/impdp 这个虽然原始,也比较繁琐,但是确实是一个非常稳定可靠的方法。

2. resize resize面临一个问题,resize到多大,大了没有意义,小了出现错误。

这里特地写了一个sql脚本,你可以使用运行这个脚本的结果,就是你指定的file做resize的命令

SQL> variable blocksize number;

SQL> begin execute immediate 'select value from v$parameter where name = ''db_block_size''' into :blocksize; end;

2 /

SQL>print :blocksize;

SQL> select 'alter database datafile ''' ||

2 file_name || ''' resize ' ||

3 ceil( nvl(hwm,1)*:blocksize/1024/1024 ) || 'm;' cmd

4 from dba_data_files a,

5 ( select file_id,

6 max(block_id+blocks-1) hwm

7 from dba_extents

8 group by file_id ) b

9 where a.file_id = b.file_id(+) and b.file_id in (7, 8, 10);

CMD

--------------------------------------------------------------------------------

alter database datafile 'F:\DEVELOPER\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST\TESTTS1.02.DBF' resize 18m;

alter database datafile 'F:\DEVELOPER\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST\TESTTS1.01.DBF' resize 5m;

alter database datafile 'F:\DEVELOPER\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST\TESTTS1.03.DBF' resize 40m;

执行这里的sql语句就可以了,不过这里注意了,这里可以看到,实际上是用最大的blocks作为resize的标准,如果size超过,或者是已经扩展过的block 就会出现 文件包含在请求的 RESIZE 值以外使用的数据的错误了,所以这个方法,可行但是并不是很实际。这样的case基本上只在做练习的时候出现。

3. 如果你是一个表或者少量的表在那个表空间,可以通过creat table as select ...的方式或者move的方式,move完成后再干掉表空间,干掉表空间的时候,including contents and datefiles就可以了。

oracle表空间如何压缩,Oracle里表空间的压缩相关推荐

  1. oracle表独立数据文件,oracle表空间及数据文件

    1. Oracle 的逻辑结构 数据库的物理结构是由数据库的操作系统文件所决定,每一个 Oracle 数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理 ...

  2. oracle 表碎片化处理,oracle数据库碎片化管理

    ******************************************************************************** 1.表空间碎片 *********** ...

  3. oracle表最大条数,oracle 数据表最大多少条记录

    1.64位linux 和64位oracle,默认oracle表空间数据文件用的BLOCKSIZE是8k,表空间数据文件最大是32G. SQL>show parameter k_cache_siz ...

  4. oracle表领域的做成,Oracle的架构学会了就可以做一个框架软件设计师了

    编辑推荐: 本文来自于csdn,本文主要是先来看一个图,这个图对于从整体上理解ORACLE的体系结构组件,最后,举一个用户提交sql语句的的例子来结束本文. 对于一个数据库系统来说,假设这个系统没有运 ...

  5. oracle 表列 自增,ORACLE表建立自增列

    create tablespace studentDB datafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Bo identi ...

  6. java 获取oracle表结构_获取Oracle中所有表的列表?

    回答(19) 2 years ago 我们可以从以下查询获取所有表格,包括列详细信息: SELECT * FROM user_tab_columns; 2 years ago 使用sqlplus更好地 ...

  7. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  8. oracle 表单重命名,Oracle重命名表

    在本教程中,您将学习如何使用Oracle RENAME语句重命名数据库中的表. 要重命名表,可以使用以下Oracle RENAME表语句,如下所示: RENAME table_name TO new_ ...

  9. oracle表ddl,七、Oracle中DDL改变表结构操作

    目录 7.1. 创建表 Create table student( Sid number(10), Snamevarchar2(10) ) tablespace tt; 以上 tablespace 不 ...

  10. oracle 表 实时同步,跨Oracle数据库实现表级别的实时同步

    Unsplash 一. 前言 这个问题是上一篇文章<Oracle跨数据库实现定时同步指定表中的数据>中所提问题的进一步延伸.考虑到对数据的实时性要求比较高,设置成定时同步,有点不妥,需要改 ...

最新文章

  1. VR/AR标准委员会成立,宣布全新的标准OpenXR
  2. POJ1118 HDU1432 Lining Up
  3. springMVC,mybatis配置事务
  4. Qt文档阅读笔记-Image QML官方解析与实例
  5. 并查集(ACWING三道题)
  6. 基于FPGA 的CRC校验码生成器
  7. Jlink软件下载和安装教程
  8. 代码对比工具 mac
  9. map字符串转json格式
  10. NC63重写导入功能
  11. 透彻解读mysql的可重复读、幻读及实现原理
  12. 君正X1000串口流控bug
  13. 图片编辑助手小程序_图片加文字_快速拼图_表情包制作
  14. 使用Jquery+bootstrap无限级菜单树
  15. android车载应用市场,车载市场
  16. 关于java项目与web项目中lib包的那点事
  17. css中 vertical-align 属性的应用和案例
  18. 爬取东方财富网的部分股票信息(2)
  19. 啊!我的专业不只是修电脑,装系统
  20. SpringBoot整合Swagger2-knife4j

热门文章

  1. 阿里云杨敬宇:四层技术构建基于城市场景的边缘计算
  2. 分布式系统:一致性协议
  3. TableStore发布多元索引功能,打造统一的在线数据平台
  4. ECS主动运维2.0,体验升级,事半功倍
  5. LoRaWAN开放式实验平台
  6. 我使用阿里云做直播,有什么手段保护直播安全?
  7. 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升 1
  8. 啥情况?为什么我的 Service 无法注入进来?
  9. 云+X案例展 | 民生类:贝斯平云助力500强跨国企数字化转型
  10. 【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...