Oracle rac模式下undo表空间爆满怎么办
前言
一、确认对应实例的undo表空间
1 | show parameter undo |
二、确认对应实例undo的文件位置
1 2 3 | select file_name, bytes / 1024 / 1024 / 1024 from dba_data_files where tablespace_name like 'UNDOTBS%' ; |
三、确认回滚段使用情况
#如果为空则证明该表空间可以被删除,否则要放其他时间处理尤其生产环境下。
1 2 3 4 5 6 | 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状态
1 2 3 4 5 6 7 8 | select usn, xacts, status, rssize / 1024 / 1024, hwmsize / 1024 / 1024, shrinks from v$rollstat order by rssize; |
五、创建新的undo表空间并进行切换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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 undo NAME 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 undo NAME 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 undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ temp_undo_enabled boolean FALSE undo_management string AUTO undo_retention integer 10800 undo_tablespace string UNDOTBS01 SQL> |
六、等待原undo表空间segment状态变更为offline
1 2 3 4 | 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表空间以及数据文件
1 2 3 4 5 6 7 8 9 | SQL> drop tablespace UNDOTBS1 including contents and datafiles; 表領域が削除されました。 SQL> drop tablespace UNDOTBS2 including contents and datafiles; 表領域が削除されました。 SQL> |