场景说明:

客户 ASM磁盘组,data磁盘组空闲空间90G,空间不足,因此强烈建议回收空间

空间回收方案:

1.数据文件resize,回收部分可用性空间(好处就是能够将ASM磁盘组free大小增加);

2.大的无用对象清理,释放空闲空间(好处就是释放空间所在的表空间,新增数据能够使用删除的大对象原空间,而无需对表空间进行扩容);

1.回收数据文件,对数据文件进行resize

SQL>select a.file#,a.name,c.tablespace_name,round(a.bytes//) CurrentMB,ceil(HWM*a.block_size)// ResizeTo,
(a.bytes-HWM*a.block_size)// ReleaseMB,'alter database datafile '||a.FILE#||' resize '||round(ceil(HWM*a.block_size)//+)||' M;' ResizeCmd
from v$datafile a,(SELECT file_id,MAX(block_id+blocks-) HWM FROM DBA_EXTENTS GROUP BY file_id) b,dba_data_files c where a.file#=b.file_id(+)
And (a.bytes-HWM*a.block_size)> and a.FILE#=c.file_id and c.tablespace_name not in('SYSTEM','SYSAUX') and c.tablespace_name not like'%UNDO%' order by desc;

SQL> select group_number,name,total_mb/1024 TOTAL_GB,free_mb/1024 FREE_GB,free_mb/total_mb*100 free_percent,state,TYPE,(case when free_mb/total_mb*100 < 15 then '*' else '' end ) care from v$ASM_DISKGROUP;

SQL思路,查询每个数据文件中max_block_id *表空间的block_size,进行计算+5m(保守),是数据文件最大的大小,进行resize回收,排除undo,system,sysaux,temp表空间

2.大的无用对象清理,释放空闲空间(好处就是释放空间所在的表空间,新增数据能够使用删除的大对象原空间,而无需对表空间进行扩容);

查询数据库中大于2G的对象并列举出来, or ,将数据库中指定的users表空间,top 50对象列举出来
SQL> select * from (select owner,segment_name,segment_type,tablespace_name,round(sum(bytes)///,) "Gbytes" 

from dba_segments where bytes>** group by owner,segment_name,segment_type,tablespace_name) C1 where C1."Gbytes">;

or 
SQL> select rownum,C1.* from (select owner,segment_name,segment_type,tablespace_name,round(sum(bytes)/1024/1024/1024,2) "Gbytes"
from dba_segments where bytes>1024*1024*50 and tablespace_name='USERS' group by owner,segment_name,segment_type,tablespace_name order by 4,5) C1 where rownum<50;

数据文件resize回收空间的更多相关文章

  1. oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)

    随着互联网的快速发展,各行各业的数据量也是与日俱增,而数据库的数据量也是直线增长,但是,如果表DML太多,则可能会在高水位线以下出现太多空白. 因此,只能将数据文件缩小到高水位线,因为高水位线以下有一 ...

  2. Oracle 不小心删除undo数据文件以及磁盘空间不足导致不能登录的解决办法

    在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一 ...

  3. oracle 大表删除数据后,回收空间的问题。

    在oracle中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对大表数据进行清理. 一般有一下几种方法: 1. 删除大部分数据,留下小部分数据.我们可以把需要保留的数据转移到别的表,然后再把大 ...

  4. 数据文件resize扩容

    表空间不足 Alert日志报错 Mon Dec :: GMT+: Incremental checkpoint up to RBA[ox1af2d.3ddll.], current log tail ...

  5. 【转】Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  6. 模拟主库创建数据文件,dg备库空间不足时问题处理

    本篇文档测试目的: 模拟实际环境中,主库对表空间添加数据文件,备库空间不足,最终导致MRP进程自动断开,处理方式. 1.问题环境模拟 1)正常情况下的dg 主库创建数据文件,备库接受日志,自动创建表空 ...

  7. Oracle 表空间与数据文件

    -============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...

  8. 管理表空间和数据文件<六>

    数据库管理 -- 管理表空间和数据文件  介绍 表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库则是存放在表空间中,表 空间由一个或多个数据文件组成. 数据库 ...

  9. Oracle-11g 从表空间删除数据文件

    从表空间删除数据文件前提条件 如果欲从表空间中删除数据文件,那么该数据文件必须为空,否则将报出"ORA-03262: the file is non-empty"的错误.   从表 ...

随机推荐

  1. JavaScript 字典

    JavaScript 字典 字典以 key value 形式出现 使用: a = {'k1':'v1,''k2':'v2'} 获取值: a['k1'] 获取值:v1

  2. kettle 连接 Oracle 异常

    场景重现 新安装的 kettle(pdi-ce-7.0.0.0-25) 连接 Oracle 11G R2 报错如下: 解决办法 到 Oracle 官网 JDBC Downloads 下载对应的 ojd ...

  3. Mac 配置教程-开发篇

    将 Mac 日常使用的软件和开发软件区分开,将之前写的 Mac 配置的文章分成了两篇: Mac 配置教程-日常篇 Mac 配置教程-开发篇 图床 iPic 设置快捷键 Command+Shift+u ...

  4. WebApi 后台获取token值

    前台传递一个token,后台不知道怎么获取那么不是很悲剧吗. $(function () { $.ajax({ url: "/api/TokensTest/FirstCode", ...

  5. Windows下的Jupyter Notebook 安装与自定义启动(图文详解)

    不多说,直接上干货! 前期博客 Windows下的Python 3.6.1的下载与安装(适合32bits和64bits)(图文详解) 这是我自定义的Python 的安装目录 (D:\SoftWare\ ...

  6. 百度echarts 3.0版本和2.0版本的兼容问题

    前一段时间,项目中要用到统计图表,之前也用过jqplot的图表插件,这次开发的内容中基于地图的展示还很多,所以后来选择了百度的echarts插件(echarts.baidu.com).刚开始用的时候, ...

  7. android中include

    android中include. include标签用法. 1.新建一个xml文件,命名 head.xml head.xml文件内容如下: <?xml version="1.0&quo ...

  8. HTML table导出到Excel中的解决办法

    第一部分:html+js 1.需要使用的表格数据(先不考虑动态生成的table) <table class="table tableStyles" id="tabl ...

  9. STL 小白学习(2) string

    #include <iostream> using namespace std; #include <string> //初始化操作 void test01() { //初始化 ...

  10. Windows查看Java内存使用情况

    Windows查看Java程序运行时内存使用情况 1.在cmd命令窗口输入 jconsole  ,弹出Java监视和管理控制台窗口 2.连接本地进程,首先需要知道想查看的进程ID ( pid ) 在c ...