当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
oracle数据库UNDO表空间释放
发布时间:2010/5/27 11:11:24 来源:城市学习网 编辑:ziteng
  今天早上在检查数据库文件的磁盘使用空间时,发现undo表空间在这个周末居然用了4G之多。达到 了24G!
  按照平常的事物量,不会增长这么快,现在磁盘还剩几个G有点危险了,于是决定对undo表空间进行清理
  首先使用sys 用户创建一个undo表空间 undotbs02
  初始大小为2G ,自动扩展属性关闭,磁盘空间只剩3G多:(
  sql>create undo tablespace undotbs02 datafile ‘/usr/oracle/oradata/db/undotbs02.dbf’ size 2048m autoextend off;
  然后激活新的表空间
  sql> alter system set undo_tablespace=undotbs02;
  系统已经更改!
  查看是否有事物回滚
  select  count(*) from  v$transaction
  没有结果,说明当前没有事物回滚
  可以删除原来的undo表空间
  于是
  sql>drop tablespace  undotbs1 including contents and datafiles ;
  表空间已经删除!
  兴奋的去看看磁盘空间应该有30几G
  当执行操作系统命令时候,我心凉了!
  怎么一点没有释放空间?
  这可咋整,没释放还搭进去了很多!!
  查看log 没错误啊?
  没办法了,去找google 吧
  找到了原因:原来是有进程在访问undotbs01.dbf这个文件
  将访问该文件的进程kill掉就可以了
  那怎么查找那个进程呢?
  lsof这个命令可以列出当前系统打开的文件被那些进程访问
  lsof |grep delete
  就可以找出那个进程
  kill -9 进程ID
  就可以了!
  操作系统认为这个文件还存在所以没有释放磁盘空间
  难道是我有操作错误? 为什么还有进程在访问呢? 查看日志undotbs1已经offline了,奇怪!
  总算解决了。获得了30多G的空间:)
  正常的切换undo是不会出现这种情况的,还得多学习!
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved