undo 表空间
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1;
show parameter undo_tablespace
SELECT a.name,b.status FROM v$rollname a, v$rollstat b WHERE a.name IN ( SELECT segment_name FROM dba_segments WHERE tablespace_name = 'UNDOTBS2' ) AND a.usn = b.usn;(查看当前Undo表空间)
drop tablespace undotbs2 including contents and datafiles;
select tablespace_name from dba_tablespaces where contents='UNDO';
查看所有undo tablespace
drop tablespace undotbs1 including contents and datafiles;
删除undo tablespace
SELECT a.name,b.status FROM v$rollname a, v$rollstat b WHERE a.name IN ( SELECT segment_name FROM dba_segments WHERE tablespace_name = 'UNDOTBS1' ) AND a.usn = b.usn;
查看旧的undo文件是否还在使用.
更换temp表空间(以前temp现在改为temp2)
alter database default temporary tablespace temp2;
查询新建的temp表空间是否在使用
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
drop tablespace temp including contents and datafiles;
UNDO表空间用于存放UNDO数据,当执行DML操作(insert、update、delete)的时候,oracle会将这些操作的旧数据写入到UNDO段。
UNDO数据也称为回滚数据,用于确保数据的一致性。作用包括:
1、回退事务
2、读一致性
3、事务恢复
4、闪回查询
9i开始,管理UNDO数据可以使用UNDO表空间,也可以使用回滚段。10g开始,oracle已经放弃使用回滚段。
用于undo管理的参数:
1、UNDO_MANAGEMENT
用于指定undo数据的管理方式。如果使用自动管理,必须设置为AUTO;如果手动管理,必须设置为MANUAL。
使用自动管理的时候,oracle会使用UNDO表空间管理UNDO数据;使用手动管理时,oracle会使用回滚段管理UNDO数据。
如果使用自动管理模式,必须建立UNDO表空间,并且配置UNDO_TABLESPACE参数,否则oracle会使用SYSTEM回滚段存放UNDO纪录,并在警告日志中纪录提示。
2、UNDO_TABLESPACE
用于指定例程所要使用的UNDO表空间。设置的时候,必须保证该表空间存在,否则会导致例程启动失败。
使用RAC的时候,因为一个UNDO不能由多个例程同时使用,所以必须为每个例程配置一个独立的UNDO表空间。
3、UNDO_RETENTION
用于控制UNDO数据的最大保留时间,其默认值为900秒。从9i开始,通过配置该初始化参数,可以指定UNDO数据的保留时间,从而确定闪回查询可以查看到的最早时间点。
建立UNDO表空间
1、使用CREATE DATABASE命令建立UNDO表空间
如果使用的是UNDO管理模式,但是没有指定UNDO TABLESPACE,那么建立数据库的时候oracle会自动生成名称为SYS_UNDOTBS的UNDO表空间。
2、使用CREATE UNDO TABLESPACE 命令建立UNDO表空间
建立数据库以后,可以使用该命令建立UNDO表空间。
修改UNDO表空间
当事务用尽UNDO表空间后,增加数据文件:
ALTER TABLESPACE ... ADD DATAFILE;
当UNDO表空间所在磁盘填满时,移动数据文件到其他磁盘:
ALTER TABLESPACE ...RENAME DATAFILE;
当在OPEN状态下移动UNDO表空间时,可以使表空间脱机/联机:
ALTER TABLESPACE ... OFFLINE/ONLINE;
当数据库处于归档模式时,备份UNDO表空间:
ALTER TABLESPACE ... BEGIN BACKUP/END BACKUP
切换UNDO表空间
启动并打开oracle数据库后,同一时刻只能使用一个UNDO表空间。可以切换UNDO表空间:
ALTER SYSTEM SET undo_tablespace=undotbs02;
删除UNDO表空间
当前使用的UNDO表空间不能被删除,如果要删除当前实例使用的UNDO,需要先切换,然后删除:
DROP TABLESPACE undotbs01 including contents and datafiles;
监控UNDO表空间的使用:
1、确定当前正在使用的undo表空间:
show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ -------------------------------- ------------------------------
undo_tablespace string UNDOTBS1
2、显示数据库的所有UNDO表空间:
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';
TABLESPACE_NAME
------------------------------
UNDOTBS1
3、显示UNDO表空间统计信息:
SQL> select to_char(begin_time,'hh24:mi:ss') begin_time,to_char(end_time,'hh24:mi:ss') end_time,undoblks from v$undostat where rownum < 4;
BEGIN_TIME END_TIME UNDOBLKS
--------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
14:52:52 14:54:56 1
14:42:52 14:52:52 61
14:32:52 14:42:52 27
4、显示UNDO段统计信息:
使用自动管理模式时,oracle会在UNDO表空间上自动建立10个UNDO段。通过查询动态性能视图V$ROLLNAME,可以显示所有联机UNDO的名称;通过查询动态性能视图V$ROLLSTAT可以显示UNDO段的统计信息。
SQL> select a.name,b.xacts,b.writes,b.extents from v$rollname a,v$rollstat b where a.usn = b.usn;
NAME XACTS WRITES EXTENTS
------------------------------ ---------- ---------- ----------
SYSTEM 0 176730 6
_SYSSMU1$ 0 524055286 6
_SYSSMU2$ 0 555250470 3
_SYSSMU3$ 0 1477369722 6
_SYSSMU4$ 0 281773370 5
_SYSSMU5$ 0 149888652 2
_SYSSMU6$ 0 101947936 2
_SYSSMU7$ 0 158121686 2
_SYSSMU8$ 0 203385052 3
_SYSSMU9$ 0 84385448 3
_SYSSMU10$ 0 426643090 4
xacts用于标示undo段所包含的活动事务个数,writes用于标示undo段上所写入的字节数,extents用于标示undo段的区个数。
5、显示活动事务信息:
SQL> select a.username,b.name,c.used_ublk from v$session a,v$rollname b,v$transaction c where a.saddr=c.ses_addr and b.usn = c.xidusn;
6、显示UNDO区信息:
SQL> select extent_id,bytes,status from dba_undo_extents where segment_name='_SYSSMU10$';
EXTENT_ID BYTES STATUS
---------- ---------- ---------
0 65536 UNEXPIRED
1 65536 UNEXPIRED
2 1048576 EXPIRED
3 1048576 UNEXPIRED
分享到:
相关推荐
oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。
比较深入浅出的描述了基于oracle10g/11g的UNDO表空间的管理
oracle 收缩undo表空间,需要收缩Undo表空间时特别有用。
演示如何收缩Oracle数据库的undo表空间
Oracle释放过度使用的Undo表空间,脚本
地震前兆Oracle数据库UNDO表空间持续增长修复.pdf
oracle 9i UNDO表空间数据文件丢失恢复得全过程。。
ORACLE的UNDO表空间
一定要意识到,如果 undo 表空间中存在空间压力时,我们不保证前镜像一定会保留这么长时间。 因此,以下公式可用于计算佳 undo 表空间大小: 从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在...
UNDO表空间用来存放改变前的旧值。里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。...
Oracle中,当Temp和Undo表空间无限增大时,回收这部分空间就是个问题
Oracle 12c中的表空间管理、用户和角色、临时Undo
undo表空间恢复
undo 表空间利用率 处理 事务 回滚等介绍 以及如何切换undo表空间
oracle 数据库的 undo表空间管理 全面分析介绍
Oracle 9i数据库中自动Undo表空间管理.pdf
oracle数据库 关键表空间undo 的详细讲解 功能 和一些优势
主要介绍了Oracle创建新undo表空间最佳实践(包含段检查),非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Oracle Undo学习资料,对Undo的介绍有利于对回滚和Undo表空间有一个比较清晰地认识
甲骨论-08-Undo表空间管理 本章详细介绍了undo表空间的工作原理以及与undo相关的数据字典