본문 바로가기
DATABASE/DB study

Oracle tablespace, user 생성부터 롤 부여 / SQL(DML, DDL)

by 개폰지밥 2019. 1. 18.
반응형

0) 테이블스페이스(TABLESPACE)

오라클은 데이터를 관리하는 시스템으로 데이터를 어딘가에 저장해 놓고 사용해야 하는데, 데이터 저장 단위 중 가장 상위 개념이 바로 테이블스페이스이다. 

데이터 저장 단위는 물리적, 논리적으로 나눌 수 있고 물리적 단위는 파일이며, 논리적 단위는 크기 순으로 '데이터 블록 -> 익스텐트 -> 세그먼트 -> 테이블 스페이스'이다. 블록이 여러개 모여 익스텐트를, 여러 개의 익스텐트가 모여 세그먼트를 구성하는 식이다.

저장 단위는 4개이지만, 실제로 SQL을 이용해서 데이터를 조작하는 대상은 테이블이다. 테이블들을 담을 커다란 공간이 바로 테이블스페이스이다.

 

- 테이블스페이스 생성하는 방법

CREATE TABLESPACE myts DATAFILE 
'C:\app\chongs\oradata\myoracle\mytx.dbf' size 100M AUTOEXTEND ON NEXT 5M;

해석하면 테이블스페이스는 'myts'라는 이름으로 100MB 크기로 생성할 텐데, 논리적 개념이 테이블스페이스도 물리적으로는 파일로 존재하므로 실제 저장될 파일 이름과 위치가 필요하다. 여기서는 오라클이 설치된 C:\app~ 폴더에 myts.dbf라는 이름으로 생성한 것이다. 그리고 데이터가 늘어나 테이블스페이스가 꽉 찰 것을 대비해 '5MB'씩 자동 증가 옵션도 추가하였다.

 

1)  사용자 생성

seulgi 라는 사용자 생성하고 비밀번호는 choi로 하겠다.

    => create user seulgi identified by choi

 or

CREATE USER ora_user IDENTIFIED BY hong
DEFAULT TABLESPACE MYTS
TEMPORARY TABLESPACE TEMP;

여기서 TEMP는 임시 테이블스페이스이다.

2)  (역할) 부여하기

사용자를 생성한 뒤에 사용자에게 역할을 부여해야 한다. 현 시점에서 막 생성된 사용자인 'seulgi'는 데이터베이스에 접속할 수 조차 없어서 ‘connect’라는 롤을 부여받아야 오라클 데이터베이스에 접속할 수 있다. ‘dba’라는 롤을 부여해보자. ‘dba’의 롤을 부여 받으면 웬만한 기능은 모두 사용할 수 있다.

=> grant dba to seulgi

 

3) 사용자 계정으로 DB에 접속하기, 사용자 목록보기

    => connect seulgi/choi; -- 접속

    => select user from dual; -- 사용자 목록보기

 

* SQL이란(Structured Query Language)?

SQL을 단어 그대로 풀이하면, 구조화된 질의 언어로 DBMS상에서 데이터를 읽고 쓰고 삭제하는 등 데이터를 편리하게 관리하기 위한 일종의 프로그램 언어이다.

조금 더 깊게 설명하면 SQL은 집합적 언어이다. 우리가 흔히 알고있는 절차적 언어는 프로그래밍 순서대로 로직이 처리되는 것인데 집합적 언어는 데이터를 특정 집합 단위로 분류해 이 단위별로 한 번에 처리하는 언어이다.

 

SQL은 크게 DDL과 DML로 나눌 수 있는데 DDL은 데이터 정의어(Data Defintion Language)로 데이터베이스 객체를 관리하는 언어고, DML은 데이터 조작어(Data Manipulation Language)로 데이터 삽입, 조회, 삭제, 갱신 등 실제로 데이터를 조작하는 언어이다.

 

* DDL

DDL은 데이터베이스 객체를 생성, 삭제, 변경하는 언어로 대략 4가지 정도로 구분할 수 있다.

1) CREATE: 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성

2) DROP: 생성된 데이터베이스 객체를 영구히 삭제

3) ALTER: 이미 생성된 데이터베이스 객체를 수정

4) TRUNCATE: 테이블이나 클러스터의 데이터를 통쨰로 삭제

 

* DML

DML은 실제 데이터를 조작하는 언어로 6가지 정도로 나눌 수 있다.

1) SELECT: 테이블이나 뷰에 있는 데이터를 조회

2) INSERT: 데이터를 신규로 생성

3) UPDATE: 이미 생성된 데이터를 수정

4) DELETE: 데이터를 삭제

5) COMMIT: 트랜잭션 처리 변경된 데이터를 최종 적용

6) ROLLBACK: 트랜잭션 처리 변경된 데이터를 적용하지 않고 이전으로 되돌림

(간단하게 생각하면 우리가 주로 사용할 것이 DML인데 간단히 몇 줄 부터 몇 십줄, 혹은 몇 천줄 까지 작성할 SQL문은 거의 대부분 이 6가지에 속한다.)

 

* DCL

DDL, DML 외에도 데이터 제어 언어라고 하는 DCL(Data Control Language)이 있는데, 사용자에게 특정 권한을 주는 grant와 회수하는 revoke문이 있다. 

 

* 데이터베이스 객체의 종류

데이터베이스 객체란 데이터베이스 내에 존재하는 논리적인 저장 구조를 말한다.

데이터베이스 객체  설명 
테이블  데이터를 담고 있는 객체 
 뷰  하나 이상의 테이블을 연결해 마치 테이블인 것처럼 사용하는 객체
 인덱스 테이블에 있는 데이터를 빠르게 찾기 위한 객체
시노님  데이터베이스 객체에 대한 별칭을 부여한 객체 
시퀀스  일련번호 채번을 할 때 사용되는 객체 
함수  특정 연산을 하고 값을 반환하는 객체 
프로시저  함수와 비슷하지만 값을 반환하지는 않는 객체 
패키지  용도에 맞게 함수나 프로시저를 하나로 묶어 놓은 객체 

 

오라클 SQL과 PL/SQL을 다루는 기술책을 읽고 정리하기

반응형

댓글