서버 튜닝
1. 메모리 크기 확인
NAME BYTES RES
——————————– ———- —
Fixed SGA Size 1248528 No
Redo Buffers 7139328 No
Buffer Cache Size 180355072 Yes
Shared Pool Size 83886080 Yes
Large Pool Size 4194304 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 281018368 No
Startup overhead in Shared Pool 37748736 No
Free SGA Memory Available 0
11 개의 행이 선택되었습니다.
SQL> show parameter shared_pool_size
NAME TYPE
———————————— ——————————–
VALUE
——————————
shared_pool_size big integer
0SQL> show parameter sga_target
NAME TYPE
———————————— ——————————–
VALUE
——————————
sga_target big integer
268M
2. STATSPACK 패키지
개요
- 9i부터 지원
- UTLBSTAT.SQL (통계 시작), UTLESTAT.SQL (통계 끝) 보다 성능은 좋은듯
- TABLE에 통계값을 저장 (UTL?STAT.SQL은 report.txt 파일로 생성됨)
- TIMED_STATISTICS 파라메터가 TRUE로 설정되어 있어야
환경설정
C:\Users\user>sqlplus “/as sysdba”
SQL> show parameter timed_statistics
NAME TYPE VALUE
———————————— ———– ——————————
timed_statistics boolean FALSE
SQL> alter system set timed_statistics = true;
시스템이 변경되었습니다.
SQL> show parameter timed_statistics
NAME TYPE VALUE
———————————— ———– ——————————
timed_statistics boolean TRUE
SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\admin\spcreate.sql
Choose the PERFSTAT user’s password
———————————–
Not specifying a password will result in the installation FAILING
perfstat_password의 값을 입력하십시오: inticube
inticube
Choose the Default tablespace for the PERFSTAT user
—————————————————
Below is the list of online tablespaces in this database which can
store user data. Specifying the SYSTEM tablespace for the user’s
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.
Choose the PERFSTAT users’s default tablespace. This is the tablespace
in which the STATSPACK tables and indexes will be created.
TABLESPACE_NAME CONTENTS STATSPACK DEFAULT TABLESPACE
—————————— ——— —————————-
EXAMPLE PERMANENT
SYSAUX PERMANENT *
USERS PERMANENT
Pressing <return> will result in STATSPACK’s recommended default
tablespace (identified by *) being used.
default_tablespace의 값을 입력하십시오: users
Using tablespace USERS as PERFSTAT default tablespace.
Choose the Temporary tablespace for the PERFSTAT user
—————————————————–
Below is the list of online tablespaces in this database which can
store temporary data (e.g. for sort workareas). Specifying the SYSTEM
tablespace for the user’s temporary tablespace will result in the
installation FAILING, as using SYSTEM for workareas is not supported.
Choose the PERFSTAT user’s Temporary tablespace.
TABLESPACE_NAME CONTENTS DB DEFAULT TEMP TABLESPACE
—————————— ——— ————————–
TEMP TEMPORARY *
Pressing <return> will result in the database’s default Temporary
tablespace (identified by *) being used.
temporary_tablespace의 값을 입력하십시오: temp
….
1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.
1 개의 행이 만들어졌습니다.
….
패키지가 생성되었습니다.
오류가 없음.
패키지 본문이 생성되었습니다.
오류가 없음.
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
통계 결과 보기
연결되었습니다.SQL> execute statspack.snap
PL/SQL 처리가 정상적으로 완료되었습니다.SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spreport.sqlCurrent Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
———– ———— ——– ————
1184836446 ORCL 1 orcl
Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
———– ——– ———— ———— ————
1184836446 1 ORCL orcl USER-PC2
Using 1184836446 for database Id
Using 1 for instance number
….
인스턴트 튜닝
오라클 구조
- memory (-> instance 튜닝) + disk (-> database 튜닝, file 튜닝) + process (-> 기타튜닝)
공유 풀 영역 튜닝 : 파싱결과 저장
1) 공유풀 관련 parameter : shared_pool_size (파싱결과 저장), sga_target (0이면 메모리를 수동관리)
2) 라이브러리 캐시 영역의 튜닝
– 구문분석 정보(파싱결과, SQL 텍스트, 실행계획) 저장되는 영역
– alter system flush shared_pool : 공유 풀 영역 clear (단편화 제거 효과)
– 표준화된 sql를 꼭 도입해야함 (대소문자, 띄어쓰기 규칙, 공백…)
– full이 되면 wating 후에 오래된 구문분석를 삭제 (aging 메커니즘) –> 영역을 크게 잡아줘야함
SQL> select namespace, gets, gethits, gethitratio
2 from v$librarycache
3 where namespace = ‘SQL AREA’;
NAMESPACE GETS GETHITS GETHITRATIO
————— ———- ———- ———–
SQL AREA 4086 139 .0340186 ==> 90% 이하라면 튜닝이 필요함
int<SID>.ora 파일의 SHARED_POOL_SIZE
SQL> select sum(pins), sum(reloads), sum(reloads)/sum(pins)
2 from v$librarycache
3 where namespace = ‘SQL AREA’;
SUM(PINS) SUM(RELOADS) SUM(RELOADS)/SUM(PINS) ==> pin (구문분석되어 저장된 정보,크면좋다)
———- ———— ———————- ==> reload (동일 쿼리를 재사용)
92995 43 .00046239 ==> 재사용 비율이 1% 미만일때 성능이 좋음
SQL> select namespace, invalidations
2 from v$librarycache
3 where namespace = ‘SQL AREA’;
NAMESPACE INVALIDATIONS
————— ————-
SQL AREA 260 ==> 얼마나 자주 삭제/변경되었는지를 분석
크거나 증가한다면 공유풀영역이 작아서 성능 저하됨을 의미
3) 자주 사용되는 SQL 캐쉬
– 불필요한 파싱을 제거
– CURSOR_SPACE_FOR_TIME : 기본값은 FALSE, Private SQL Area에 사용자의 sql이 저장됨, 라이브러리 캐쉬에는 오래된 sql이지만 이 값이 true 일때 private sql area에서 최신이면 지우지 않고 캐쉬됨
– CLOSE_CACHED_OPEN_CURSORS : 기본값은 FALSE, COMMIT 될때 구문분석정보를 라이브러리 캐시 영역에서 지움
– OPEN_CURSORS : 기본값은 9i에서 300, 동시에 오픈할 수 있는 커서의 수
4) 자주 사용되는 PL/SQL 캐쉬
– 스토어드 프로시저, 함수, 패키지, 트리거
– DBMS_SHARED_POOL : KEEP, UNKEEP
– sysdba에서 $HOME/rdbms/admin/dbmspool.sql 실행하여 패키지 설치후 사용
SQL> execute DBMS_SHARED_POOL.KEEP(‘SCOTT.CHECK_SAWON’);
SQL> select name , type, kept
2 from v$db_object_cache
3 where type in (‘PACKAGE’, ‘PROCEDURE’, ‘TRIGGER’, ‘PACKAGEBODY’);
NAME TYPE KEP
————————– ———— —
MGMT_JOB_ENGINE PACKAGE NO
CHECK_SAWON PROCEDURE YES ==> 캐쉬 하고 있음
MGMT_JOB_EXEC_UPDATE TRIGGER NO
3. 데이터 버퍼 캐시 영역 튜닝 : 결과 데이터 저장
1) 관련 parameter : DB_CACHE_SIZE, SGA_TARGET, SGA_INFO (버전마다 좀 틀리다)
2) 데이터 버퍼 캐시 튜닝
SQL> select * from big_emp;
SQL> select * from big_emp;
SQL> connect /as sysdba
연결되었습니다.
SQL> select ((phy.value)/(cur.value+con.value)) “Cache Hit Ratio”
2 from v$sysstat cur, v$sysstat con, v$sysstat phy
3 where cur.name = ‘db block gets’
4 and con.name = ‘consistent gets’
5 and phy.name = ‘physical reads’;
Cache Hit Ratio
—————
.018842786 ==> 90% 이상일때 좋은 성능이다. 적으면 DB_CACHE_SIZE 키워라.
히트율 : 1 – (Physical Reads / (DB Block Gets + Consistent Gets))
3) 멀티 버퍼 캐시 영역 튜닝
- SGA의 데이터 버퍼 캐시 영역은 일반적으로 1개의 영역 –> 성격/크기에 따라 여러개 생성하는 기법임
- DB_CACHE_SIZE : 기존 구조와 동일 (여러 사용자가 공용으로 사용)
- DB_KEEP_CACHE_SIZE : 자주 사용되는 놈들 상주
- DB_KEEP_RECYCLE_SIZE : 가끔 사용되는 놈들, 작업완료 후 CLEAR됨
- alter table [테이블명] storage (buffer_pool [keep | recycle]);
- KEEP 설정시 : user_table에서 해당 테이블에서 사용되는 blocks 를 구하여 sum(blocks+1)을 포함할 만큼 충분한 크기로 설정
- RECYCLE 설정시 : $HOME/rdbms/admin/catparr.sql 실행후 v$cache 에서 count(*) blocks 갯수의 1/4 만큼을 설정
자주 사용되는 놈
아주 가끔 사용되는 놈
멀티버퍼 크기를 산정하기 위해 사용중인 블럭크기 확인 (block * block_size)
SQL> analyze table big_emp compute statistics;
테이블이 분석되었습니다.
SQL> analyze table big_dept compute statistics;
테이블이 분석되었습니다.
SQL> select table_name, blocks from user_tables where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);
TABLE_NAME BLOCKS
—————————— ———-
BIG_DEPT 1
BIG_EMP 182
SQL> SHOW PARAMETER DB_BLOCK_SIZE
NAME TYPE
———————————— ——————————–
VALUE
——————————
db_block_size integer
8192
DBA로 접속하여 DB_KEEP_CACHE_SIZE, DB_RECYCLE_CACHE_SIZE 크기를 다시 잡고
SQL> CONNECT SYS/CHANGE_ON_INSTALL AS SYSDBA
SQL> show parameter db_cache_size
SQL> show parameter db_keep_cache_size
SQL> show parameter db_keep_recycle_size
SQL> ALTER SYSTEM SET DB_KEEP_CACHE_SIZE = 10M; => 실제로는 12M 정도로 잡힌다.. (granule 단위)
SQL> ALTER SYSTEM SET DB_RECYCLE_CACHE_SIZE = 10M;
SQL> START C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\catparr.sql
패키지가 생성되었습니다.
패키지 본문이 생성되었습니다.
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select owner#, name, count(*) blocks
2 from v$cache
3 where name=’EMP’
4 group by owner#, name;
OWNER# NAME BLOCKS
———- —————————— ———-
61 EMP 2
멀티버퍼 크기 설정 결과
SQL> select name, buffers from v$buffer_pool;
NAME BUFFERS
——————– ———-
KEEP 1497
RECYCLE 1497
DEFAULT 17964
테이블을 변경하여 멀티버퍼 사용
SQL> connect scott/tiger
SQL> alter table big_emp storage (buffer_pool keep);
SQL> alter table big_dept storage (buffer_pool keep);
SQL> alter table account storage (buffer_pool recycle);
SQL> select table_name, buffer_pool
2 from user_tables
3 where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);
TABLE_NAME BUFFER_
—————————— ——-
BIG_DEPT KEEP
BIG_EMP KEEP
충분히 해당 테이블의 쿼리를 돌리고 상태를 알아보자
SQL> set autotrace off
SQL> select name,
2 1-(physical_reads/(db_block_gets+consistent_gets)) “Multiple Ratio”
3 from v$buffer_pool_statistics
4 where db_block_gets + consistent_gets > 0;
NAME Multiple Ratio
——————– ————–
DEFAULT .988126107
RECYCLE .908533917
아래는 테이블 캐싱 기능임..
(왠만하면 아래의 테이블 캐싱기능보다는 위의 멀티버퍼캐시를 사용하는게 좋다)
SQL> select table_name, cache from user_tables
2 where table_name in (‘BIG_EMP’, ‘BIG_DEPT’);
TABLE_NAME CACHE
—————————— ———-
BIG_DEPT Y
BIG_EMP N
SQL> select /*+CACHE*/ deptno, dname, loc from big_dept; ==> 힌트를 사용해서 캐쉬 사용
4) 자주 사용되는 테이블을 캐싱한다.
- 오래된 버전에서 지원되는 듯..
- alter table dept cache;
- select /*+CACHE*/ deptno, dname, loc from dept;
- 멀티 버퍼 캐쉬와 동시에 사용못함.. 그냥 멀티버퍼 캐쉬를 쓰는게 좋을듯..
5) Multiple Block 구조를 생성
- 9i부터 하나의 DB에 여러크기 Block 으로 table space 생성 가능함
- 특정 크기 지정안하면 default 값으로 DB_BLOCK_SIZE 적용됨 (7:2k, 8i:4k, 9i:8k, 10g:8k)
- 작은 블럭 : 경합 적음, Random 검색에 유리, 블럭헤드가 많이 발생 –> 많은 사용자, U/I/D 많은 환경유리
- 큰 블럭 : 많은행 저장하므로 오버헤드 적음, 테이블 전체 스캔에 유리 –> 소수가 검색 위주로 사용하는 환경에 유리
- create tablespace insa datafile ‘$HOME/dbs/insa01.dbf’ size 10m blocksize 4k;
SQL> connect /as sysdba
연결되었습니다.
세션이 변경되었습니다.
SQL> desc dba_tablespace;
ERROR:
ORA-04043: dba_tablespace 객체는 존재하지 않습니다.
SQL> desc dba_tablespaces
이름 널? 유형
—————————————– ——– —————————-
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
SQL> create tablespace insa datafile ‘c:\insa01.dbf’ blocksize 4k;
create tablespace insa datafile ‘c:\insa01.dbf’ blocksize 4k
*
1행에 오류:
ORA-29339: 테이블스페이스 블록 크기 4096이(가) 구성된 블록 크기와 일치하지 않음
==> 10g에서 기본값은 8k 이다.. file도 memory도 같은 크기를 쓰므로.. 메모리 버퍼도 4k
SQL> show parameter db
NAME TYPE VALUE
———————————— ————– ——————
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer
SQL> alter system set db_4k_cache_size = 8M;
시스템이 변경되었습니다.
SQL> create tablespace insa datafile ‘c:\insa01.dbf’ size 10m blocksize 4k;
테이블스페이스가 생성되었습니다.
SQL> create table emp_test (A number) tablespace insa
4. 로그 버퍼 영역의 튜닝
- 로그 버퍼 캐시 영역을 크게 할당
- U/I/D 많을때 충분한 공간이 할당되어야 함
- V$SESSION_WAIT 에서 SECOND_IN_WAITS 컬럼값이 증가하고, STATE컬럼이 WAITING 이면 경합중임을 나타냄
- init<SID>.ora 파일에서 LOG_BUFFER 크기 변경한다.
- 인덱스 생성시 NOLOGGING 적을 적용
- 인덱스는 언제든지 테이블을 통해 다시 만들수 있으므로 로깅하지 말자
- alter table emp10 NOLOGGING;
테이블이 생성되었습니다.
SQL> alter table emp10 LOGGING;
테이블이 변경되었습니다.
SQL> create index i_emp10 on emp10(no) NOLOGGING;
인덱스가 생성되었습니다.
SQL> alter index i_emp10 LOGGING;
인덱스가 변경되었습니다.
SQL> select index_name, logging from user_indexes where index_name = ‘I_EMP10’;
INDEX_NAME LOG
—————————— —
I_EMP10 YES
서버튜닝 – I/O 튜닝
그냥 오라클 설치하면
C:\oracle\product\10.2.0\oradata\orcl
에 모든 tablespace가 들어있음.. 이거 잘 분리해서 사용해야 성능이 좋아짐..
디스크 분리
SQL> alter tablespace users offline;
테이블스페이스가 변경되었습니다.
파일을 다른 디스크로 복사한다.
2 ‘C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF’ to ‘C:\USERS01.DBF’;
테이블스페이스가 변경되었습니다.
SQL> alter tablespace users online;SQL> SELECT * FROM DBA_DATA_FILES;
FILE_NAME
——————————————————————————–
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
———- —————————— ———- ———- ———
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
———— — ———- ———- ———— ———- ———–
ONLINE_
——-
C:\INSA01.DBF
6 INSA 10485760 2560 AVAILABLE
6 NO 0 0 0 10420224 2544
ONLINE
테이블스페이스 분리
SQL> col owner format a10
SQL> col segment_name format a25
SQL> col tablespace_name format a15
SQL> select owner, segment_name, segment_type, tablespace_name
2 from dba_segments
3 where tablespace_name=’SYSTEM’ and owner=’SCOTT’;
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
———- ————————- —————— —————
SCOTT SYS_C005393 INDEX SYSTEM
SCOTT ACCOUNT TABLE SYSTEM
SCOTT BIG_DEPT TABLE SYSTEM
SCOTT BIG_EMP TABLE SYSTEM
SCOTT DEPT TABLE SYSTEM
SCOTT EMP TABLE SYSTEM
SCOTT LARGE_ACCOUNT TABLE SYSTEM
SCOTT SYS_C005399 INDEX SYSTEM
SCOTT LARGE_DEPT TABLE SYSTEM
SCOTT LARGE_EMP TABLE SYSTEM
SCOTT S_CHANGGO TABLE SYSTEM
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
———- ————————- —————— —————
SCOTT PK_T_CHANGGO INDEX SYSTEM
SCOTT S_CHULHAJISI TABLE SYSTEM
SCOTT PK_T_CHULHAJISI INDEX SYSTEM
SCOTT S_GOGAEK TABLE SYSTEM
SCOTT PK_T_GOGAEK INDEX SYSTEM
SCOTT I_GOGAEK_SEX INDEX SYSTEM
SCOTT S_JAEGO TABLE SYSTEM
SCOTT PK_T_JAEGO INDEX SYSTEM
SCOTT S_MAECHE TABLE SYSTEM
SCOTT PK_T_MAECHE INDEX SYSTEM
SCOTT S_PROMOTION TABLE SYSTEM
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
———- ————————- —————— —————
SCOTT SYS_C005421 INDEX SYSTEM
SCOTT S_SANGPUM TABLE SYSTEM
SCOTT SYS_C005425 INDEX SYSTEM
SCOTT S_SPINOUT TABLE SYSTEM
SCOTT PK_T_SPINOUT INDEX SYSTEM
SCOTT I_CHANGGO_CD_IPCHUL INDEX SYSTEM
SCOTT S_SUJU TABLE SYSTEM
SCOTT PK_T_SUJU INDEX SYSTEM
SCOTT I_S_SUJU INDEX SYSTEM
SCOTT I_S_SUJU_CHULHAJISI_NO INDEX SYSTEM
SCOTT S_SUJU_DTL TABLE SYSTEM
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
———- ————————- —————— —————
SCOTT PK_T_SUJU_DTL INDEX SYSTEM
SCOTT S_ZIPCODE TABLE SYSTEM
Sort 공간을 확보하라
NAME TYPE VALUE
———————————— ——————————– ——————————
sort_area_size integer 65536 ==> sort 영역 크기
SQL> show parameter sort_area_retained_size
NAME TYPE VALUE
———————————— ——————————– ——————————
sort_area_retained_size integer 0 ==> sort 끝나고 줄어들 크기
SQL> show parameter pga
NAME TYPE VALUE
———————————— ——————————– ——————————
pga_aggregate_target big integer 88M ==> sort area size 가 작으면 여기까지 늘어난다 (10g)
SQL> select disk.value “Disk”, mem.value “Mem”, (disk.value / mem.value) * 100 “Ratio”
2 from v$sysstat mem, v$sysstat disk
3 where mem.name = ‘sorts (memory)’ and disk.name=’sorts (disk)’;
Disk Mem Ratio
———- ———- ———-
0 58218 0 ==> ration가 5% 미만이면 성능에 영향 안 미침SQL> alter session set sort_area_size = 100; ==> 이런식으로 바꾸면 위 쿼리의 Ratio가 높아지겠지
temporary tablespace 사용현황 분석하기
v$sort_segment / v$sort_usage 참조
사용자마다 temporary tablespace를 나눠줘서 경합현상을 분산시키기
(create table 할때 temporary tablespace 의 기본값은 “temp”)
SQL*Plus: Release 10.2.0.1.0 – Production on 목 6월 5 15:19:42 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
사용자명 입력: system
암호 입력:
다음에 접속됨:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
세션이 변경되었습니다.
SQL> create temporary tablespace temp10 tempfile ‘c:/temp10.dbf’ size 10M;
테이블스페이스가 생성되었습니다.
SQL> create temporary tablespace temp11 tempfile ‘c:/temp11.dbf’ size 10M;
테이블스페이스가 생성되었습니다.
SQL> alter user scott temporary tablespace temp10;
사용자가 변경되었습니다.
SQL> alter user hr temporary tablespace temp11;
사용자가 변경되었습니다.
SQL> connect scott/tiger
연결되었습니다.
세션이 변경되었습니다.
SQL> select username, temporary_tablespace
2 from dba_users
3 where username=’SCOTT’ or username=’HR’;
USERNAME TEMPORARY_TABLESPACE
—————————— ——————————
SCOTT TEMP10
HR TEMP11
위와같이 temporary tablespace 나눠도 사용자의 90% scott 이면??
==> “tablespace group” 을 만든다!! (10g 부터)
tablespace group temp_grp_1;create temporary tablespace temp11 tempfile ‘c:/temp11.dbf’ size 10M
tablespace group temp_grp_1;alter user hr temporary tablespace temp_grp_1;
Undo Segment
NAME TYPE
———————————— ——————————–
VALUE
——————————
undo_management string
AUTO ==> 9i부터 자동으로 undo segment가 생성되고 관리됨
undo_retention integer
900
undo_tablespace string
UNDOTBS1
SQL> select SEGMENT_NAME, TABLESPACE_NAME, SEGMENT_ID from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID
—————————— —————————— ———-
SYSTEM SYSTEM ==> Public Undo Segs 0
_SYSSMU1$ UNDOTBS1 ==> Private Undo Segs 1
_SYSSMU2$ UNDOTBS1 2
_SYSSMU3$ UNDOTBS1 3
_SYSSMU4$ UNDOTBS1 4
_SYSSMU5$ UNDOTBS1 5
_SYSSMU6$ UNDOTBS1 6
_SYSSMU7$ UNDOTBS1 7
_SYSSMU8$ UNDOTBS1 8
_SYSSMU9$ UNDOTBS1 9
_SYSSMU10$ UNDOTBS1 10
Notice
