Oracle回滚(ROLLBACK)和撤销(UNDO)(三)

2014-11-24 16:08:15 · 作者: · 浏览: 6
UNDOTBS1 ONLINE
_SYSSMU5$ UNDOTBS1 ONLINE
_SYSSMU6$ UNDOTBS1 ONLINE
_SYSSMU7$ UNDOTBS1 ONLINE
_SYSSMU8$ UNDOTBS1 ONLINE
_SYSSMU9$ UNDOTBS1 ONLINE
_SYSSMU10$ UNDOTBS1 ONLINE
由上面的示例可知:
ROLLBACK 段: --与之前的版本兼容的回滚段
TYPE2 UNDO 段: --9i之后使用的撤销段
关于回滚,一个时刻仅能使用一种类段类型,即要么使用与以前版本兼容的回滚段,要么使用撤销段
事实上,在9i之后仅仅支持撤销段,从上面错误的提示即可证实
--查看DML语句产生的事务
SQL> SHOW USER;
USER is "SYS"
SQL> SELECT * FROM scott.emp WHERE ename = 'SCOTT';
EMPNO ENAME JOB MGR HIREDATE SALARY DEPTNO
---------- --------------- --------- ---------- --------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3500 20
SQL> UPDATE scott.emp SET sal = sal * 2 WHERE ename = 'SCOTT';
1 row updated.
SQL> SELECT addr,xidusn,status,start_time,used_ublk
2 FROM v$transaction;
ADDR XIDUSN STATUS START_TIME USED_UBLK
-------- ---------- ---------------- -------------------- ----------
2DA2B17C 9 ACTIVE 07/10/10 20:29:08 1
--查看当前哪些用户使用撤销段以及段的大小,启动时间,活动状态等
SQL> SELECT t.xidusn,t.start_time,t.used_ublk,t.status,
s.username,r.segment_name
FROM v$transaction t
JOIN v$session s
ON t.ses_addr = s.saddr
JOIN dba_rollback_segs r
ON r.segment_id = t.xidusn ;
XIDUSN START_TIME USED_UBLK STATUS USERNAME SEGMENT_NAME
---------- -------------------- ---------- ---------------- ------------------------------ -------------
9 07/10/10 20:29:08 1 ACTIVE SYS _SYSSMU9$
四、UNDO表空间的创建与管理
创建UNDO表空间
创建语法:
CREATE UNDO TABLESPACE tablespace_name DATAFILE '...' SIZE n
更多表空间的创建:
请参照:Oracle 表空间与数据文件
切换UNDO表空间
实例中允许多个UNDO表空间存在
可以从一个UNDO表空间切换到另外一个UNDO表空间
任一时刻只能有一个UNDO表空间被指定
使用ALTER SYSTEM SET undo_tablespace = undo_tablespace_name实现切换
删除UNDO表空间
DROP TABLESPACE undo_tablespace_name
任意实例的UNDO表空间在非活动状态可以删除
对于活动状态的UNDO表空间,应当先将切换到其它表空间,在所有事务完成后再删除该表空间
演示创建、切换及删除UNDO表空间
--查看当前系统中的表空间
SQL> SELECT file_name,tablespace_name FROM dba_data_files;
FILE_NAME TABLESPACE_NAME
------------------------------------------------------------ ------------------------------
/u01/app/oracle/oradata/orcl/tbs1_2.dbf TBS1
/u01/app/oracle/oradata/orcl/tbs1_1.dbf TBS1
/u01/app/oracle/oradata/orcl/example01.dbf EXAMPLE
/u01/app/oracle/oradata/orcl/users01.dbf USERS
/u01/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/orcl/system01.dbf SYSTEM
--创建一个新的UNDO表空间undo2
SQL> CR