熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle數據庫UNDO表空間釋放

2013-11-13 16:18:02  來源: Oracle 

  今天早上在檢查數據庫文件的磁盤使用空間時發現undo表空間在這個周末居然用了G之多達到 了G!

  按照平常的事物量不會增長這麼快現在磁盤還剩幾個G有點危險了於是決定對undo表空間進行清理

  首先使用sys 用戶創建一個undo表空間 undotbs

  初始大小為G 自動擴展屬性關閉磁盤空間只剩G多

  sql>create undo tablespace undotbs datafile /usr/oracle/oradata/db/undotbsdbf size m autoextend off;

  然後激活新的表空間

  sql> alter system set undo_tablespace=undotbs;

  系統已經更改!

  查看是否有事物回滾

  select  count(*) from  v$transaction

  沒有結果說明當前沒有事物回滾

  可以刪除原來的undo表空間

  於是

  sql>drop tablespace  undotbs including contents and datafiles ;

  表空間已經刪除!

  興奮的去看看磁盤空間應該有幾G

  當執行操作系統命令時候我心涼了!

  怎麼一點沒有釋放空間?

  這可咋整沒釋放還搭進去了很多!!

  查看log 沒錯誤啊?

  沒辦法了去找google 吧

  找到了原因原來是有進程在訪問undotbsdbf這個文件

  將訪問該文件的進程kill掉就可以了

  那怎麼查找那個進程呢?

  lsof這個命令可以列出當前系統打開的文件被那些進程訪問

  lsof |grep delete

  就可以找出那個進程

  kill 進程ID

  就可以了!

  操作系統認為這個文件還存在所以沒有釋放磁盤空間

  難道是我有操作錯誤? 為什麼還有進程在訪問呢? 查看日志undotbs已經offline了奇怪!

  總算解決了獲得了多G的空間

  正常的切換undo是不會出現這種情況的還得多學習!


From:http://tw.wingwit.com/Article/program/Oracle/201311/18108.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.