oracle truncateb表后 表空间释放问题的解决办法
来源:互联网 发布:mac上推荐的文艺软件 编辑:程序博客网 时间:2024/05/22 05:31
检查数据库表空间时,发现有的表空间使用率很大,但是库里又没数据。搜索整理下,如何释放表空间 已syjk_data表空间为例
查看表空间大小
select a.tablespace_name, round(a.total_size) "total_size(MB)",round(a.total_size)-round(b.free_size,3) "used_size(MB)",round(b.free_size,3) "free_size(MB)", round(b.free_size/total_size*100,2)||'%' free_ratefrom ( select tablespace_name, sum(bytes)/1024/1024 total_size from dba_data_files group by tablespace_name ) a, ( select tablespace_name, sum(bytes)/1024/1024 free_size from dba_free_space group by tablespace_name ) b where a.tablespace_name = b.tablespace_name(+);
TABLESPACE_NAMETOTAL_SIZE USED_SIZE FREE_SIZE FREE_RATESYJK_HISTORY1024011023999.99%SYJK_MODEL1024011023999.99%SYFX_SYSTEM1024011023999.99%SYFX_MODEL1024011023999.99%SYJK_SYSTEM1024011023999.99%USERS51.3123.68873.75%SYJK_UNDO102402.2510237.7599.98%UNDOTBS1614444.4376099.56399.28%SYSTEM700692.757.251.04%SYSAUX800746.12553.8756.73%SYJK_INDEX102407118.0623121.93830.49%SYJK_DATA204808130.06212349.93860.3%释放后表空间的大小
TABLESPACE_NAMETOTAL_SIZE USED_SIZE FREE_SIZE FREE_RATESYJK_HISTORY1024011023999.99%SYJK_MODEL1024011023999.99%SYFX_SYSTEM1024011023999.99%SYFX_MODEL1024011023999.99%SYJK_SYSTEM1024011023999.99%USERS51.3123.68873.75%SYJK_UNDO102402.2510237.7599.98%SYJK_DATA2048020.87520459.12599.9%UNDOTBS1614444.4376099.56399.28%SYSTEM700692.757.251.04%SYSAUX800746.12553.8756.73%SYJK_INDEX102407118.0623121.93830.49%
一、truncate用法
1.删除表中所有的行,释放数据所占用的自由空间
同时删除索引数据,释放该表上的index所占用的自由空间
truncate table 表名;(会释放空间)
但是,truncate不会释放由minextents storage parameter 指定的存储参数例如,即便表中没有任何记录,也会占用(initial_extent)3G空间
2.删除表中所有的行,保留表所占用的空间,留待该表下次使用。TRUNCATE TBALE 表名 REUSE STORAGE;(不会释放空间)
假如你的库是imp/exp导入导出的,并且在之前库中存在数据,也就是(dba_segments中)initial_extent字段的值为当初所占空间的大小(索引也是一样),执行如下语句,查看
所占表空间大小的表(批量操作)
Select owner, decode(partition_name, null, segment_name, segment_name || ':' || partition_name) objectname , 'alter ' || segment_type || ' ' || decode(partition_name, null, segment_name, segment_name || ':' || partition_name) || ' deallocate unused keep 1k ' scripts, segment_type objecttype, nvl(bytes, 0) "SIZE", nvl(initial_extent, 0) INITIALEXT, nvl(next_extent, 0) NEXTEXT, nvl(extents, 0) NUMEXTENTS, nvl(max_extents, 0) "MAXEXTENTS" from dba_segments s where tablespace_name in ('SYJK_DATA','SYJK_INDEX') and owner = 'TPL' and s.segment_type in ('TABLE','INDEX') order by nvl(bytes, 0) desc ;
解决方法,执行以下语句,释放extent
alter TABLE SYJK_CCS_CCSCXCCJBXX deallocate unused keep 1k
alter TABLE SYJK_CCS_CCSCXRCJBXX deallocate unused keep 1k
alter TABLE SYJK_CCS_RKMX deallocate unused keep 1k
alter TABLE SYJK_CCS_CCSXX deallocate unused keep 1k
alter TABLE IADSYSCONFIG deallocate unused keep 1k
- oracle truncateb表后 表空间释放问题的解决办法
- Oracle截断表后空间不释放处理
- Oracle delete数据后的释放表空间,加快访问速度
- oracle释放零时表空间
- ORACLE释放UNDO表空间
- oracle move表释放空间
- ORACLE关于DELETE后空间不释放问题
- Oracle 的 ORA-01653 错误解决办法 表空间问题
- oracle 大表删除数据后,回收空间的问题。
- oracle 大表删除数据后,回收空间的问题。
- truncate表后,不释放表空间
- oracle 释放过度使用的Undo表空间
- oracle 释放过度使用的Undo表空间
- Oracle 释放过度使用的Undo表空间
- Oracle 释放过度使用的Undo表空间
- Oracle 释放过度使用的Undo表空间
- 关于Oracle 释放过度使用的Undo表空间
- Oracle 释放过度使用的Undo表空间
- MyEclipse SVN插件的安装
- 构建高性能高并发Java系统
- iOS 6页面初始设置为横屏界面--播放器
- 【Android】定时以及循环触发事件的实现
- SpringMVC简单流程
- oracle truncateb表后 表空间释放问题的解决办法
- supervisor - Python进程管理工具
- S3C2440 SDRAM内存驱动
- 在非UI线程处理Bitmap
- group by rollup 和grouping的使用实例
- Android手机通过socket与pc通信
- 数据库
- QT线程(一):线程类
- g++编译器为什么不报错呢?