早上的时候发现RAC 的OGG备库空间告警,达到86%,上去服务器发现,原来是undo有点大,已经到了19G.
ps: 历史原因,原本这个库是测试库,之前安装数据库的人就没有多认真去规划, 直接安装在1个50G的分区,后面需要
做RAC备库的时候,再外挂了一个600G的盘过来,只是将存业务数据的表空间迁移到600G的盘,undo,redo,控制文件等还留在
50G的分区,因此才有了UNDO增长到19G就告警的情况出现。
我们知道,oracle不管在什么情况下,虽然都只能使用1个undo表空间,但是它有另外1个特点,就是多个undo表空间之间可以在线
切换,不用像迁移其他的dbf数据文件时,需要停库。
首先,新建一个undo 表空间,路径放到600G的磁盘。
create undo tablespace undotbs2 datafile '/home/oracle/oradata/UNDOTBS2.dbf' size 1000m reuse autoextend on;
切换undo表空间
alter system set undo_tablespace=undotbs2 scope=both;
稍微确认下,原本的undo表空间是否已经offline.
select segment_name,owner,tablespace_name,status from dba_rollback_segs where tablespace_name='UNDOTBS1'
切换完成之后,就可以直接删除原本的undo表空间了
drop tablespace UNDOTBS1 including contents;
最后回到操作系统,将原本的undotbs01.dbf 删除
rm -rf /u01/app/oradata/xlsbackdb/undotbs01.dbf
到这里,undo表空间就迁移完成了。
PS:
最后生成一下 pfile
create pfile='/home/oracle/pfile_001.ora' from spfile;
看下参数是否已经同步到配置文件了。
看下pfile_001.ora,基本在最后一行
*.undo_tablespace='UNDOTBS2'