本文主要是介绍Oracle rac模式下undo表空间爆满的解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、确认对应实例的undo表空间
- 二、确认对应实例undo的文件位置
- 三、确认回滚段使用情况
- 四、检查undo segment状态
- 五、创建新的undo表空间并进行切换
- 六、等待原undo表空间segment状态变更为offline
- 七、删除原undo表空间以及数据文件
前言
一、确认对应实例的undo表空间
show parameter undo
二、确认对应实例undo的文件位置
select file_name, bytes / 1024 / 1024 / 1024
from dba_data_files
where tablespace_name like 'UNDOTBS%';
三、确认回滚段使用情况
#如果为空则证明该表空间可以被删除,否则要放其他时间处理尤其生产环境下。
select s.username, u.name
from gv$transaction t, gv$rollstat r, v$rollname u, gv$session s
where s.taddr = t.addr
and t.xidusn = r.usn
and r.usn = u.usn
order by s.username;
四、检查undo segment状态
select usn,xacts,status,rssize / 1024 / 1024,hwmsize / 1024 / 1024,shrinks
from v$rollstat
order by rssize;
五、创建新的undo表空间并进行切换
SQL> create pfile='/home/oracle/t1.txt' from spfile;ファイルが作成されました。SQL>
SQL>
SQL> create undo tablespace undotbs02 datafile '+DATA' size 10240m autoextend on next 10m;表領域が作成されました。SQL>
SQL> create undo tablespace undotbs01 datafile '+DATA' size 10240m autoextend on next 10m;表領域が作成されました。SQL>
SQL>
SQL> alter system set undo_tablespace=undotbs02 sid='cxldb2' scope=both;システムが変更されました。SQL>
SQL>
SQL> show parameter undoNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 10800
undo_tablespace string UNDOTBS02
SQL> ##inst_id=1
SQL>
SQL> show parameter undoNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 10800
undo_tablespace string UNDOTBS1
SQL>
SQL>
SQL> alter system set undo_tablespace=undotbs01 sid='cxldb1' scope=both;システムが変更されました。SQL>
SQL> show parameter undoNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 10800
undo_tablespace string UNDOTBS01
SQL>
六、等待原undo表空间segment状态变更为offline
select t.segment_name, t.tablespace_name, t.segment_id, t.status
from dba_rollback_segs t
where t.tablespace_name in ('UNDOTBS1','UNDOTBS2')
and t.status != 'OFFLINE';
七、删除原undo表空间以及数据文件
SQL> drop tablespace UNDOTBS1 including contents and datafiles;表領域が削除されました。SQL> drop tablespace UNDOTBS2 including contents and datafiles;表領域が削除されました。SQL>
这篇关于Oracle rac模式下undo表空间爆满的解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!