WIN下UNDO表空間的修改,在生產庫中不建議這麼做。

wangyiou1988發表於2013-11-26
     我們的資料庫系統CPU效能很好,但由於磁碟陣列是09年的,所以I/O 讀寫這塊比較差一些,領導說能否把undo表空間挪到另外一個盤上,把讀寫分散在不同的盤上,增加效率,於是,我就開始執行:
    一.建立一個表空間:untotbs2.  
         SQL>CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE
           2    'E:\ORADATA\APTS\UNDOTBS01_new.DBF' SIZE 30644633600
           3     AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M
           4     BLOCKSIZE 8192
           5     EXTENT MANAGEMENT LOCAL AUTOALLOCATE
     注意:這種大型的ddl操作建議在遠端桌面上直接操作,不要使用pl/sql developer,容易掛死。   
   
    二.把資料庫undo_tablespace修改為undotbs2.
           SQL> alter system set undo_tablespace='UNDOTBS2' scope=both;

    這裡注意一下,我們現在把undotbs2設定成undo表空間之後,它的狀態在dba_rollback_segs裡就是online了
            SQL>select tablespace_name,segment_name,status from dba_rollback_segs
   檢視這個會表示出有幾個回退段,他們的狀態是什麼,有online,有offline的,在生產庫中,不會馬上undotbs1就變成offline,會有一些事online,這很正常,因為有些使用者沒有提交,這時我們還可以檢視一個動態效能檢視 :v$rollstat:
       
        SQL>select usn,status from v$rollstat;
           0    online
          10    PENGING OFFLINE
          11    ONLINE
          12    ONLINE
     ..............................................................
這裡只會顯示ONLINE和PENDING OFFLINE,也就是線上和正在離線的狀態。我們必須等待所有的回退段都ONLINE,我們才能進行下一步,刪除老的回退表空間。

三.刪除老的undo表空間:   
           SQL> drop tablespace undotbs1 including contents and datafiles;   ##刪除表空間極其資料檔案。
注意:這裡會顯示執行成功,但在alert日誌裡,
    會顯示:
ORA-01265: 無法刪除 DATA D:\APP\ADMINISTRATOR\UNDO_DATAFILE_APTS\UNDOTBS02.DBF
ORA-27056: 無法刪除檔案
OSD-04024: 無法刪除檔案。
O/S-Error: (OS 32) 另一個程式正在使用此檔案,程式無法訪問。
Completed: drop tablespace undotbs2 including contents and datafiles
    
       我們在作業系統手工刪除也會出問題,不能手工刪除。但我之前在linux操作時就沒有這個問題,估計是作業系統的原因。有人說刪除undo必須重啟資料庫,有人說不用。
看來在win下的資料庫修改undo表空間,必須重啟資料庫才能真正的生效。但我們在系統裡檢視undo表空間:
     SQL>show parameter undo
會正確的顯示出undo是修改過的,說明什麼呢,說明undo確實是改的,也修改了引數檔案。但只有重新啟動才算是真正的修改了。因為只有這樣,才能重新讀取引數檔案到記憶體。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25116248/viewspace-1061156/,如需轉載,請註明出處,否則將追究法律責任。

相關文章