세그먼트 생 성 표 usersegments
Oracle 의 세그먼트 (segment) 는 디스크 공간 을 차지 하 는 대상 으로 가장 흔히 볼 수 있 는 세그먼트 유형 은 다음 과 같 습 니 다.
l 클 러 스 터
l 테이블
l 테이블 파 티 션
l 색인 인덱스
l 색인 파 티 션
l Lob 파 티 션 lob 파 티 션, lob 서브 파 티 션 lobsubpartition, lob 색인 lobindex, lob 세그먼트 lob segmnent
l 내장 표 nestedtable
l 스크롤 백 세그먼트 롤 백
상세 한 소 개 를 통 해 알 수 있 듯 이 P313
2. 세그먼트 생 성
표, 색인 등 을 만 드 는 과정 에서 (11gR 2 에서 세그먼트 의 생 성 은 첫 번 째 데이터 가 삽 입 될 때 까지 기 다 려 야 합 니 다) 사실상 생 성 세그먼트 입 니 다. user segment 에서 생 성 된 세그먼트 를 볼 수 있 습 니 다.
(1) 기본 표를 만 들 고 분 배 된 세그먼트 보기
10.2.0.4:
SQL> create table t(id number);
Table created.
SQL> select * from user_segments;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_
T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT
11gR2:
test@IRMSDC2> create table t(idnumber);
Table created.
test@IRMSDC2> select * from user_segments;
no rows selected
test@IRMSDC2> insert into t(id)values(1);
1 row created.
test@IRMSDC2> select * fromuser_segments;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE SEGMENT_SUTABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE RETENTI MINRETENTION
--------------------------------------------------------------------------------------------------------------- ------------------ ---------------------------------------- ---------- ---------- ---------- ------------------------- ----------- ----------- ---------- ------- ------------
PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_ FLASH_CCELL_FL
------------ ---------- ---------------------- ------- -------
T TABLE ASSM USERS 65536 8 1 65536 1048576 1 2147483645 2147483645
DEFAULTDEFAULT DEFAULT
이 를 통 해 알 수 있 듯 이 11gR 2 에 서 는 데 이 터 를 삽입 한 후에 만 세그먼트 공간 을 할당 할 수 있 습 니 다. 아래 작업 은 모두 10g 에서 진행 되 며, 11g 에 데 이 터 를 삽입 하거나 표를 만 들 때 segment creation immediate 를 지정 하면 같은 효 과 를 얻 을 수 있 습 니 다.
(2) 홈 키 가 있 는 시 계 를 만 들 고 분 배 된 세그먼트 를 봅 니 다.
SQL> create table t2(id numberprimary key);
Table created.
SQL> select * fromuser_segments;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_
--------------------------------------------------------------------------------------------------------------- ------------------------------------------------ ---------- ---------- ---------- ------------------------- ----------- ----------- ------------ ---------- ----------------------
T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT
T2 TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT
SYS_C00326438 INDEX USERS 65536 8 1 65536 1 2147483645 DEFAULT
(3) lob 필드 가 있 는 시 계 를 만 들 고 분 배 된 세그먼트 를 봅 니 다.
SQL> createtable t3(x int primary key, y clob, z blob);
Table created.
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS
------------------------------------------------ ------------------------------ ---------- --------------------
T TABLE USERS 65536 8 1
T2 TABLE USERS 65536 8 1
SYS_C00326438 INDEX USERS 65536 8 1
T3 TABLE USERS 65536 8 1
SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1
SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1
SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1
SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1
SYS_C00326439 INDEX USERS 65536 8 1
9 rowsselected.
이 를 통 해 알 수 있 듯 이 t 는 하나의 표 세그먼트 만 만 들 었 고 t2 는 하나의 표 세그먼트 와 하나의 색인 세그먼트 만 들 었 으 며 t3 는 하나의 표 세그먼트, 하나의 색인 세그먼트, 2 개의 lobindex, 2 개의 lobsegment 를 만 들 었 다.
결론: 표를 만 들 때 표 의 정보 와 데 이 터 는 여러 세그먼트 로 분 산 될 수 있 습 니 다. 각 세그먼트 에는 일부 정보 가 저장 되 어 있 고 세그먼트 는 구역 으로 구성 되 며 구역 은 Oacle 블록 으로 구성 되 며 Oacle 블록 은 운영 체제 로 구성 되 어 있 습 니 다.
새 구간 을 만 들 때 기본 값 은 1 개의 구역, 8 개의 블록 으로 구성 되 며 모두 8K * 8 공간 입 니 다. 기본 값 으로 Oacle 블록 크기 는 8k 입 니 다.
SQL> show parameter block_size;
NAME TYPE VALUE
------------------------------------------------------------------ ------------------------------
db_block_size integer 8192
(4) 대량의 데이터 삽입
표 t 에 대량의 데 이 터 를 삽입 하여 세그먼트 크기 의 변 화 를 관찰 합 니 다.
SQL> conn / as sysdba
Connected.
SQL> INSERT INTO test.t SELECT ROWNUMFROM dba_TABLES WHERE ROWNUM <= 10000;
10000 rows created.
SQL> conn test/test_123;
Connected.
SQL> selectsegment_name, segment_type,tablespace_name,bytes,blocks,extents fromuser_segments;
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS
------------------------------------------------ ------------------------------ ---------- --------------------
T TABLE USERS 196608 24 3
T2 TABLE USERS 65536 8 1
SYS_C00326438 INDEX USERS 65536 8 1
T3 TABLE USERS 65536 8 1
SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1
SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1
SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1
SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1
SYS_C00326439 INDEX USERS 65536 8 1
9 rows selected.
이 를 통 해 알 수 있 듯 이 구역 은 3 개 로 늘 었 고 block 은 24 개 로 늘 었 다. 즉, 구간 점용 공간 은 24 * 8K 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.