반응형
/********************************************************************************************
-- Title : [10g] 언두 세그먼트 관리 - ver.dbrang
-- Reference : dbrang.tistory.com
-- Key word : 언두세그먼트 undo segment 언두데이터 undo data 언두 테이블스페이스 undo tablespace
********************************************************************************************/

-- 언두 세그먼트 관리 딕셔너리
SELECT SEGMENT_ID, FILE_ID, SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS
FROM DBA_ROLLBACK_SEGS;
  
SELECT NAME.NAME, STAT.EXTENTS, STAT.RSSIZE, STAT.XACTS
FROM V$ROLLSTAT STAT, V$ROLLNAME NAME
WHERE STAT.USN = NAME.USN;
 
SELECT SES.USERNAME, TRAN.XIDUSN, TRAN.USED_UBLK
FROM V$SESSION SES, V$TRANSACTION TRAN
WHERE SES.SADDR = TRAN.SES_ADDR;
  
SQL> SHOW PARAMETER UNDO;
 

-- TS 확인
select d.tablespace_name, d.file_name
     , to_char(d.bytes/1024/1024, '999,999.00') "Size(MB)"
     , to_char((d.increment_by * 8), '999,999.00') "Increment(KB)"
     , to_char(d.maxbytes/1024/1024, '999,999.00') "MaxSize(MB)"
     , d.status, v.status "Online"
     , v.enabled, d.autoextensible
from dba_data_files d
inner join v$datafile v
on d.file_name = v.name
order by d.tablespace_name, d.file_name;
 

-- 언두 파라미터 확인
select * from v$parameter
where name like '%undo%';
 

-- 언두 TS 추가
CREATE UNDO TABLESPACE UNDOTBS2
DATAFILE '/home/oracle/oradata/ORCL/undotbs02.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
 

-- 언두 TS 생성 확인
select a.tablespace_name, a.status, a.contents, b.default_ts "DEFAULT"
     , a.logging, a.allocation_type, a.plugged_in
     , a.extent_management -- 9i 이상부터 사용
     , a.segment_space_management -- 9i 이상부터 사용
     , a.bigfile -- 10g 이상부터 사용
     , to_char(a.initial_extent/1024, '999,999.00') "initial_extent(KB)"
     , to_char(a.next_extent/1024, '999,999.00') "next_extent(KB)"
     , to_char(a.min_extents/1024, '999,999.00') "min_extents(KB)"
     , to_char(a.max_extents/1024/1024, '999,999.00') "max_extents(MB)"
from dba_tablespaces a
 left outer join (select property_value as ts_nm
                      , 'DEFAULT' as default_ts
                 from database_properties
                 where property_name
                 in ('DEFAULT_TEMP_TABLESPACE','DEFAULT_PERMANENT_TABLESPACE')
                ) b
on a.tablespace_name = b.ts_nm
order by a.contents, a.tablespace_name;
 

-- 언두 TS 파일 추가
ALTER TABLESPACE UNDOTBS2
ADD DATAFILE '/home/oracle/oradata/ORCL/undotbs02_02.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
 

-- 언두 TS 파일 추가 확인
SELECT *
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS2';
 

-- 언두 TS 파일명 변경
ALTER TABLESPACE UNDOTBS2 OFFLINE;       /* 언두 TS 오프라인*/

$ mv undotbs02_02.dbf undotbs02_0222.dbf /* 물리적 파일명 변경 */

ALTER TABLESPACE UNDOTBS2                /* 언두 TS 파일명 변경 */
RENAME DATAFILE '/home/oracle/oradata/ORCL/undotbs02_02.dbf'
TO '/home/oracle/oradata/ORCL/undotbs02_0222.dbf';

ALTER TABLESPACE UNDOTBS2 ONLINE;        /* 언두 TS 온라인 */
 

-- 언두 TS 파일명 변경 확인
SELECT *
FROM dba_data_files
WHERE tablespace_name = 'UNDOTBS2';
 

-- 언두 TS 교체
ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2
SCOPE = BOTH;
 

-- 언두 파라미터 확인
select * from v$parameter
where name like '%undo%';
 

-- 언두 TS 삭제
DROP TABLESPACE UNDOTBS1;
 

 
반응형

+ Recent posts