度量快速开发平台-专业、快速的软件定制快开平台

标题: 清理UNDO表空间 [打印本页]

作者: 张兴康    时间: 2020-4-6 17:56
标题: 清理UNDO表空间
在无用户连接的状况下操作,最好在清理之前重启一下数据库

#重启数据库
sqlplus '/as sysdba'
SQL>shutdown immediate
SQL>startup
#创建一个UNDO表空间undotbs2,用作临时替换
SQL>create undo tablespace undotbs2 datafile '/u2/oradb/oradata/topprod/undotbs02.dbf' size 10M autoextend on next 10M;
#将系统UNDO表空间指向undotbs2
SQL>alter system set undo_tablespace=undotbs2 scope=both;
#确保所有在UNDOTBS1的undo segment都已offline
SQL> select SEGMENT_NAME ,STATUS ,TABLESPACE_NAME from dba_rollback_segs;
#删除原来的UNDO表空间undotbs1
SQL>drop tablespace undotbs1 including contents and datafiles;
#创建新的临时表空间undotbs1
SQL>create undo tablespace undotbs1 datafile '/u2/oradb/oradata/topprod/undotbs01.dbf' size 4096M;
#将系统UNDO表空间指回undotbs1
SQL>alter system set undo_tablespace=undotbs1 scope=both;
#删除UNDO表空间undotbs2
SQL>drop tablespace undotbs2 including contents and datafiles;


作者: 王爱东    时间: 2020-4-6 18:24
undo表空间是干什么的呢?
作者: 王爱东    时间: 2020-4-6 18:24
系统运行很久的话,undo就可能很大。
作者: 万望    时间: 2020-4-7 18:30
undo表空间是Oracle特有的概念。undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值。在rollback,实例恢复(前滚),一致性读CR块的构造时会使用到undo信息。由于undo的引入,从而Oracle的select语句实现一致性读时,不需要任何锁。
作者: 万望    时间: 2020-4-7 18:30
undo表空间和其它表空间有很多类似的地方:undo数据块也会被读到buffer cache缓存起来,修改时也会产生redo log,数据也会写回到undo表空间的磁盘上。所以崩溃后,undo块的buffer cache也会恢复过来。
作者: 陈晓龙    时间: 2020-4-9 17:24
万望 发表于 2016-5-7 18:30
undo表空间是Oracle特有的概念。undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo ...

好专业哦!
作者: 张兴康    时间: 2020-4-9 17:56
万望 发表于 2016-5-7 18:30
undo表空间和其它表空间有很多类似的地方:undo数据块也会被读到buffer cache缓存起来,修改时也会产生redo ...

膜拜中




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2