管理撤消表空间
一、撤消表空间:用来保存操作的过程以及被操作的数据,并允许用户撤消对数据库所执行的操作。
撤消的目的和作用:
1. 事务的回滚
2. 事务的恢复
3. 读一致性
4. 闪回查询
撤消表空间的参数:
通过SHOW PARAMETER UNDO_命令来查询撤消有关的参数
1.UNDO_MANAGEMENT 参数
指定表空间的管理方式,分为:AUTO(自动管理方式),MANUAL(手动管理方式)
该参数不是动态参数,所以必须通过
ALTER SYSETM SET UNDO_MANAGEMENT=MANUAL SCOPT=SPFILE
重新启动数据库后生效
2.UNDO_TABLESPACE参数
指定撤消表空间的名称,使用AUTO时,必须创建一个撤消表空间。
只能有一个撤消表空间是活动的,
ALTER SYSTEM SET UNDO_TABLESPACE=WOODYUNDOTBS SCOPE=SPFILE
如果指定一个不存在的表空间的时候,启动数据库的时候将失败,此时需要将数据库启动到MOUNT状态,然后修改UNDO_TABLESPACE=UNDOTBS SCOPE=SPFILE然后重新启动即可。
3.UNDO_RETENTION参数
指定已经提交的事务的撤消数据被覆盖之前保留多长时间。其目的:支持长查询和闪回查询。
撤消数据分类:
未提交的撤消数据:仍在支持一个活动的事务,且在使用ROLLBACK语句或执行事务恢复时要使用的撤消数据,不能不覆盖。
已提交未过期的撤消数据:不需要支持活动的事务,但需要被用来满足撤消保留时间的撤消数据,能被覆盖。
过期撤消数据:不需要支持活动的事务,已超过撤消保留时间的撤消数据,能被覆盖。
查看撤消表空间的使用情况。
SELECT BYTES/1024/1024 BYTE,MAXBYTES/1024/1024 MAX FROM
DBA_DATA_FILES WHERE TABLESPACE_NAME=’UNDOTBS’
可以通过V$undostat来查询最近产生的撤消数据的ORACLE块数,V$undostat每10分钟产生一条记录,最多包含144条记录。
SELECT TO_CHAR(END_TIME,'HH24:mi:ss') etime,
to_char(begin_time,'hh24:mi:ss') btime,
(end_time-begin_time)*24*60*60 ttime,
undoblks
from v$undostat
二、查询和监控撤消的有关信息
视图 |
作用 |
V$undostat |
包含所有撤消表空间的统计信息, 可用于监控和调整撤消表空间的。DBA可以利用该视图来估算撤消表空间的大小, ORACLE利用其完成对撤消表空间的自动管理 |
V$rollstat |
包含撤消表空间各个撤消段的信息 |
V$transcation |
包含各个事务所使用的撤消段信息 |
Dba_undo_extents |
包含撤消表空间的每个区所对应的事务的提交时间 |
1. 撤消表空间以及数据文件的信息
select a.tablespace_name tbs,
a.file_name,a.blocks,a.bytes/1024/1024 bt
,a.maxbytes/1024/1024 max,
a.autoextensible
from dba_data_files a,dba_tablespaces b
where a.tablespace_name=b.tablespace_name
2.撤消段的统计信息
select a.name,b.xacts,b.writes,b.extents
from v$rollname a ,v$rollstat b
where a.usn=b.usn
实际中可能有如下错误:
ORA-30036
表明表空间设置过小.