程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle釋放undo表空間的實際操作步驟

Oracle釋放undo表空間的實際操作步驟

編輯:Oracle數據庫基礎

在實際操作中數據庫維護數據庫的編程的運行中我們經常會遇到過這樣的情況,就是Oracle釋放undo表空間,以下的文章主要是對Oracle釋放undo表空間的實際操作步驟的介紹,望你浏覽之後會有所收獲。

對大數據量做DML操作之後,得把Oracle釋放undo表空間擴展到十幾個G或者幾十個G 但是這些表空間的所占用磁盤的物理空間又不會被Oracle所釋放。

如果你用的是PC機很可能會遇到磁盤空間不足的問題,經過個人整理經過如下操作可以重構Oracle釋放undo表空間,同樣temp表空間也可能在你查詢大數據或則創建索引的時候無限擴大導致磁盤空間不足,同樣可以用如下方式解決此問題:

查看各表空間名稱

  1. select name from v$tablespace 

查看某個表空間信息

  1. select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1'; 

查看回滾段的使用情況,哪個用戶正在使用回滾段的資源,如果有用戶最好更換時間(特別是生產環境)。

  1. select s.username, u.name from v$transaction t,v$rollstat r, v$rollname u,v$session s  
  2. where s.taddr=t.addr and t.xidusn=r.usn and r.usn=u.usn order by s.username;  

檢查UNDO Segment狀態

  1. select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize; 

創建新的Oracle釋放UNDO表空間,並設置自動擴展參數;

  1. create undo tablespace undotbs2 datafile 
    'D:\Oracle\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS02.DBF' 
    size 10m reuse autoextend on next 100m maxsize unlimited; 

動態更改spfile配置文件;

  1. alter system set undo_tablespace=undotbs2 scope=both

等待原UNDO表空間所有UNDO SEGMENT OFFLINE;

  1. select usn,xacts,status,rssize/1024/1024/1024,
    hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize; 

再執行看UNDO表空間所有UNDO SEGMENT ONLINE;

  1. select usn,xacts,status,rssize/1024/1024/1024,
    hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize; 

刪除原有的UNDO表空間;

  1. drop tablespace undotbs1 including contents; 

確認刪除是否成功;

  1. select name from v$tablespace; 

最後需要在重啟數據庫或者重啟計算機後到存儲數據文件的路徑下刪除數據文件(為什麼要手動刪除呢:以上步驟只是刪除了Oracle釋放undo表空間的邏輯關系,即刪除了數據文件在數據字典中的關聯,不會自動刪除項關聯的數據文件)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved