oracle undo 使用分析
當undo表空間滿了的時間,查詢如下內容:
select sum(bytes) from dba_free_space where tablespace_name='
select sum(bytes) from dba_data_files where tablespace_name='
select sum(blocks) "UNEXPIRED BLOCKS" from dba_undo_extents where tablespace_name='UNDOTBS1'and status='UNEXPIRED';
select sum(blocks) "EXPIRED BLOCKS" from dba_undo_extents where tablespace_name='UNDOTBS1'and status='EXPIRED';
select sum(blocks) "ACTIVE BLOCKS" from dba_undo_extents where tablespace_name='UNDOTBS1'and status='ACTIVE';
select count(*) from dba_rollback_segs where status='OFFLINE';
Show parameter Undo
select max(tuned_undoretention) from v$undostat;
---分析 UNDO 的使用情況
SELECT TABLESPACE_NAME,STATUS,TRUNC(SUM(BLOCKS) * 8 / 1024) AS "Size M",
COUNT(*) Undo_Extent_Num
FROM DBA_UNDO_EXTENTS
GROUP BY TABLESPACE_NAME, STATUS;
---監控undo表空間
SELECT BEGIN_TIME, END_TIME, UNDOTSN, UNDOBLKS, TXNCOUNT,
MAXCONCURRENCY AS "MAXCON"
FROM V$UNDOSTAT;
--查詢是否有回滾段的爭用
select * from v$waitstat;
SELECT name, waits, gets, waits/gets "Ratio"
FROM v$rollstat a, v$rollname b
WHERE a.usn = b.usn;
---檢視回滾段的統計資訊:
SELECT n.name, s.extents, s.rssize, s.optsize, s.hwmsize, s.xacts, s.status
FROM v$rollname n, v$rollstat s
WHERE n.usn = s.usn;
-----檢視哪個會話,佔用回滾段過多 ,根據SID查詢對應的語句
column tx_addr format a18
column program format a15
column status format a10
column machine format a10
column tbs_name format a10
column start_time format a18
column undo_size_mb format 9999990.00
select s.sid,
substr(s.program, 1, 15) program,
substr(s.machine, 1, 10) machine,
t.xidusn || '.' || t.xidslot || '.' || t.xidsqn tx_addr,
t.status,
t.start_time,
tbs.tablespace_name tbs_name,
round(t.used_ublk * tbs.block_size / 1048576, 2) undo_size_mb,
t.used_urec
from v$transaction t, v$session s, v$parameter p, dba_tablespaces tbs
where t.ses_addr = s.saddr
and p.name = 'undo_tablespace'
and p.value = tbs.tablespace_name
order by round(t.used_ublk * tbs.block_size / 1048576, 2) desc;
-----檢視回滾段的使用情況,哪個使用者正在佔用的回滾段最多:
SELECT s.sid,s.username,s.PROGRAM,s.MACHINE,u.name,t.used_ublk
FROM v$transaction t, v$rollstat r, v$rollname u, v$session s
WHERE s.taddr = t.addr
AND t.xidusn = r.usn
AND r.usn = u.usn
ORDER BY s.username;
-查詢回滾段的事務回退率
transaction rollbacks/(transaction rollbacks+user commits)
select name,value from v$sysstat where name in ('user commits','transaction rollbacks');
--查詢獲取回滾段資料的時候資料緩衝區中copy的資料塊的數量
select count(*) from x$bh where state=3;
--查詢在SGA中回滾段的塊的數量USN=n,則回滾段頭class為11+2n,回滾段塊為12+2n
select usn from v$rollstat;
select class,count(*) from x$bh where class>10 group by class;
--查詢資料庫的的回滾段情況
select segment_id,segment_name from dba_rollback_segs;
--指定使用某個回滾段
set transaction use rollback segment _SYSSMU4$
--查詢回滾段在使用,擴充套件,回縮的時候extent在迴圈的次數
select usn,wraps from v$rollstat;
--查詢回滾段收縮的情況
select usn,optsize,shrinks from v$rollstat;
--切換undo表空間到新的表空間(注意修改pfile或者spfile引數)
alter system set undo_tablespace=UNDO3 scope=both sid='oyy1a';
---建立undo表空間
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'E:ORACLEORA92ORCL9UNDOTBS02.DBF' size 11M reuse AUTOEXTEND ON;
---改變(Altering) an Undo Tablespace
Adding a datafile
Renaming a datafile
Bringing a datafile online or taking it offline
Beginning or ending an open backup on a datafile
---增加資料檔案
ALTER TABLESPACE UNDOTBS2
ADD DATAFILE 'E:ORACLEORA92ORCL9UNDOTBS03.DBF' size 2M AUTOEXTEND ON NEXT 1M
MAXSIZE UNLIMITED;
--drop undo表空間
DROP TABLESPACE UNDOTBS2; ---INCLUDING CONTENTS.
--不指定undo表空間
ALTER SYSTEM SET UNDO_TABLESPACE = '';
--設定retention值:
ALTER SYSTEM SET UNDO_RETENTION = 5;
select tablespace_name,status,sum(bytes)/1024/1024 "bytes(M)"
from dba_undo_extents
group by tablespace_name,status
order by tablespace_name;
select tablespace_name,status,blocks,sum(bytes)/1024/1024 "bytes(M)"
from dba_undo_extents
group by tablespace_name,status,blocks
order by tablespace_name;
檢視undo表空間使用的表空間下還有多少可以回退的空間,EXPIRED是可以會退的,ACTIVE是正在用的,UNEXPIRED是系統保留的和undo_retention=600有關
UNEXPIRED 和EXPIRED 是已使用的undo 表空間,其中expired 說明是已經過期的資料,也就是15分鐘(預設情況)以外的資料,以被覆蓋,可以認為是空閒的。
UNDO 表空間是會被重用的,只有當事務沒結束,或開了retention g rantee,或在undo_retention時間內不能被重用。
在undo_retention規定的時間內,資料都是有效的,過期後都會
當產生ORA-30036時,設定_smu_debug_mode=16384 來生產trace檔案供分析
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-1303535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Redo and UndoOracle Redo
- oracle undo分配規則Oracle
- Oracle OCP(48):UNDO TABLESPACEOracle
- oracle的redo和undoOracle
- 【UNDO】Oracle undo表空間使用率過高,因為一個查詢Oracle
- Oracle常見UNDO等待事件Oracle事件
- 關於oracle中的undoOracle
- 【REDO】Oracle redo undo 學習Oracle Redo
- 18_深入解析Oracle undo原理(2)_undo表空間使用率100%問題處理Oracle
- Oracle 面試寶典-UNDO篇Oracle面試
- Oracle 12c 新特性之臨時Undo--temp_undo_enabledOracle
- Oracle 12C R2新特性-本地UNDO模式(LOCAL_UNDO_ENABLED)Oracle模式
- 2.5.5 使用自動Undo管理: 建立 Undo 表空間
- 17_深入解析Oracle undo原理(1)_transactionOracle
- ORACLE線上切換undo表空間Oracle
- 【UNDO】Oracle系統回滾段說明Oracle
- undo truncate 導致qps下降分析
- Oracle切換undo表空間操作步驟Oracle
- 19_深入解析Oracle undo原理(3)_ktuxe詳解OracleUX
- 20_深入解析Oracle undo原理(4)_ktuxc詳解OracleUX
- oracle中undo表空間丟失處理方法Oracle
- Oracle 歸檔使用情況分析Oracle
- [異常等待事件latch undo global data]分析事件
- Oracle undo保留時間的幾個相關引數Oracle
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- 28、undo_1_2(undo引數、undo段、事務)
- Oracle 19c 線上縮減 UNDO 表空間 容量Oracle
- [20230227][20230109]Oracle Global Temporary Table ORA-01555 and Undo Retention.tOracle
- 轉:使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- Innodb undo之 undo結構簡析
- Oracle 無備份情況下undo檔案損壞處理Oracle
- oracle ocp 19c考題,科目082考試題-temporary undoOracle
- MySQL undoMySql
- Sqlserver沒有單獨的undo檔案,使用tempdb和redo log來存放undo資料SQLServer
- 【STACKX】Oracle core file分析利器STACKX 使用指南Oracle
- Innodb undo之 undo物理結構的初始化
- undo表空間使用率過高解決
- oracle v$sqlare 分析SQL語句使用資源情況OracleSQL
- 使用python進行Oracle資料庫效能趨勢分析PythonOracle資料庫