我执行delete后,发现数据库所在文件不但没有减小,还大了一倍,
其中表空间文件大小没变,但是UNDOTBS01.DBF这个文件大了许多,怎么才能真正的数据删除啊?
还有怎么才能把表空间缩小,和把UNDOTBS01.DBF 这个文件也缩小啊?
不明白其中的原理,请高手们指教一下!~~~
其中表空间文件大小没变,但是UNDOTBS01.DBF这个文件大了许多,怎么才能真正的数据删除啊?
还有怎么才能把表空间缩小,和把UNDOTBS01.DBF 这个文件也缩小啊?
不明白其中的原理,请高手们指教一下!~~~
解决方案 »
- 查询1、2、3、4、5前五大数据的id,并成横向显示
- 各位ORACLE达人,给我解释一下那种写法好!速度快
- 救命级求救:“OCI-21500: internal error code, arguments: [17099], [], [], [], [], [], [], []” 如何解决?
- 大侠们,存储过程参数问题,急!!!!!!!!
- 将数据从一个数据库的表导入到另一数据库的表
- 向各位老大求查询语句
- 求一段代码将ORACLE数据库中所有表的结构用文本导出.(表较多)
- oracle嵌套表显示问题?
- 调用过程出错,大家来看看!
- oracle自定义数据类型问题
- 学习oracle一定要安装oracle吗?
- oracle数据库再安装完以后,是否有一个默认的数据库和用户??如果新建数据库和用户怎样做??
delete会产生大量的undo数据。关于回收undo表空间,需要你手动建个。并设定文件大小
具体参见http://hi.baidu.com/linzhangs/blog/item/fff645efe822ade8cf1b3eb7.html
用TRUNCATE这个命令才可以。
Oracle 10G中有一个好功能,就是Recycle,这个东西可以帮助我们找回删除掉的Table,就像Windows的回收站一样,而且比Windows的回收站更高级,就是当表空间不够时,Oracle 会自动去清理回收站。网上有一篇文章讲这个东西,大家可以参考:
http://hi.baidu.com/moses/blog/item/0d9a4b3659bd3edca3cc2bc3.html
这篇文章写得还不错,不过其中有些内容有误,比如清除回收站内的Table,应该用table的原名,而不是现在的名字。大家仔细看就可以发现。其实早先我们头就问过我,为什么PLSQL中看到Object中有一堆bin打头的Object,当时不知道是为什么,现在想来,真是够笨的,用了Oracle这久,居然都不知道这个东东(嘻嘻,好像很多同事都还不知道这个东东)。可以用这个命令:
PURGE recyclebin;
呵呵另,删除Table不进入Recycle的方法:
drop table tableName purge;
不过,我想一般的人都不愿意用这个。
楼主结贴给分吧