Useful links
Undo tablespace
The simplest way to reclaim space from the undo tablespace is to create a new undo tablespace:
CREATE UNDO TABLESPACE undotbs2 DATAFILE '/u01/app/oracle/oradata/DB11G/undotbs02.dbf' SIZE 2G AUTOEXTEND ON NEXT 1M;
ALTER SYSTEM SET UNDO_TABLESPACE=undotbs2;
DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;
Undo segments in DBA_ROLLBACK_SEGS view
select owner, segment_name, tablespace_name, status
--select *
from dba_rollback_segs
where 1 = 1
--and tablespace_name='UNDOTBS1'
--and status='ONLINE'
--and segment_name ='_SYSSMU51_2438556163$'
;
Who holds UNDO tablespace
select
substr(a.os_user_name,1,15) "OS User",
substr(a.oracle_username,1,8) "DB User",
substr(b.owner,1,8) "Schema",
substr(b.object_name,1,20) "Object Name",
substr(b.object_type,1,10) "Type",
substr(c.segment_name,1,15) "RBS",
substr(d.used_urec,1,12) "# of Records",
e.sid,
e.serial#
from v$locked_object a,
dba_objects b,
dba_rollback_segs c,
v$transaction d,
v$session e
where
a.object_id = b.object_id
and
a.xidusn = c.segment_id
and
a.xidusn = d.xidusn
and
a.xidslot = d.xidslot
and
d.addr = e.taddr;
Issue: Drop UNDO including datafiles does not delete files at OS level
Find oracle process which hold file :
[root@hostname][/]:lsof | grep undo | grep deleted
oracle 3818 oracle 258u REG 8,65 32421978112 17089 /u01/app/oracle/oradata/DB11G/undotbs01.dbf (deleted)
sqlplus / as sysdba
SQL> SELECT sid, serial#, process, terminal, program, event FROM v$session WHERE process in ('3818')
Look at this SID and it event, and find solution how to release hold of file by this session, for example I have issue with
Restart QMon process
Комментариев нет:
Отправить комментарий