微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle快速替换UNDO表空间方法

UNDO表空间不够用,有两种处理方法

1、扩大表空间大小;

2、创建新的UNDO表空间,删除原来的

一、初步操作

确认UNDO表空间名称

select name from v$tablespace;

检查数据库UNDO表空间占用空间情况以及数据文件存放位置;

select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';

二、扩大UNDO表空间

alter database UNDOTBS1datafile '/opt/oracle/oradata/inms/undotbs02.dbf' resize 4000M;

三、创建新的UNDO表空间,删除原来的

1、创建新的UNDO表空间,并设置自动扩展参数;

create undo tablespace undotbs2 datafile '/oradata/oradata/ddptest/UNDOTBS1.dbf' size 2 1000m reuse autoextend on next 800m maxsize unlimited;

2、动态更改spfile配置文件

alter system set undo_tablespace=undotbs2 scope=both;

3删除原有的UNDO表空间;

drop tablespace undotbs1 including contents;

4、确认删除是否成功;

select name from v$tablespace;

5、确定$ORACLE_HOME/dbs/spfileoinms.ora内容是否发生变更:

$more spfileoinms.ora

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS2'

如果没有发生变更请执行如下语句:

sql> create pfile from spfile;

File created.

6删除UNDO表空间的数据文件,其文件名为步骤中执行的结果。

#rm $ORACLE_BASE/oradata/$ORACLE_SID/undotbs01.dbf

四、结论

根据实际情况,采用扩大undo表空间的方式只能支撑一段时间。运行一段时间之后,undo表空间数据文件终会达到上限。因此,采用第二中方案进行处理。可以使用一下脚本,交替替换undotbs1undotbs2表空间的方式,可以快速解决问题。

(一)脚本1:用undotbs1替换undotbs2表空间

create undo tablespace undotbs1 datafile '/u01/oracle/oradata/orcl/UNDOTBS1.dbf' size 512m reuse autoextend on next 512m maxsize unlimited;

alter system set undo_tablespace=undotbs1 scope=both;

drop tablespace undotbs2 including contents;

rm '/u01/oracle/oradata/orcl/UNDOTBS2.dbf'

(二)脚本2:用undotbs2替换undotbs1表空间

create undo tablespace undotbs2datafile '/u01/oracle/oradata/orcl/UNDOTBS2.dbf' size 512m reuse autoextend on next 512m maxsize unlimited;

alter system set undo_tablespace=undotbs2scope=both;

drop tablespace undotbs1including contents;

rm '/u01/oracle/oradata/orcl/UNDOTBS1.dbf'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐