随笔 - 24  文章 - 1 评论 - 115 trackbacks - 0

管理撤消表空间

一、撤消表空间:用来保存操作的过程以及被操作的数据,并允许用户撤消对数据库所执行的操作。

撤消的目的和作用:

1.  事务的回滚

2.  事务的恢复

3.  读一致性

4.  闪回查询

撤消表空间的参数:

通过SHOW PARAMETER UNDO_命令来查询撤消有关的参数



1UNDO_MANAGEMENT 参数

指定表空间的管理方式,分为:AUTO(自动管理方式),MANUAL(手动管理方式)

该参数不是动态参数,所以必须通过

ALTER SYSETM SET UNDO_MANAGEMENT=MANUAL SCOPT=SPFILE

重新启动数据库后生效


2UNDO_TABLESPACE参数

指定撤消表空间的名称,使用AUTO时,必须创建一个撤消表空间。

只能有一个撤消表空间是活动的,

ALTER SYSTEM SET UNDO_TABLESPACE=WOODYUNDOTBS SCOPE=SPFILE

如果指定一个不存在的表空间的时候,启动数据库的时候将失败,此时需要将数据库启动到MOUNT状态,然后修改UNDO_TABLESPACE=UNDOTBS SCOPE=SPFILE然后重新启动即可。




3UNDO_RETENTION参数

指定已经提交的事务的撤消数据被覆盖之前保留多长时间。其目的:支持长查询和闪回查询。

撤消数据分类:
未提交的撤消数据:仍在支持一个活动的事务,且在使用ROLLBACK语句或执行事务恢复时要使用的撤消数据,不能不覆盖。

已提交未过期的撤消数据:不需要支持活动的事务,但需要被用来满足撤消保留时间的撤消数据,能被覆盖。

过期撤消数据:不需要支持活动的事务,已超过撤消保留时间的撤消数据,能被覆盖。

查看撤消表空间的使用情况。

SELECT BYTES/1024/1024 BYTE,MAXBYTES/1024/1024 MAX FROM

DBA_DATA_FILES WHERE TABLESPACE_NAME=’UNDOTBS’


可以通过V$undostat来查询最近产生的撤消数据的ORACLE块数,V$undostat10分钟产生一条记录,最多包含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
表明表空间设置过小.

posted on 2009-08-20 22:12 woody.wu 阅读(...) 评论(...) 编辑 收藏