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表空间数据文件终会达到上限。因此,采用第二中方案进行处理。可以使用一下脚本,交替替换undotbs1和undotbs2表空间的方式,可以快速解决问题。 (一)脚本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' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |