可以使用 alter database datafile 'file path...' resize xM 的命令来缩小数据文件。

SELECT 'alter database datafile ''' || A.FILE_NAME || ''' resize ' ||
ROUND(A.FILESIZE - (A.FILESIZE - C.HWMSIZE - 100) * 0.8) || 'M;',
A.FILESIZE || 'M' AS "数据文件的总大小", C.HWMSIZE || 'M' AS "数据文件的实用大小"
FROM (SELECT FILE_ID, FILE_NAME, ROUND(BYTES / 1024 / 1024) AS FILESIZE
FROM DBA_DATA_FILES) A,
(SELECT FILE_ID, ROUND(MAX(BLOCK_ID) * 8 / 1024) AS HWMSIZE
FROM DBA_EXTENTS
GROUP BY FILE_ID) C
WHERE A.FILE_ID = C.FILE_ID AND
A.FILESIZE - C.HWMSIZE > 100;

or

SELECT 'alter database ' || A.NAME || ' datafile ''' || B.FILE_NAME || '''' ||
' resize ' ||
GREATEST(TRUNC(BYTES_FULL / .7), (BYTES_TOTAL - BYTES_FREE)) ||
CHR(10) || '--tablespace was ' ||
TRUNC(BYTES_FULL * 100 / BYTES_TOTAL) || '% full now ' ||
TRUNC(BYTES_FULL * 100 /
GREATEST(TRUNC(BYTES_FULL / .7), (BYTES_TOTAL - BYTES_FREE))) || '%'
FROM V$DATABASE A, DBA_DATA_FILES B,
(SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_FULL
FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME) C,
(SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_TOTAL
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT A.TABLESPACE_NAME, A.FILE_ID, B.BYTES BYTES_FREE
FROM (SELECT TABLESPACE_NAME, FILE_ID,
MAX(BLOCK_ID) MAX_DATA_BLOCK_ID
FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME, FILE_ID) A, DBA_FREE_SPACE B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME AND
A.FILE_ID = B.FILE_ID AND
B.BLOCK_ID > A.MAX_DATA_BLOCK_ID) E
WHERE B.TABLESPACE_NAME = C.TABLESPACE_NAME AND
B.TABLESPACE_NAME = D.TABLESPACE_NAME AND
BYTES_FULL / BYTES_TOTAL < .7 AND
B.TABLESPACE_NAME = E.TABLESPACE_NAME AND
B.FILE_ID = E.FILE_ID;

  

alter tablespace TABLESPACENAME coalesce

此语句是整合表空间的碎片增加表空间的连续性,但是他不会收缩一个文件的大小的

选择某个表空间中超过N个blocks的segments,通过此语句可以看出那个表占用的空间大  

SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, BLOCKS
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'RISK' AND
BLOCKS > 1000
ORDER BY BLOCKS DESC;

  分析表,得知表的一些信息

analyze table TABLENAME estimate statistics;
SELECT INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, BLOCKS, EMPTY_BLOCKS
FROM DBA_TABLES
WHERE TABLE_NAME = 'xx' AND
OWNER = 'xx';

  用alter table ... deallocate unused 命令回收表的空间

alter table user.tablename deallocate unused keep 1k;

  

Oracle收缩表空间的更多相关文章

  1. ORACLE 收缩表空间的数据文件

    http://blog.itpub.net/29345367/viewspace-1816427/ 方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间 ...

  2. Oracle Temp表空间切换

    来源于:  http://www.2cto.com/database/201507/418564.html 一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时 ...

  3. oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

    今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace,        b.segfile# ...

  4. Oracle Temp 表空间切换

    一.TEMP表空间作用 暂时表空间主要用途是在数据库进行排序运算.管理索引.訪问视图等操作时提供暂时的运算空间,当运算完毕之后系统会自己主动清理.当 oracle 里须要用到 sort 的时候. PG ...

  5. oracle数据库表空间追加数据库文件方法

    oracle数据库表空间追加数据库文件方法   针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G  第一种方式:表空间增加数据文件    www.2cto.com   1 ...

  6. Oracle 设置表空间自增长

    Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...

  7. Oracle基础表空间建立,以及练习

    Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在use ...

  8. [转载]Oracle修改表空间大小

    Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...

  9. Oracle建立表空间和用户

    Oracle建立表空间和用户 建立表空间和用户的步骤: 用户 建立:create user 用户名 identified by "密码"; 授权:grant create sess ...

随机推荐

  1. Session共享的简单总结

    1.同服务器.同一域名.不同应用(端口.虚拟目录等) 这种很简单,把sessionState保存到SQLServer,aspnet_regsql之后,修改存储过程TempGetAppID,把 SET ...

  2. ilter()和find()的区别

    这是jQuery里常用的2个方法.他们2者功能是完全不同的,而初学者往往会被误导. 首先 我们看.find()方法:现在有一个页面,里面HTML代码为;程序代码 <div class=" ...

  3. CF 319C - Kalila and Dimna in the Logging Industry 斜率优化DP

    题目:伐木工人用电锯伐木,一共需要砍n棵树,每棵树的高度为a[i],每次砍伐只能砍1单位高度,之后需要对电锯进行充电,费用为当前砍掉的树中最大id的b[id]值.a[1] = 1 , b[n] = 0 ...

  4. asp.net的简单分页程序

    *.apsx页面 1: <%@ Page Language="C#" Debug ="true" AutoEventWireup="true&q ...

  5. MVC 增删改查

    MVC内部的增删改查语句都是用Lambda表达式写成的,因此要想使用MVC内部的增删改查就要学会写Lambda表达式. 这里拿表Train来仅作研究: //声明一个表Train的上下文对象 AirSy ...

  6. android app性能优化大汇总(google官方Android性能优化典范 - 第1季)

    大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验.但是Android系统很有可能无法及时完成那些复杂的界 ...

  7. Part 10 AngularJS sort rows by table header

    Here is what we want to do 1. The data should be sorted when the table column header is clicked 2. T ...

  8. JavaScript学习笔记 - 进阶篇(1)- JS基础语法

    前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...

  9. C# 中 datagridview 绑定BindingList类型和更新

    C# 中的datagridview是一个非常有用且强大的控件,可以用来绑定数据库.绑定LIST类型的变量等等. 这里我们说一说绑定List类型并实时更新datagridview的情况.实时更新,指的是 ...

  10. jQuery 手风琴侧边菜单

    动手做了一个简单手风琴菜单,上图: 点击 B 可收缩 C 列表,点击 C 改变自身和父节点 B 的样式,悬浮时均有不同的样式改变. 先看页面代码,列表的嵌套: <div id="men ...