Oracle11g溫習-第十一章:管理undo
2013年4月27日 星期六
10:40
1、undo tablespace 功能 |
|
undo tablespace 功能:用來存放從datafiles 讀出的數據塊舊的鏡像
【 1) 回滾事務:rollback 2) 讀一致性:正在做DML操作的數據塊,在沒有提交前,其他用戶不能讀,其他用戶讀undo裏面的數據塊信息 3) 事務的恢復:instance recover (undo -------->rollback) 4) 倒序查詢:flashback query 】 |
|
2、undo 的管理模式 |
|
1) manaual 手工:roll segment 2) auto 自動: undo tablespace ( init parameter :undo_management = auto) ,自動創建undo段 |
|
3、undo 表空間管理 |
|
1)【建立新的undo表空間(處於active狀態的undo tablespace 不能offline 和 drop),可以建立多個undo表空間,但一個時刻只有一個處於active 】
SYS @ prod > create undo tablespace undotbs2 datafile ‘/u01/app/oracle/oradata/orcl/undotbs02.dbf‘ size 100m autoextend on next 10m maxsize 500m; 創建自動擴展的undo表空間
Tablespace created.
SYS @ prod > select tablespace_name,status,contents from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- --------- SYSTEM ONLINE PERMANENT UNDOTBS ONLINE UNDO SYSAUX ONLINE PERMANENT TEMP ONLINE TEMPORARY USERS ONLINE PERMANENT UNDOTBS02 ONLINE UNDO
2)查看當前正在使用的undo tablespace
SYS @ prod > show parameter undo
NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS
3)切換undo表空間
SYS @ prod >alter system set undo_tablespace=undotbs2;
System altered.
SYS @ prod > show parameter undo
NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS02
4)刪除undo tablespace
SYS @ prod >drop tablespace undotbs including contents and datafiles;
Tablespace dropped.
5) undo_retention 參數
6)undo 表空間的大小 1) undo_retention 2) undo block /per second 3) UNDO BLOCK SIZE |
|
4、undo 信息的查詢 |
|
1) v$session 【查看用戶建立的session】 2) v$transaction 【當前的事務】 3) v$rollname 【回滾段的名稱】 4) v$rollstat 【回滾段的狀態】
SSYS @ prod > desc v$session;
SYS @ prod > select username,sid,serial# from v$session where username is not null;
USERNAME SID SERIAL# ------------------------------ ---------- ---------- SCOTT 141 4 SYS 159 3
SYS @ prod > desc v$transaction ;
Name Null? Type ----------------------------------------- -------- ---------------------------- ADDR RAW(4) 事務處理狀態對象的地址 XIDUSN NUMBER ——xidusn :undo segment 的id 撤消段的號 XIDSLOT NUMBER ——xidslot:事務槽的id 插曹號 XIDSQN NUMBER 序列號 UBAFIL NUMBER 撤消塊地址(UBA)的文件號 UBABLK NUMBER UBA 塊號 UBASQN NUMBER UBA 序列號 UBAREC NUMBER UBA 記錄號 STATUS VARCHAR2(16) 狀態號 START_TIME VARCHAR2(20) 起始時間(掛鐘) START_SCNB NUMBER 起始系統更改號(SCN)的基點 START_SCNW NUMBER 起始SCN 包 START_UEXT NUMBER 起始區號 START_UBAFIL NUMBER 起始UBA 文件號 START_UBABLK NUMBER 起始UBA 塊號 START_UBASQN NUMBER 起始UBA 序列號 START_UBAREC NUMBER 起始記錄號 SES_ADDR RAW(4) ——SES_ADDR 當前會話的地址 FLAG NUMBER 標誌位 SPACE VARCHAR2(3) 如果為空間事務處理,則為Yes RECURSIVE VARCHAR2(3) 如果為遞歸事務處理,則為Yes NOUNDO VARCHAR2(3) 如果為撤消事務處理,則為Yes PTX VARCHAR2(3) 如果為並行事務處理,則為Yes,否則設為No NAME VARCHAR2(256) PRV_XIDUSN NUMBER 上一個事務處理的撤消段的號 PRV_XIDSLT NUMBER 上一個事務處理的插槽號 PRV_XIDSQN NUMBER 上一個事務處理的序列號 PTX_XIDUSN NUMBER 父級XID 的回退段號 PTX_XIDSLT NUMBER 父級XID 的插曹號 PTX_XIDSQN NUMBER 父級XID 的序列號 DSCN-B NUMBER 獨立的SCN 基點 DSCN-W NUMBER 獨立的SCN 包 USED_UBLK NUMBER 已用的撤消塊數量 USED_UREC NUMBER 已用的撤消記錄數量 LOG_IO NUMBER 邏輯I/O PHY_IO NUMBER 物理I/O CR_GET NUMBER 一致性獲取 CR_CHANGE NUMBER 一致性更改 START_DATE DATE DSCN_BASE NUMBER DSCN_WRAP NUMBER START_SCN NUMBER DEPENDENT_SCN NUMBER XID RAW(8) PRV_XID RAW(8) PTX_XID RAW(8) SYS @ prod > select a.SID,a.SERIAL#,a.USERNAME,b.xidusn,xidslot,b.ubablk,b.status,b.name from v$session a, v$transaction b where a.saddr=b.ses_addr;
SID SERIAL# USERNAME XIDUSN XIDSLOT UBABLK STATUS NAME ---------- ---------- -------------------- ---------- ---------- ---------- ---------------- ---------- 144 7 SCOTT 15 26 76 ACTIVE
【查看undo segment 數據塊狀態 (dba_undo_EXTENTS)】
SYS @ prod > insert into t01 values (6) ;
SYS @ prod > insert into t01 values (7) ;
SYS @ prod > create table emp1 as select * from scott.emp;
SYS @ prod > insert into emp1 select * from emp1;
SYS @ prod > select segment_name,tablespace_name,extent_id,file_id ,bytes/1024 ,status from dba_undo_extents where status like ‘%ACTIVE%‘; 【查看數據庫中各個undo段的狀態】
SEGMENT_NAME TABLESPACE_NAME EXTENT_ID FILE_ID BYTES/1024 STATUS ------------------------------ ------------------------------ ---------- ---------- ---------- ----------- ---------- ---------- ---------- _SYSSMU18$ UNDO_TBS 2 7 64 ACTIVE _SYSSMU15$ UNDO_TBS 0 7 64 ACTIVE
SYS @ prod > COMMIT;
Commit complete.
SYS @ prod > /
SEGMENT_NAME TABLESPACE_NAME EXTENT_ID FILE_ID BYTES/1024 STATUS ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- _SYSSMU15$ UNDO_TBS 0 7 64 ACTIVE
【查看undo tablespace 統計信息v$undostat;】
SYS @ prod > select BEGIN_TIME,end_time,undotsn,undoblks,ACTIVEBLKS,EXPIREDBLKS,MAXQUERYID from v$undostat;
BEGIN_TIME END_TIME UNDOTSN UNDOBLKS ACTIVEBLKS EXPIREDBLKS MAXQUERYID ------------------- ------------------- ---------- ---------- ---------- ----------- ------------- 2011-08-08 10:22:35 2011-08-08 10:23:20 8 0 160 760 2011-08-08 10:12:35 2011-08-08 10:22:35 8 6 160 760 2011-08-08 10:02:35 2011-08-08 10:12:35 8 589 160 8 2011-08-08 09:52:35 2011-08-08 10:02:35 8 179 160 8 2011-08-08 09:42:35 2011-08-08 09:52:35 8 19 160 0 2011-08-08 09:32:35 2011-08-08 09:42:35 1 7 160 2840 2011-08-08 09:22:35 2011-08-08 09:32:35 1 2 160 2848 2011-08-08 09:12:35 2011-08-08 09:22:35 1 0 0 0 2011-08-08 09:02:35 2011-08-08 09:12:35 1 3 0 0
SYS @ prod > select segment_name,tablespace_name ,segment_id,file_id ,status from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID FILE_ID STATUS ------------------------------ ------------------------------ ---------- ---------- ---------------- SYSTEM SYSTEM 0 1 ONLINE _SYSSMU1$ RTBS 1 2 ONLINE _SYSSMU2$ RTBS 2 2 ONLINE _SYSSMU3$ RTBS 3 2 ONLINE _SYSSMU4$ RTBS 4 2 ONLINE _SYSSMU5$ RTBS 5 2 ONLINE _SYSSMU6$ RTBS 6 2 ONLINE _SYSSMU7$ RTBS 7 2 ONLINE _SYSSMU8$ RTBS 8 2 ONLINE _SYSSMU9$ RTBS 9 2 ONLINE _SYSSMU10$ RTBS 10 2 ONLINE |
Oracle11g溫習-第十一章:管理undo