UNDO表空间用于存放UNDO数据,当执行DML操作(insert、update、delete)的时候,oracle会将这些操作的旧数据写入到UNDO段。 UNDO数据也称为回滚数据,用于确保数据的一致性。作用包括: ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆ 一个undo_segment <<=============>> 多个undo_block ☆ ☆一个undo_segment <<==============>> 多个transaction ☆ ☆一个transaction <<==============>> 一个undo_block ☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ undo管理的参数: 1、UNDO_MANAGEMENT 用于指定undo数据的管理方式。如果使用自动管理,必须设置为AUTO;如果手动管理,必须设置为MANUAL。 使用自动管理的时候,oracle会使用UNDO表空间管理UNDO数据;使用手动管理时,oracle会使用回滚段管理UNDO数据。 2、UNDO_TABLESPACE 用于指定例程所要使用的UNDO表空间。设置的时候,必须保证该表空间存在,否则会导致例程启动失败。 使用RAC的时候,因为一个UNDO不能由多个例程同时使用,所以必须为每个例程配置一个独立的UNDO表空间。 3、UNDO_RETENTION 用于控制UNDO数据的最大保留时间,其默认值为900秒。 即:一个transaction所属的undo_block,在undo_tablespace保留最长的时间是900秒。 (必须保存900秒后才能被覆盖) SQL>Alter system set undo_retention=n; =================================================================== ★UNDO表空间和普通表空间的管理差不多★ 建立UNDO表空间 1、使用CREATE DATABASE命令建立UNDO表空间 如果使用的是UNDO管理模式,但是没有指定UNDO TABLESPACE,那么建立数据库的时候oracle会自动生成名称为SYS_UNDOTBS的UNDO表空间。 SQL>create database db01 . . . undo tablespace undo1 datafile '/u01/oradata/undo1db01.dbf' size 20M autoextend on; 2、使用CREATE UNDO TABLESPACE 命令建立UNDO表空间 建立数据库以后,可以使用该命令建立UNDO表空间。 SQL>create undo tablespace undo1 datafile '/u01/oradata/undo1db01.dbf' size 20M; 修改UNDO表空间 当事务用尽UNDO表空间后,增加数据文件 SQL>Alter tablespace undotbs add datafile '/u01/oradata/undotbs.dbf' size 30M autoextend on; 切换UNDO表空间 启动并打开oracle数据库后,同一时刻只能使用一个UNDO表空间。可以切换UNDO表空间: SQL>ALTER SYSTEM SET undo_tablespace=undotbs02; 删除UNDO表空间 当前使用的UNDO表空间不能被删除,如果要删除当前实例使用的UNDO,需要先切换,然后删除: SQL>DROP TABLESPACE undotbs01; =========================================================================== 视图: v$transaction 当前活动的transaction used_ublk 一个transaction用了多少block v$undostat undo 表空间的历史信息 end_time begin_time undoblks 结束时间 开始时间 这段时间所需要的undo_block ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 计算undo表空间需要的大小 1.transaction一秒钟所需要的最多块数 ①select max(undoblks/((end_time - begin_time)*24*3600)) from v$undostat 2.show parameter undo ②参数undo_retention 3.show parameter block ③参数db_block_size undo表空间需要的最小空间=①×②×③ |
|
来自: luo1854 > 《Oracle 学习》