Oracle UNDOTBS表空間的查看與擴容


1.查看UNDO表空間使用情況

select tablespace_name,
       round(sum(decode(status, 'ACTIVE', bytes, 'UNEXPIRED', bytes, 0)) * 100 /
             sum(bytes),
             2) || '%' "used %"
  from DBA_UNDO_EXTENTS
 group by tablespace_name
 order by 1;

 

 

 

 

V$ROLLSTAT

只有在 automatic undo management mode 模式下有效,包含回滾段的一些行為。

V$UNDOSTAT

這個視圖只在 automatic undo management mode 模式下才有意義。包含監控和調試 UNDO 表空間的信息,通過這個視圖可以估計現有數據庫所需的 UNDO 表空間的大小。

 

 

2.查看回滾段信息

select rownum,sys.dba_rollback_segs.segment_name Name,v$rollstat.extents Extents,
v$rollstat.rssize Size_in_Bytes,v$rollstat.xacts XActs,
v$rollstat.gets Gets,v$rollstat.waits Waits,v$rollstat.writes Writes,sys.dba_rollback_segs.status status
from v$rollstat,sys.dba_rollback_segs,v$rollname
where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and v$rollstat.usn(+) = v$rollname.usn
order by rownum;

 

 

3.查看表空間數據文件所在位置

select file_name,tablespace_name from dba_data_files where tablespace_name = 'UNDOTBS1';

 

 

檢查數據庫的undo表空間是否自動擴展 

select FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE,STATUS,MAXBYTES,USER_BYTES from dba_data_files where tablespace_name like '%UNDO%';

 

 

 

 

4.修改UNDO表空間數據文件大小

alter database datafile '/oradata/datafile/UNDOTBS01.DBF' resize 300M;

alter database datafile '/oradata/datafile/UNDOTBS01.DBF' AUTOEXTEND ON NEXT 100M MAXSIZE 1000M;

 

5.UNDO表空間添加數據文件

SQL> alter tablespace UNDOTBS1 add datafile '/oradata/datafile/undotbs1_02.dbf' size 32000M;

Tablespace altered.

如果是自動擴展改成

SQL> alter tablespace UNDOTBS1 add datafile '/oradata/datafile/undotbs1_02.dbf' SIZE 5000AUTOEXTEND ON NEXT 1000M MAXSIZE 32000M;

 

6.也可以考慮切換UNDO表空間

方法一

新建undo表空間,switch到新表空間,在把舊的undo表空間刪除,具體操作如下:(不關閉數據庫的情況下)

create tablespace new_name datafile 'D:\APP\ORADATA\ORCL\EXAMPLE01.DBF' size 2G;

alter system set undo_tablespace=new_name;

等待舊的undo表空間事物全部結束后執行:

alter database datafile 'D:\APP\SUNMI\ORADATA\ORCL\UNDOTBS01.DBF' offline;

alter database datafile 'D:\APP\SUNMI\ORADATA\ORCL\UNDOTBS01.DBF' offline drop ;

 

方法二

把數據庫先mount起來,在把undo表空間刪除,重新建立,在打開數據庫就可以了(關閉數據庫的情況)

 

7.undo_retention設置以及優化(默認900秒)

 

針對自動拓展的undo表空間設置undo_retention是有效的,在undo_retention的范圍內,undo表空間中的數據將盡量不被重新覆蓋,僅僅是盡量,不是完全。但是打開了自動拓展之后,有可能在undo_retention時間段內擴展到很大,造成隱患。
針對沒有開自動拓展的undo表空間,設置了undo_retention之后,在oracle 10g之后會忽略掉該設置,而是根據undo表空間的大小和使用率來自動調整undo信息的保留時間。

ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM