1. 程式人生 > >Oracle11g溫習-第十一章:管理undo

Oracle11g溫習-第十一章:管理undo

undo 大小 not table set lsp 星期 查看 reat

2013年4月27日 星期六

10:40

1undo tablespace 功能

undo tablespace 功能:用來存放從datafiles 讀出的數據塊舊的鏡像

1) 回滾事務:rollback

2) 讀一致性:正在做DML操作的數據塊,在沒有提交前,其他用戶不能讀,其他用戶讀undo裏面的數據塊信息

3) 事務的恢復:instance recover (undo -------->rollback)

4) 倒序查詢flashback query

flashback table

2undo 的管理模式

1) manaual 手工:roll segment

2) auto 自動: undo tablespace ( init parameter :undo_management = auto) ,自動創建undo段

3undo 表空間管理

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 參數

SYS @ prod > show parameter undo;

NAME TYPE VALUE

------------------------------------ --------------------------------- ------------------------------

undo_management string AUTO

undo_retention integer 900

undo_tablespace string UNDOTBS

——undo_retention 設置當事務提交後,undo 數據塊在undo tablespace空間未使用完之前的的保留時間】

SYS @ prod > alter system set undo_retention=600;

SYS @ prod > show parameter undo

NAME TYPE VALUE

------------------------------------ --------------------------------- ------------------------------

undo_management string AUTO

undo_retention integer 600

undo_tablespace string UNDOTBS

SYS @ prod > Alter tablespace undotbs1 retention guarantee;【保證在retention 期間不允許被覆蓋】

SYS @ prod > Alter tablespace undotbs1 retention noguarantee;【想禁止undo表空間retention guarantee

6)undo 表空間的大小

1) undo_retention

2) undo block /per second

3) UNDO BLOCK SIZE

4undo 信息的查詢

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

SYS @ prod > desc v$rollname; 【查看當前的回滾段】

——【默認system有一個undo segment,undo tablespace 會被分配10個undo segment】

SYS @ prod > select * from v$rollname;

USN NAME

---------- ----------

0 SYSTEM

11 _SYSSMU11$

12 _SYSSMU12$

13 _SYSSMU13$

14 _SYSSMU14$

15 _SYSSMU15$

16 _SYSSMU16$

17 _SYSSMU17$

18 _SYSSMU18$

19 _SYSSMU19$

20 _SYSSMU20$


SYS @ prod > select usn,extents,writes,xacts,status from v$rollstat; 【查看回滾段的狀態

USN EXTENTS WRITES XACTS STATUS

---------- ---------- ---------- ---------- ---------------

0 6 5560 0 ONLINE

11 10 529954 0 ONLINE

12 17 1344804 0 ONLINE

13 16 800720 0 ONLINE

14 27 11447082 1 ONLINE

15 17 1033468 0 ONLINE

16 6 307764 0 ONLINE

17 15 734590 0 ONLINE

18 8 398340 0 ONLINE

19 16 785134 0 ONLINE

20 8 407692 0 ONLINE

SYS @ prod > select a.sid, a.serial#, a.username, b.xidusn, xidslot, b.ubablk, b.status, c.usn, c.name, d.extents, d.writes, d.xacts

from v$session a,v$transaction b,v$rollname c ,v$rollstat d

where a.saddr=b.ses_addr and b.xidusn=c.usn and c.usn=d.usn

SID SERIAL# USERNAME XIDUSN XIDSLOT UBABLK STATUS USN NAME EXTENTS WRITES XACTS

---------- ---------- ------ ---------- ---------- ---------- ------- ---------- ---------- ---------- ---------- ------------ ---------- ---------- ------------ ----------

147 54 SCOTT 14 22 2595 ACTIVE 14 _SYSSMU14$ 27 11447082


【查看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