차례:
- 테이블 스페이스
- 세그먼트의 세그먼트 테이블 공간 뒤의 다음 논리적 저장소 구조입니다. 테이블
- 사용 가능한 공간이 모두 채워지면 해당 데이터 파일의 공간이 부족합니다. DBA 기술이 도입되면서 세그먼트 확장을위한 여유 공간을 늘릴 수있는 방법을 결정하게됩니다.
비디오: [오라클 기초 강좌] 12 - 테이블스페이스 이해 - 오라클 스토리지 구조, 테이블스페이스 생성/변경/제거 2024
볼 수있는 모든 논리 구조는 데이터베이스의 데이터 파일에 있습니다. Oracle 12c의 논리적 구조를 통해 데이터를 관리 가능하고 논리적 인 부분으로 구성 할 수 있습니다.
논리적 개체와 물리적 개체의 관계를 살펴 보겠습니다. 화살표는 일대 다 관계의 방향을 가리 킵니다.
테이블 스페이스
는 물리적 스토리지의 논리적 조직의 첫 번째 레벨입니다. 모든 12c 데이터베이스에는 다음 테이블 공간이 있어야합니다.
SYSTEM:
-
데이터베이스 자체를 실행하는 데 사용되는 핵심 데이터베이스 오브젝트를 저장합니다. SYSAUX:
-
보조 기능이며 데이터베이스의 핵심 기능과 관련이없는 개체의 경우.
-
트랜잭션 복구에 사용되는 롤백 또는 실행 취소 세그먼트를 저장합니다. TEMP:
-
임시 저장 용. 각 테이블 스페이스는 하나 이상의 데이터 파일을 구성합니다. 일반적으로 각 테이블 스페이스는 하나의 데이터 파일에 연결되기 시작할 수 있지만 데이터베이스가 커지고 파일이 커질수록 여러 데이터 파일 형태로 스토리지를 추가 할 수 있습니다.
SALES_DATA
-
SALES_INDEX
-
HR_DATA
-
HR_INDEX
-
ACCOUNTING_DATA
-
ACCOUNTING_INDEX
-
HISTORY_DATA
-
HISTORY_INDEX
-
Oracle 12c
세그먼트의 세그먼트 테이블 공간 뒤의 다음 논리적 저장소 구조입니다. 테이블
인덱스 구체화 된 뷰 파티션
-
이러한 개체 예제는
-
세그먼트가 아닌 <
-
프로 시저
동의어 시퀀스 후자의 객체 목록은 세그먼트가있는 테이블 공간에 살지 않습니다. 그것들은 SYSTEM 테이블 스페이스에있는 코드 조각입니다.
-
세그먼트를 만들 때마다 어떤 세그먼트를 포함시킬 테이블 스페이스를 지정하십시오. 이는 성능 향상에 도움이됩니다.
-
오라클 12c의 범위
-
범위
는 나무의 성장 고리와 같습니다. 세그먼트가 커질 때마다 새로운 세그먼트가 생성됩니다. 항목을 저장하기 위해 테이블을 처음 만들 때 첫 번째 범위를 가져옵니다. 해당 테이블에 데이터를 삽입하면 그 범위가 채워집니다. 익스텐트가 가득 차면 테이블 스페이스에서 다른 익스텐트를 가져옵니다.
처음으로 테이블 공간을 만들면 모든 여유 공간이 생깁니다. 객체 생성을 시작하면 그 여유 공간이 범위의 형태로 세그먼트에 할당됩니다. 평균 테이블 공간은 사용 된 범위와 여유 공간으로 구성됩니다.
사용 가능한 공간이 모두 채워지면 해당 데이터 파일의 공간이 부족합니다. DBA 기술이 도입되면서 세그먼트 확장을위한 여유 공간을 늘릴 수있는 방법을 결정하게됩니다.
범위가 반드시 인접하지는 않습니다. 예를 들어 항목 테이블을 만들고 첫 번째 1,000 개의 항목을 삽입하면 여러 번 확장되고 확장 될 수 있습니다. 이제 세그먼트가 5 개의 범위로 구성 될 수 있습니다. 그러나 새 테이블을 만들 수도 있습니다. 각 테이블은 새로운 테이블 스페이스에 생성되므로 데이터 파일의 시작 부분에서 시작됩니다. 두 번째 테이블을 만든 후에는 첫 번째 테이블을 다시 확장해야 할 수 있습니다. 다음 범위는 두 번째 범위 이후입니다. 결국, 테이블 공간을 공유하는 모든 오브젝트는 범위가 혼합됩니다.
이것은 나쁜 것이 아닙니다. 오라클이 스토리지를위한 더 나은 알고리즘을 사용하기 전부터 DBA는 이러한 범위를 통합하려고 많은 시간과 노력을 기울였습니다. 그것은
분열이라고 불 렸습니다.
과거의 일입니다. 빨지 마라! 그냥 내버려둬. Oracle 12c는 이러한 상황을 완벽하게 관리 할 수 있습니다.
테이블 스페이스에 여러 개의 데이터 파일이있는 경우가 있습니다. 테이블 공간에 둘 이상의 데이터 파일이있는 경우, 테이블 공간은 모든 데이터 파일에서 라운드 로빈 방식으로 익스텐트를 자동으로 작성합니다. 이것은 오라클의 또 다른 성능 특징입니다.
대부분의 애플리케이션을 지원하는 하나의 큰 테이블이 있다고 가정 해보십시오. 네 개의 데이터 파일로 구성된 테이블 공간에 있습니다. 테이블이 확장됨에 따라 Oracle은 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 … 등과 같이 각 데이터 파일에 익스텐트를 할당합니다. 오라클은 사용자가 데이터에 액세스 할 때 많은 물리적 장치에 분산 된 데이터를 활용할 수 있습니다. 활동이 많은 세그먼트의 경합을 줄입니다. Oracle 12c의 Oracle 블록
Oracle 블록
은 주어진 시간에 Oracle이 읽거나 쓰는 최소 단위입니다.
오라클은 대개 한 번에 두 개 이상의 블록을 읽거나 씁니다.하지만 요즘은 오라클에 달려 있습니다. 이전에는 오라클이 블록의 읽기 및 쓰기를 관리하는 방법을 직접 제어했지만 이전에는 기능이 자동으로 조정되었습니다. 특정 범위까지 수동으로 조정할 수 있지만 대부분의 설치는 오라클에 맡기는 것이 가장 좋습니다.
관계없이 블록은 최종 저장 단위입니다. 테이블과 인덱스의 데이터는 블록으로 저장됩니다. 테이블에 새 행을 삽입하면 다음과 같은 일이 발생합니다. 오라클은 세그먼트를 찾습니다. 오라클은 세그먼트가 있는지를 묻습니다.
세그먼트가 가득 차 있지 않은 블록을 반환합니다.
행 또는 색인 항목이 해당 블록에 추가됩니다.
-
삽입을위한 여유 공간이없는 블록이 있으면 세그먼트는 테이블 스페이스에서 다른 여유 범위를 확보합니다. 그건 그렇고,이 모든 것은 당신이 붙어있는 서버 프로세스에 의해 수행됩니다.
-
오라클 블록은 데이터 파일과 마찬가지로 물리적 요소도 가지고 있습니다. 오라클 블록은 OS 블록으로 구성됩니다. 장치의 최소 저장 장치 크기로 포맷 된 크기입니다.