WIN下UNDO表空間的修改,在生產庫中不建議這麼做。
我們的資料庫系統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確實是改的,也修改了引數檔案。但只有重新啟動才算是真正的修改了。因為只有這樣,才能重新讀取引數檔案到記憶體。
一.建立一個表空間: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動undo表空間模式下切換新的undo表空間模式
- oracle 表空間建議Oracle
- oracle undo 表空間Oracle
- 理解UNDO表空間
- 改變資料庫undo表空間資料庫
- 【UNDO】使用重建UNDO表空間方法解決UNDO表空間過大問題
- oracle UNDO表空間一個bug——undo表空間快速擴充套件Oracle套件
- Oracle undo 表空間管理Oracle
- oracle重建UNDO表空間Oracle
- oracle undo表空間管理Oracle
- undo表空間總結
- undo表空間中常用的操作
- ORACLE 中undo表空間爆滿的解決方法Oracle
- MySQL InnoDB Undo表空間配置MySql
- undo表空間故障處理
- oracle中undo表空間丟失處理方法Oracle
- Oracle - 回滾表空間 Undo 的整理Oracle
- Oracle的UNDO表空間管理總結Oracle
- UNDO表空間損壞的處理
- 有關UNDO表空間的學習:
- ORACLE線上切換undo表空間Oracle
- UNDO表空間不足解決方法
- Oracle undo表空間切換(ZT)Oracle
- Undo表空間與redo日誌
- oracle回滾段 undo 表空間Oracle
- ORACLE撤銷表空間(Undo Tablespaces)Oracle
- 為什麼不建議你用 MongoDB 這類產品替代時序資料庫?MongoDB資料庫
- undo 表空間滿了的處理方法
- undo表空間不能回收的解決方法
- Oracle undo表空間爆滿的解決Oracle
- undo表空間佔用磁碟空間滿案例處理
- Oracle資料庫-建庫、建表空間,建使用者Oracle資料庫
- Oracle undo 表空間使用情況分析Oracle
- 10.管理UNDO表空間.(筆記)筆記
- undo表空間太大解決辦法
- 使用中undo表空間資料檔案被誤刪
- UNDO表空間損壞導致資料庫無法OPEN資料庫
- 檢查及設定合理的undo表空間