Oracle 표 공간, 세그먼트, 구역 과 블록
18118 단어 Oacle
데이터 블록 블록 블록 은 Oracle 이 데이터 정 보 를 저장 하 는 가장 작은 단위 이다.여기 서 말 하 는 것 은 Oracle 환경 에서 가장 작은 단위 입 니 다.Oracle 은 데이터 블록 을 통 해 서로 다른 운영 체제 저장 구조의 차 이 를 차단 하 는 것 이다.윈도 환경 이 든 유 닉 스 / 리 눅 스 환경 이 든 그들의 운영 체제 저장 구조 와 방식, 심지어 문자 배열 방식 은 모두 다르다.Oracle 은 데이터 블록 을 이용 하여 이러한 차 이 를 차단 하고 모든 데이터 조작 은 Oracle 블록 에 대한 조작 을 사용 하 며 하나의 차원 의 추상 에 해당 한다.
Oracle 은 데이터 에 대한 모든 조작 과 공간 분 배 는 실제 적 으로 데이터 블록 Block 에 대한 조작 이다.데이터 시트 에서 한 줄 을 검색 하면 실제 Oracle 은 메모리 버퍼 (또는 하 드 디스크) 에서 이 줄 이 있 는 데이터 블록 을 읽 고 이 데이터 블록 에 있 는 지정 한 데이터 줄 을 되 돌려 줍 니 다.Oracle 은 버퍼 구역 이 든 하 드 디스크 든 데이터 조작 을 하 는 작은 단위 가 데이터 블록 이지 만.
데이터 블록 은 크기 가 있 습 니 다. 데이터 베 이 스 를 만 들 때 매개 변 수 를 통 해 설정 합 니 다.Oracle 데이터베이스 매개 변수 중 데이터 블록 크기 의 매개 변수 만 라 이브 러 리 를 만 든 후에 수정 할 수 없습니다.데이터 블록의 크기 는 한 데이터베이스 에서 여러 개 를 지원 할 수 있 지만 일반적으로 큰 의미 가 없어 관리 와 디 버 깅 에 일정한 부담 을 줄 수 있다
데이터 블록의 크기 는 kb 바이트 개수 로 지정 되 며, 기본 값 은 8KB 입 니 다.관련 매개 변 수 는 dbblock_size, 다음은 block 크기 를 보 는 문구 입 니 다.
1 SQL> show parameter db_block_size; 2
3 NAME TYPE VALUE 4
5 ------------------------------------ ----------- ------------------------------
6
7 db_block_size integer 8192 //1024×8
데이터 블록의 크기 를 설정 하 는 것 은 서로 다른 유형의 시스템 에 근거 한 것 이다.만약 에 데이터 블록 설정 이 비교적 크 면 한 번 에 읽 는 데이터 줄 이 비교적 많 고 이에 따라 SGA 메모리 에 대한 소모 가 비교적 크 며 특정한 조회 로 인해 발생 하 는 교환 이 많 을 수 있 습 니 다.너무 작 게 설정 하면 잦 은 IO 논리 물리 읽 기 도 성능 문 제 를 일 으 킬 수 있다.
데이터 블록 과 관련 된 또 다른 매개 변 수 는 db 입 니 다.file_multiblock_read_count, 물리 적 저장 소 에서 읽 은 데이터 블록 수 를 표시 합 니 다.일부 데이터 발굴 시스템 에 대해 서 는 이 매개 변 수 를 약간 크게 조절 하 는 것 을 고려 할 수 있다.
다음은 블록 보다 더 높 은 단위, 구역 extent 를 봅 시다.
범위
구역 extent 는 데이터 블록 보다 한 단계 큰 저장 구조 로 일련의 연속 적 인 데이터 블록 집합 을 나타 낸다.우 리 는 물리 적 저장 소 가 일반적으로 무 작위 로 읽 고 쓰 는 과정 이라는 것 을 안다.같은 파일 에 있 더 라 도 우 리 는 같은 정보 가 절대적 으로 연속 되 는 물리 적 저장 공간 에 저장 되 어 있다 는 것 을 보장 할 수 없다.Oracle 데이터 저장 도 마찬가지다.
데이터 정 보 를 저장 할 때 Oracle 은 데이터 블록 을 분배 하여 저장 하지만 모든 분 배 된 데이터 블록 이 연속 적 인 구조 라 는 것 을 보장 할 수 없다.그래서 분 구 extent 의 개념 이 나타 나 일련의 연속 적 인 데이터 블록 집합 을 나타 낸다.
보기 dbaextents (또는 all extents, user extents) 는 우리 가 구역 구조 와 저장 구성 을 연구 하 는 중요 한 수단 이다.
SQL> desc dba_extents; Name Type Nullable Default Comments --------------- ------------ -------- ------- ---------------------------------------------------------
OWNER VARCHAR2(30) Y Owner of the segment associated with the extent SEGMENT_NAME VARCHAR2(81) Y Name of the segment associated with the extent PARTITION_NAME VARCHAR2(30) Y Partition/Subpartition Name, if any, of the segment SEGMENT_TYPE VARCHAR2(18) Y Type of the segment TABLESPACE_NAME VARCHAR2(30) Y Name of the tablespace containing the extent EXTENT_ID NUMBER Y Extent number in the segment FILE_ID NUMBER Y Name of the file containing the extent BLOCK_ID NUMBER Y Starting block number of the extent BYTES NUMBER Y Size of the extent in bytes BLOCKS NUMBER Y Size of the extent in ORACLE blocks RELATIVE_FNO NUMBER Y Relative number of the file containing the segment header
보기에 서 우 리 는 구역 의 몇 가지 특징 을 뚜렷하게 볼 수 있다.
우선: 분 구 는 세그먼트 의 특정 성 을 가진다.데이터 세그먼트 segment 는 파 티 션 의 상부 조직 단위 로 하나의 데이터 베이스 대상 은 하나의 segement 에 대응 하고 데이터 베이스 대상 은 서로 다른 schema (owner) 에 속 합 니 다.따라서 서로 다른 데이터 세그먼트 이름, 서로 다른 owner, 심지어 서로 다른 tablespace 표 공간 정 보 를 통 해 데이터 구역 extent 의 정보 설명 을 찾 을 수 있 습 니 다.
다른 부분 정 보 는 이 지역 extent 에 대한 배분 정보 입 니 다. 예 를 들 어 파일 번호, 시작 데이터 블록 블록 번호 와 데이터 블록 수량 등 내용 입 니 다.
데이터 세그먼트 세그먼트
데이터 세그먼트 는 데이터베이스 대상 과 대응 되 며, 일반적으로 데이터베이스 대상 은 하나의 데이터 세그먼트 에 대응 합 니 다.여러 개의 extent 는 하나의 데이터 세그먼트 에 대응 하 는 것 으로 모든 데이터 세그먼트 는 실제 적 으로 데이터 뱅 크 의 한 대상 의 대표 이다.dba 에서segments 보기에 서 데이터 세그먼트 의 구 조 를 잘 볼 수 있 습 니 다.
SQL> desc dba_segments; Name Type Nullable Default Comments --------------- ------------ -------- -------
OWNER VARCHAR2(30) Y Username of the segment owner SEGMENT_NAME VARCHAR2(81) Y Name, if any, of the segment PARTITION_NAME VARCHAR2(30) Y Partition/Subpartition Name, if any, of the segment SEGMENT_TYPE VARCHAR2(18) Y Type of segment: "TABLE", "CLUSTER", "INDEX", "ROLLBACK", "DEFERRED ROLLBACK", "TEMPORARY","SPACE HEADER", "TYPE2 UNDO" or "CACHE" TABLESPACE_NAME VARCHAR2(30) Y Name of the tablespace containing the segment HEADER_FILE NUMBER Y ID of the file containing the segment header HEADER_BLOCK NUMBER Y ID of the block containing the segment header BYTES NUMBER Y Size, in bytes, of the segment BLOCKS NUMBER Y Size, in Oracle blocks, of the segment EXTENTS NUMBER Y Number of extents allocated to the segment INITIAL_EXTENT NUMBER Y Size, in bytes, of the initial extent of the segment NEXT_EXTENT NUMBER Y Size, in bytes, of the next extent to be allocated to the segment MIN_EXTENTS NUMBER Y Minimum number of extents allowed in the segment MAX_EXTENTS NUMBER Y Maximum number of extents allowed in the segment PCT_INCREASE NUMBER Y Percent by which to increase the size of the next extent to be allocated FREELISTS NUMBER Y Number of process freelists allocated in this segment FREELIST_GROUPS NUMBER Y Number of freelist groups allocated in this segment RELATIVE_FNO NUMBER Y Relative number of the file containing the segment header BUFFER_POOL VARCHAR2(7) Y The default buffer pool to be used for segments blocks
segment 에서type 열의 comment 정보 에서 데이터 세그먼트 의 유형 이 다양 하 다 는 것 을 알 수 있 습 니 다.모든 종류의 데이터베이스 대상 은 본질 적 으로 일종 의 데이터 세그먼트 이다.데이터 시트, 색인, 스크롤 백, 집합 은 모두 데이터 세그먼트 의 표현 형식 이다.이 동시에 데이터 세그먼트 는 데이터 대상 이 만 들 어 졌 을 때 이미 만 들 어 졌 고 대상 의 부피 가 커지 면서 여러 개의 extents 를 분배 하여 관리 했다.
다른 부분 정 보 는 dbasegments 에서 읽 은 것 은 이 데이터 대상 이 분배 한 공간 크기 와 데이터 블록, 구역 개수 입 니 다.이 보 기 를 사용 하면 지정 한 schema 의 모든 대상 크기 를 쉽게 가 져 올 수 있 습 니 다.
SQL> select owner,sum(bytes)/1024/1024 as vol, sum(blocks) as totalblocks,sum(extents) as totalextents from dba_segments group by owner having wner='SYS'; OWNER VOL TOTALBLOCKS TOTALEXTENTS ------------------------------ ---------- ----------- ------------
SYS 585.5 74944 3248
위 에서 조회 한 바 와 같이 SYS 의 schema 가 차지 하 는 공간 은 585.5MB 이 고 74944 개의 데이터 블록 과 3248 개의 파 티 션 을 포함한다.
하나의 대상 이 만들어 진 후에 segment 차원 에서 하나의 파 티 션 extent 와 8 개의 데이터 블록 블록 블록 을 분배 합 니 다.
주의해 야 할 문제 가 있 습 니 다. 보통 우리 의 데이터 세그먼트 는 데이터 대상 과 관련 이 있 습 니 다.하나의 데이터 대상 이 segment 에 대응 합 니 다.그러나 파 티 션 시트 는 하나의 파 티 션 이 하나의 segment 대상 에 대응 해 야 한다.그리고 segment 대상 은 그 표 공간 에 저장 할 수 있 고 저장 구분 을 실현 하 는 기초 가 바로 여기에 있다.서로 다른 유형의 segment 구분 은 서로 다른 표 공간 에 세 워 져 야 서로 다른 파일 에 저장 되 고 마지막 으로 서로 다른 물리 적 저장 소 에 분포 할 수 있 습 니 다.
분 구 는 사실상 분리 저장 의 가능성 이 존재 한다.일반적으로 하나의 대상 은 물리 적 저장 소 를 넘 어 저장 되 지 않 으 며, 파 티 션 시트 는 대응 하 는 여러 개의 segment 입 니 다.따라서 파 티 션 시트 는 저장 공간 을 분리 하 는 것 이 가능 하 다.
표 공간 tablespace
TableSpace 는 저장 구조 중의 최고 층 구조 이다.표 공간 을 만 들 때 저 장 된 파일 을 지정 해 야 합 니 다.하나의 테이블 공간 은 여러 개의 데이터 파일 을 지정 할 수 있 고, 여러 개의 파일 은 서로 다른 물리 적 저장 소 에 저장 할 수 있다.즉, 표 공간 은 물리 적 으로 저장 할 수 있다.그러나 한 가 지 는 표 공간의 다음 단계 대상 데이터 세그먼트 의 저장 은 그 파일 에 저 장 된 것 을 지정 할 수 없다 는 것 이다.따라서 데이터 대상 이 IO 부하 균형 에 접근 하려 면 서로 다른 데이터 대상 을 서로 다른 표 공간 에 지정 해 야 한다.데이터 시트 와 색인 을 서로 다른 표 공간 에 만 드 는 이유 다.
표 공간 은 v $tablespace 를 통 해 접근 합 니 다.
SQL> desc v$tablespace; Name Type Nullable Default Comments --------------------------- ------------ -------- ------- --------
TS# NUMBER Y NAME VARCHAR2(30) Y INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3) Y BIGFILE VARCHAR2(3) Y FLASHBACK_ON VARCHAR2(3) Y ENCRYPT_IN_BACKUP VARCHAR2(3) Y
앞의 구조 보기 에 비해 표 공간 보기 의 구 조 는 간단 하고 설명 정보 일 뿐 입 니 다.그 중 두 개의 매개 변 수 는 주의해 야 한다.
하 나 는 bigfile 이 고 표지 의 위치 이 며 표지 표 공간 은 이른바 큰 파일 표 공간 이 아 닙 니까?큰 파일 시트 공간 은 10g 에서 출시 된 새로운 기능 으로 성능 을 고려 하여 표 공간 을 큰 파일 시트 공간 으로 설정 하여 100 T 가 넘 는 데 이 터 를 저장 할 수 있 으 나 데이터 파일 은 하나만 있 도록 요구 합 니 다.또 하 나 는 flashbackon, 표 공간의 플래시 기능 이 켜 졌 는 지 여 부 를 표시 합 니 다.
주의해 야 할 것 은 데이터 시트 세그먼트 블록 의 개념 집합 은 schema 의 구조 와 헷 갈 리 기 쉽다.schema 는 조직 개념 으로 전형 적 인 데이터 베이스 이론 범주 에서 나 온 것 이다.Oacle 에서 Schema 는 조직 개념 이 고 user 가 대응 하 는 것 은 schema 이다.schema 는 논리 대상 의 집합 조직 으로 같은 표 공간 등 개념 은 한 차원 이 아니다.
하나의 schema 에 서 는 대상 을 모든 데이터 시트 공간 에 만 들 수 있 고 기본 표 공간의 개념 인 default tablespace 만 있 습 니 다.기본 테이블 공간 을 지정 하 는 것 은 사용 자 를 만 들 때 지정 합 니 다.
-- 인터넷 정리
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.