ORACLE線上切換undo表空間
檢視原undo相關引數
SHOW PARAMETER UNDO;
查詢資料庫undo使用情況
SELECT seg.tablespace_name "Tablespace Name",
ts.bytes / 1024 / 1024 "TS Size(MB)",
ue.status "UNDO Status",
count(*) "Used Extents",
round(sum(ue.bytes) / 1024 / 1024, 2) "Used Size(MB)",
round(sum(ue.bytes) / ts.bytes * 100, 2) "Used Rate(%)"
FROM dba_segments seg,
DBA_UNDO_EXTENTS ue,
(SELECT tablespace_name, sum(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) ts
WHERE ue.segment_NAME = seg.segment_NAME
and seg.tablespace_name = ts.tablespace_name
GROUP BY seg.tablespace_name, ts.bytes, ue.status
ORDER BY seg.tablespace_name;
檢視
undo
表空間的大小
SELECT D.TABLESPACE_NAME,D.FILE_NAME, SUM(D.BYTES) / 1024 / 1024 MB
FROM DBA_DATA_FILES D
WHERE D.TABLESPACE_NAME LIKE 'UNDO%'
GROUP BY D.TABLESPACE_NAME,D.FILE_NAME;
建立新undo空間
create undo tablespace undo_x datafile 'f:\ORACLE\ORADATA\XIFENFEI\undo_1-1.dbf' size 10M autoextend on next 10M maxsize 30G;
查詢歷史undo是否還有事務(包含回滾事務)
SELECT a.tablespace_name, a.segment_name, b.ktuxesta, b.ktuxecfl, b.ktuxeusn || '.' || b.ktuxeslt || '.' || b.ktuxesqn trans FROM dba_rollback_segs a, x$ktuxe b WHERE a.segment_id = b.ktuxeusn AND a.tablespace_name = UPPER('&tsname') AND b.ktuxesta <> 'INACTIVE';
SELECT a.usn,
a.name,
b.status,
c.tablespace_name,
d.addr,
e.sid,
e.serial#,
e.username,
e.program,
e.machine,
e.osuser
FROM v$rollname a,
v$rollstat b,
dba_rollback_segs c,
v$transaction d,
v$session e
WHERE a.usn = b.usn
AND a.name = c.segment_name
AND a.usn = d.xidusn
AND d.addr = e.taddr
AND b.status = 'PENDING OFFLINE';
--因為有undo_retention引數,所以不能簡單的透過確定該sql無事務就可以刪除原undo 切換undo表空間(無論是否有事務,均可以切換[最好是無事務時切換],但是不能直接刪除原undo表空間)
alter system set undo_tablespace=UNDOTBS2 scope=both;
在rac中執行有可能會報錯,但是其實也會改當前例項的預設undo表空間。
ERROR at line 1:
ORA-32008: error while processing parameter update at instance SCDB2
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-30013: undo tablespace 'UNDOTBS3' is currently in use
如果不想報錯,應該用下面一句。
alter system set undo_tablespace=UNDOTBS2 sid=' 要修改的例項 ' ;
ALTER SYSTEM SET undo_tablespace='UNDOTBS1' SCOPE=BOTH SID='boss1';
用select instance_name from V$instance;檢視SID
用show parameter undo看看現在預設undo表空間有沒有改
alert日誌現象,表明原undo還有事務
Sun Jun 17 20:10:45 2012 Successfully onlined Undo Tablespace 7. [36428] **** active transactions found in undo Tablespace 2 - moved to Pending Switch-Out state. [36428] active transactions found/affinity dissolution incompletein undo tablespace 2 during switch-out. ALTER SYSTEM SET undo_tablespace='undo_xifenfei' SCOPE=BOTH; Sun Jun 17 20:11:38 2012 [36312] **** active transactions found in undo Tablespace 2 - moved to Pending Switch-Out state. Sun Jun 17 20:16:15 2012 [36312] **** active transactions found in undo Tablespace 2 - moved to Pending Switch-Out state.
--只能表明有事務,就算長時間未出現類似記錄,不能證明一定可以刪除原undo,因為undo_retention 查詢回滾段情況(原undo表空間的回滾段全部offline,可以刪除相關表空間)
select tablespace_name,segment_name,status from dba_rollback_segs;
離線原undo表空間
alter tablespace undotbs1 offline;
確定原undo回滾段全部offline,直接刪除
drop tablespace undotbs1 including contents and datafiles;
切換undo表空間一句話: 新建undo幾乎是任何時候都可以執行切換undo表空間命令,如果要刪除歷史undo需要等到該undo空間所有回滾段全部offline.千萬別在尚有回滾段處於online狀態,強制刪除資料檔案.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976626/viewspace-2729627/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle undo表空間切換(ZT)Oracle
- Oracle切換undo表空間操作步驟Oracle
- 自動undo表空間模式下切換新的undo表空間模式
- Oracle Temp 表空間切換Oracle
- oracle undo 表空間Oracle
- Oracle undo 表空間管理Oracle
- oracle重建UNDO表空間Oracle
- oracle undo表空間管理Oracle
- Oracle 19c 線上縮減 UNDO 表空間 容量Oracle
- oracle UNDO表空間一個bug——undo表空間快速擴充套件Oracle套件
- oracle回滾段 undo 表空間Oracle
- ORACLE撤銷表空間(Undo Tablespaces)Oracle
- 理解UNDO表空間
- Oracle - 回滾表空間 Undo 的整理Oracle
- Oracle的UNDO表空間管理總結Oracle
- Oracle undo 表空間使用情況分析Oracle
- undo線上切換步驟筆記筆記
- 【UNDO】使用重建UNDO表空間方法解決UNDO表空間過大問題
- MySQL 5.7新特性之線上收縮undo表空間MySql
- Oracle9i重建和切換臨時表空間Oracle
- Oracle基礎 03 回滾表空間 undoOracle
- Oracle undo表空間爆滿的解決Oracle
- undo表空間總結
- oracle 切換undo tablespace小結Oracle
- oracle 釋放undo空間Oracle
- oracle中undo表空間丟失處理方法Oracle
- Oracle undo表空間爆滿的處理方法Oracle
- 監控和管理Oracle UNDO表空間的使用Oracle
- Oracle 釋放過度使用的Undo表空間Oracle
- MySQL InnoDB Undo表空間配置MySql
- undo表空間故障處理
- ORACLE 中undo表空間爆滿的解決方法Oracle
- Oracle9i中的臨時表空間的重建和切換Oracle
- UNDO表空間不足解決方法
- Undo表空間與redo日誌
- undo表空間中常用的操作
- 【UNDO】Oracle undo表空間使用率過高,因為一個查詢Oracle
- undo表空間佔用磁碟空間滿案例處理