학교 수업/DB시스템 구현

[DB 시스템 구현] 오라클 구조

부농쿼카 2023. 7. 2. 16:22
728x90

이번 포스팅에서는 오라클의 구조에 대해 알아보겠습니다. 오라클의 구조는 논리적 구성요소와 물리적 구성요소로 나눌 수 있습니다.

논리적 구성요소

데이터 블록

오라클의 논리적 구성요소에는 가장 먼서 데이터 블록이 있습니다. 데이터 블록은 데이터가 저장되는 가장 작은 단위입니다. 만약, 저장해야 할 데이터가 늘어나면 데이터 블록의 배수로 저장공간을 확보하여 저장하게 됩니다. 

데이터 블록의 표준 크기는 db_block_size 라는 설정값에 저장되며,

show parameter db_block_size

 관리자 계정에서 다음과 같은 명령어를 통해 블록의 크기를 확인할 수 있습니다.

익스텐트(extent)

데이터 블록의 다음 단계인 논리적 데이터 저장 공간입니다. 연속적인 데이터 블록이 여러 개 모여 익스텐트를 구성합니다.

세그먼트(segment)

여러 개의 익스텐트들이 모여 하나의 세그먼트를 구성합니다. 

테이블 스페이스(table space)

하나의 데이터베이스는 오라클의 논리적 저장 단위인 테이블 스페이스들로 구성됩니다. 하나의 테이블 스페이스는 하나 이상의 세그먼트를 포함해야 한다는 성질을 가지고 있습니다.

물리적 구성요소

데이터 파일

데이터 파일은 오라클에서 관리하는 데이터들이 실제 저장된 디스크 상 파일들을 말합니다.

물리적 구성요소

위 사진에서 데이터 파일 내 들어있는 테이블들은 모두 createable한 recode들을 의미합니다.

데이터 파일은 oradata/orcl 폴더에 저장됩니다.

 

간단하게 테이블 스페이스를 생성하는 실습을 진행해보도록 하겠습니다.

오라클에서 테이블을 사용하기 위해서는 가장 먼저, 해당 테이블들이 저장될 테이블 스페이스를 사용해야 합니다.

테이블 스페이스는 sys계정, 즉 오라클 관리자 계정만이 생성할 수 있습니다. 테이블 스페이스를 생성하면 실제 데이터가 저장될 디스크 상 공간을 지정하게 됩니다.

 

테이블 스페이스 생성방법은 다음과 같습니다. 우선, 데이터를 저장하고 싶은 폴더를 생성해줍니다.

저는 D드라이브 밑에 새로운 폴더를 하나 생성하였습니다.

그 후 cmd창에서 sql에 관리자 계정으로 접속한 후 다음과 같은 명령문을 통해 테이블 스페이스를 생성합니다.

create tablespace 테이블스페이스 이름
datafile '데이터 파일 경로 명' size 데이터크기;

예시

잘 입력하면 위 예시사진처럼 테이블 스페이스가 생성됩니다. 새로 만든 폴더에 가면 다음과 같이 테이블 스페이스가 잘 생성된 것 또한 확인이 가능합니다.

사용자 계정을 생성하는 법도 알아보겠습니다. 사실 공부를 위해 사용한다면 관리자 계정만을 사용해도 별 문제가 없을 것이라고 생각을 많이 하실 것입니다. 그러나, 관리자 계정의 경우 oracle이 기본적으로 가지고 있는 내장 table들이 아주 많이 들어있습니다. 간혹, 테이블을 생성하고 사용하다가 내장 table과 섞여 헷갈릴 위험이 있기 때문에 사용자 계정을 생성하여 사용하는 것을 추천드립니다.

참고로, 저는 oracle 21c버전으로 11g 사용자와는 약간 다를 수 있음을 미리 알려드립니다

alter session set"_oracle_script"=true;
create user 사용자계정
identified by 비밀번호
default tablespace 사용할 테이블 스페이스 이름

다음과 같이 사용자가 생성됨을 알 수 있습니다!

 

이제 사용자 계정을 생성하였으니, 사용자에게 권한을 부여해주도록 하겠습니다. 권한에 대한 자세한 설명은 뒤 게시글에서 진행하겠습니다.

grant connect, resource, dba to 사용자계정;

다들 저처럼 당황하지 말고 꼭 세미콜론(;) 붙이세요...

728x90