3장 오라클

< 오라클 개요 >

 

- 가장 높은 시장 점유율과 신뢰성

- 대부분 운영체제 및 HW 지원

- 전자상거래와 데이터 웨어하우징을 위한 고성능 인터넷플랫폼 제공

 

-OLTP : 온라인 트랜잭션 처리 -> 소수의 레코드만 접근하여 트랜잭션이 끝남

-OLAP : 어마어마하게 쌓이는 데이터로부터 요약된 것.

- 응용 서버(오라클 인스턴스)와 데이터베이스 분리, 프레젠테이션은 클라이언트가 맡음.

- SQL : if, 반복, 입출력 등 고급 프로그래밍 언어가 가진 기능이 없음

-> PL + SQL인 PL/SQL 구문 사용. 오라클에서만 가능.

 

 

- 오라클 서버는 인스턴스와 데이터베이스루 구성. 오라클 인스턴스는 백그라운드 프로세스 + 메모리 구조로 구성.

- 오라클 SQL 디벨로퍼 : 오라클에다 SQL을 던질 때 PLSQL로 응용 프로그램을 개발할 때 사용

 

 

-오라클 DB 물리적 구조 : 데이터베이스 내의 운영체제파일(데이터파일)들의 집합

-> 각 데이터파일은 운영체제 블록으로 이루어짐

- 오라클 DB 논리적 구조 : 위 이미지와 같음

1. 적어도 하나의 테이블 스페이스(데이터파일)를 포함

2. 테이블 스페이스 종류 : 시스템, 임시, 사용자 테이블 스페이스 등

3. 테이블 스페이스는 하나 이상의 세그먼트를 포함

4. 세그먼트는 익스텐트(특정 유형의 데이터 구조 저장을 위해 할당됨)들의 집합

5. 익스텐트는 오라클 데이터 블록의 집합

데이터 블록 집합 = 익스텐트, 익스텐트 집합 = 세그먼트, 세그먼트(=데이터파일) 집합 = 테이블 스페이스

 

 

< 오라클 설치 >
1. 보안 갱신 구성 : 라이센스(교육 및 개발용은 계약없음)

2. 설치 옵션 선택

3. 시스템 클래스 선택

4. 일반 설치 구성 : 설치 위치, 버전, 전역DB 이름, 계정 설정 등

-> 전역 데이터베이스 : 오라클은 분산DB를 지원하여 도메인 앞에 데이터베이스 이름을 둠.

-> 이름을 입력하면 자동으로 SID에도 입력, 이름은 DB를 고유히 식별할 수 있는 완전한 이름

5. 필요조건 검사 수행 : 메모리 등 최소 시스템 요구사항 충족하는지 확인 -> 용량이 커서 필요한 HW자원 있는지 확인

6. 요약 : 설치 정보 요약

7. 제품 설치 : 설치

 

 

-오라클 폴더와 파일

app/DBNOTE/dradata/DBSERVER -> 전역 DB이름 갖는 폴더 : DB관련파일

TEMP01.DBF : SQL 처리 과정에서 생성되는 임시 테이블 저장

SYETEM01.DBF : 데이터 사전 저장

USER01.DBF : 사용자 생성 테이블 저장

 

 

- Oracle SQL Developer : DB 개발을 위한 그래픽 인터페이스

-> SQL 던져서 실행 결과도 볼 수 있고 그렇다.

- 오라클에서는 업데이트를 할 때 특정 컬럼만의 권한을 줄 수도 있음.

grant

connect : 접속 권한을 주자

resource : 생성 권한을 주자

create session : 세션 생성 권한을 주자

create view : 뷰를 생성할 수 있게 -> 이걸 안주면 테이블을 못만듦

-- : 주석

 

- 관리자는 사용자의 비밀번호를 변경 가능

 

 

- DEPTNO : 기본키이기 때문에 not null 명시 -> 그래야 고유하게 식별 가능

- PRIMARY : 기본키가 누구냐?

- INSERT INTO ___ VALUES : 키워드. 인서트 한다는 의미. 문자는 쌍따옴표

- UNIQUE 옵션 : 

- DEFAULT 옵션 : not null이기에 직급이 없는 상태로 들어오면 디폴트로 사원을 채워준다

- CHECK 옵션 : 어떤 컬럼이 갖는 값의 범위 지정하는 제약조건

- FOREIGN : 외래키 -> PREFERENCE : 참조 대상

- ON DELETE CASCADE : 연쇄로 지운다!

 

- 참조가 있기 때문에 1-3번 테이블의 위치를 바꾸면 에러 발생

-ALTER TABLE : 최초에 테이블을 만들 땐 레코드가 하나도 없어서 참조가 어려울 수 있음
-> 포린키 지정하지 않고 각자 생성한 다음에 이 문장을 통해서 외래키를 추가할 수 있음.

 

 

 

 

 

- tab : 구성요소가 굉장히 많은데 테이블이나 뷰에 관한 정보를 많이 갖고 있음

 

몇 개가 출력될까?

-> 4개

- ADD Manager NUMBER 다음에 not null을 명시할 수 있을까?

-> NO.

- 컬럼은 언제든지 추가할 수 있다. 그러나 기존에 다른 컬럼들에 레코드가 있었다면 그 레코드들은 이 추가된 컬럼이 없다. 그러면 null값이 채워지게됨. -> 컬럼을 추가할 때 not null을 명시하는 것은 불가능

 

 

- PL/SQL : 관계 DB를 위한 표준 데이터 언어인 SQL에 절차적인 언어의 기능을 추가
-> 블록 위주, 기본 단위는 블록 프로시저 함수

 

 

+ 하나의 섹션은 필수
실행절이 필수 -> 선언절과 예외사항 처리절은 옵션

 

커서는 C로 생각하면 struct. 단 1개.

1. 커서를 선언 : CURSOR 이름 IS SELECT문;

2. 실행절에서 커서 열기 : OPEN 이름;

3. 활성집합에 있는 행을 한 번에 하나씩 차례로 검색 : FETCH 이름 INTO 변수리스트;
-> fetch는 읽어서 고급프로그래밍 변수들에게 넘겨줌

4. 커서를 닫음 : CLOSE 이름;

 

 

이런식으로 업데이트 할 수 있다.