管理还原段
在oracle 9i 之后提供了两种方法来管理还原数据
自动的还原数据管理:oracle 自动管理还原段的创建、分配和优化
手动的还原数据管理:oracle 手动管理还原段的创建、分配和优化
在oracle 数据库中,当某个进程修改数据时,oracle 首先将它的原始值存入到一个还原段中
Oracle 使用还原段的目的有三个
事务回滚:当操作了一些DML 语句之后,要退回原有的情况,此时oracle 就会将还原段中的原始数据回写到原来的数据行中
事务恢复:当事务在运行期间实例崩溃了,则当数据库再次打开时就要还原所有没有提交的变化
保证数据的读的一致性:当某些事务改变了未提交,其他用户看不到其变化
还原段的类型:
系统还原段-仅供系统表空间中的对象变化所有
非系统还原段-仅供其他表空间中的对象变化所有
自动管理还原数据二个参数
Undo_management –说明系统是使用auto 还是manual
Undo_tablespace –说明系统使用那个还原表空间 , alter system set undo_tablespace = undotbs1
用命令查看还原数据的管理
Col name for a30 , Col value for a50
Select name, value from v$parameter where name like ‘%undo%’
还原表空间的创建与维护
Create undo tablespace lc_undo datafile ‘e:lc367lc_undo.dbf’ size 20m
用此查看 Select name, value,contents from v$parameter where name like ‘%undo%’
动态修改还原表空间
修改:另增,Alter tablespace lc_undo add datafile ‘e:lc367lc1_undo.dbf ‘ size 25m
查看:Set line 120 col file_name for a40 , col tablespace_name for a15
Select file_id, file_name, tablespace_name, bytes/1024/1024 mb from dba_data_files where tablespace_name like ‘lc%’
设置空间自动扩展 Alter database datafile ‘ ‘ autoextend on ;
查看Select file_id, file_name, tablespace_name, autoextensible from dba_data_files where tablespace_name like ‘lc%’
还原表空间之间的切换
Alter system set undo_tablespace = #### 切换成其他的表空间
切换后查看Select name, value from v$parameter where name like ‘%undo%’
删除还原表空间
无法删除当前正在使用的还原表空间,删除方法:
切换到一个新的还原表空间,等所有当前事务完成后删除该还原表空间
参数介绍:
1) Undo_retention 明确来说 还原数据在事务提交后至少要保留的时间,
动态参数 alter system set undo_retention = 900
2) undo_suppress_errors ,此参数如果被设为true ,那么在还原数据管理的自动模式中试图执行手动操作时将不显示错误信息。动态参数
alter session set undo_suppress_errors=true