반응형
/********************************************************************************************
-- 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;
-- 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;
반응형