본문 바로가기
Computer Science/DataBase

[데이터베이스] 3장 오라클

by na1-4an 2023. 11. 2.

0. 오라클

  • 오라클 사가 개발한 관계 DBMS
  • 높은 시장 점유율, 높은 신뢰성.
  • 대부분의 운영체제, 하드웨어 지원.
  • 표준 에디션1, 표준에디션, 엔터프라이즈 에디션 판매.
  • 개인용 에디션은 윈도우 os 전용.

3-1 오라클 개요

1. 오라클 개요

(외울 필요 없음)

  • 고성능의 인터넷 플랫폼 제공
  • (온라인 트랜잭션 처리, 데이터 웨어하우스, OLAP, 전자상거래 등)
  • 다양한 멀티미디어 데이터 타입 관리 가능

2. 오라클의 인터넷 플랫폼

  - SQL: if 기능이나 반복,  scanf, printf 기능이 없음

  - PL/SQL: (Programming Language + SQL) -> 오라클에서 사용.

3. 오라클 아키텍쳐

  • 오라클 서버:한 오라클 인스턴스와 오라클 데이터베이스로 구성됨.
  • 오라클 인스턴스: 백그라운드 프로세스들과 메모리 구조의 조ㅎ바.
  • (사용자가 오라클 서버에 SQL을 입력하기 저네 반드시 오라클 인스턴스에 연결되어 있어야 함.)
  • 접속: 사용자 프로세스 서버 프로세스 간의 통신 경로
  • (서버 프로세스: 사용자가 오라클에 로그인하면 오라클을 실행하는 프로세스가 생김.)
  • 세션: 사용자가 오라클 서버로부터 인증될 때부터 시작하여 사용자가 로그아웃을 하거나 비정상적으로 종료될 때까지 지속.

4. 오라클 특징(9)

(외울 필요 없음)

클라이언트, 서버 환경/다양한 플랫폼/대규모 데이터베이스/다중 동시 데이터베이스 사용자/높은 가용성/산업표준/높은 보안 관리/자동 데이터베이스 회복 및 자동 에러 정정/XML 등 다양한 데이터 타입 지원.

5. 오라클 데이터 베이스의 물리적인 저장 구조

: 데이터베이스 내의 운영체제 파일(데이터파일)들의 집합

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

6. 오라클 데이터베이스의 논리적인 저장구조

  • 오라클 데이터베이스는 적어도 하나의 테이블스페이스를 포함함.
  • 테이블 스페이스: 데이터 파일이라고 부르는 하나 이상의 파일로 구성됨. 하나 이상의 세그먼트 포함
  • (테이블 스페이스 종류: 시스템 테이블스페이스, 임시 테이블스페이스, 사용자 테이블스페이스 등)
  • 세그먼트: 특정한 유형의 데이터 구조를 저장하기 위해 할당되는 익스텐트들의 집합
  • 익스텐트: 오라클 데이터 블록(운영체제의 데이터 블록 아님!)들로 이루어짐
  • 오라클 데이터 블록: 읽기, 쓰기 연산의 가장 작은 단위

닭발 모양은 1:n 관계

3-2 오라클 설치 및 수행

1. 오라클 다운로드

  • 오라클 홈페이지 접속해 로그인.
  • 'Database 11g Enterprise/Standard Editions'선택.
  • 라이선스 동의.
  • 두 개의 오라클 zip파일 다운로드 후 압축 풀기.
  • 다운로드 폴더의 setup.exe 실행하면 OUI(Ocracle Universal Installer)가 실행됨.

(OUI: 오라클 제품의 설치 및 구성 과정을 안내. 오라클의 구성요소들을 설치, 업그레이드, 제거하고 데이터베이스를 생성하는데 사용됨. 오라클 8i부터 자바 기반의 GUI형식의 프로그램으로 만들어짐.)

2. 오라클 설치 8단계

  • 1단계) 보안 갱신 구성 단계: [전자메일 주소]와 [My Oracle Support 비밀번호]를 입력하라고 뜨지만 입력 안하고 넘어가도 됨. "전자메일 주소가 지정되지 않음"이라고 뜨지만 그냥 넘어가도 됨.
  • 2단계) 설치 옵션 단계: [데이터베이스 생성 및 구성] 선택. 이는 샘플스키마와 함께 새 데이터베이스 생성.
  • 3단계) 시스템 클래스 선택 단계: [데스크톱 클래스] 선택. 노트북 또는 데스크톱에 설치하는 경우.
  • 4단계) 일반 설치 구성 단계: 7가지 설정. 
  • ① Oracle Base 설치 위치 - ['C:\app\DBNOTE'] 입력.
  • ② 소프트웨어 위치 - 자동으로 Oracle Base 폴더의 하위폴더로 생성된 위치 사용.
  • ③ 데이터베이스 파일 위치 - 자동으로 Oracle Base 폴더의 하위폴더로 생성된 위치 사용.
  • ④ 데이터베이스 버전 - [Personal Edition] 선택.
  • ⑤ 문자 집합 - [기본값(KO16MSWIN949)] 선택.
  • ⑥ **전역 데이터베이스 이름** - [DBSERVER] 입력. 이 경우 완전한 전역 데이터 베이스 이름은 DBSERVER.dbnote.uos.ac.kr임.
  • ⑦ 관리 권한을 갖는 오라클 계정의 비밀번호 - SYS계정(데이터 사전의 소유자)과 SYSTEM계정(내부 테이블과 뷰들의 소유자)의 비밀번호. 소문자와 대문자, 숫자 하나 이상 사용. 8~30자 내.
  • 5단계) 필요 조건 검사 수행 단계: 오라클을 설치하는데 필요한 최소 시스템 요구사항을 충족하는지 확인. [다시확인]을 클릭하면 필요 조건 검사를 실행함.
  • 6단계) 요약 단계: 설치할 정보를 요약. [완료] 클릭 후 넘어감.
  • 7단계) 제품 설치 단계: 데이터베이스 구성에 포함되는 도구들의 이름과 설치 상태, 설치 비율을 보여줌.(Oracle Database 설치, Oracle Database 구성) 데이터베이스 생성 창과, DBCA 창(데이터베이스 요약 정보를 보여줌.)이 뜸.
  • 8단계) 완료 단계

  - 4단계의 전역 데이터베이스 이름

  • 형식: database_name.domain
  • 전역 데이터베이스 이름은 네트워크 도메인 안에서 서로 다른 데이터 베이스를 고유하게 식별할 수 있는 데이터베이스의 완전한 이름임.
  • 전역 데이터베이스 이름을 입력하면 자동적으로 SID(시스템 식별자)에도 입력됨
  • SID는 로컬 컴퓨터의 다른 데이터베이스와 이 데이터베이스를 고유하게 식별하는 데이터베이스 이름임.

3. 오라클이 윈도우 7의 서비스로 등록 되어 있는 지 확인

: [시작] -> [제어판] -> [시스템 및 보안] -> [관리도구] -> [서비스]에 들어가면

  로컬 컴퓨터에서 실행되는 서비스들을 확인할 수 있음.

  -> 만약 전역데이터베이스 이름을 'DBSERVER'로 설정했으면 서비스 이름은 'OracleServiceDBSERVER'가 됨.

4. 오라클 관련 프로그램

: [시작] -> [모든프로그램] -> [Oracle - OraDb11g_home1]에서 오라클 관련 프로그램들을 볼 수 있음.

5. 오라클 관련 파일

: C:\app\DBNOTE\oradata\DBSERVER 에 저장됨.

  • TEMP01.DBF: SQL문을 처리하는 과정에서 생성되는 임시 테이블들이 저장됨.
  • SYSTEM01.DBF: 데이터사전(시스템 카탈로그)이 저장됨.
  • USER01.DBF: 사용자가 생성한 테이블들이 저장됨.

3-3 환경 설정

1. Oracle SQL Developer

: 데이터베이스 개발을 위한 GUI

  - 기능: 데이터베이스 검색, SQL, PL/SQL 구문 실행, SQL 스크립트 실행, PL/SQL 구문 편집 및 디버깅.

  - 조건: 자바 기반으로 동작하기 떄문에 JDK가 설치되어 있어야 함.

  - 접근: [시작] -> [모든 프로그램] -> [Oracle - OraDb11g_home1] -> [응용 프로그램 개발] -> [SQL Developer] -> JDK의 java.exe 파일의 경로로 설정 SQL Developer 설치.

  • [접속 이름]: 사용자가 로그인 정보를 저장하는 프로파일의 이름
  • [사용자 이름]: 접속하려는 데이터베이스에 대한 사용자 계정
  • [비밀번호]: 사용자 계정의 비밀번호
  • [롤]: SYSDATBA 선택.(데이터베이스 관리자)
  • [호스트 이름]: 접속하려는 데이터베이스가 동작하고 있는 컴퓨터의 이름
  • [포트]: 오라클 리스너 서비스의 기본 포트(기본 1521)

2. 사용자 등록

: 두 명의 데이터베이스 사용자 등록하기

  - sys 사용자(DB관리자. 모든 중요 사항 결정.)로 로그인.

  - 질의 입력창에 아래 내용 입력

  • CREATE USER: 사용자 등록. KIM은 사용자의 계정, bluesky는 초기 비밀 번호. users는 묵시적인 사용자 테이블스페이스. temp는 묵시적인 임시 테이블스페이스.
  • GRANT: CREATE USER문으로 사용자를 생성한 시점의 사용자는 아무런 권한을 갖지 못함. 그래서 GRANT문으로 데이터베이스 관리자는 이 사용자에게 필요한 권한 허가를 부여해줌. KIM에게 2개의 역할(connect, resource)과, 2개의 시스템 권한(create session, create view)을 허가했음.

  - 질의 입력창에 들어있는 명령 실행 방법(3): 

  • [실행] -> [userCreate.sql 실행]
  • F5 
  • 도구 모음에서 스크립트 실행 버튼 클릭

3. 비밀번호 변경

  • 데이터베이스 관리자가 사용자의 비밀번호를 변경하거나 사용자가 자신의 비밀번호를 바꿀 수 있음.
  • sys계정으로 로그인을 한 상태에서 아래의 명령 사용해 변경 가능.
  • ALTER USER KIM identified by shinystar;

4. 예제 테이블 생성

  ▶ 정의한 테이블과 뷰 확인: SELECT * FROM tab;

   (tab은 데이터베이스 내의 테이블에 관한 정보를 나타내는 데이터 사전 뷰.)

   위의 명령어를 실행하면 아래의 결과를 얻음.

두 개의 테이블과 한 개의 뷰가 생긴 것을 알 수 있음.

  ▶ 정의한 테이블 구조 확인: DESCRIBE DEPARTMENT;    or      DESC DEPARTMENT;

   위의 명령어를 실행하면 아래의 결과를 얻음.

  ▶ 테이블의 튜플 내용 확인: SELECT * FROM DEPARTMENT;

   위의 명령어를 실행하면 아래의 결과를 얻음.

  ▶ 테이블에 애트리뷰트 추가: ALTER TABLE DEPARTMENT ADD Manager NUMBER;

  ▶ 테이블에 애트리뷰트 삭제: ALTER TABLE DEPARTMENT DROP COLUMN Manager;

3-4 PL/SQL

1. PL/SQL

: SQL에 절차적인 언어의 기능(if문, while 루프 등)을 추가해 확장한 언어.

; 기본적인 단위는 블록, 프로시저, 함수

: 블록 위주의 언어

: 아래는 PL/SQL 블록 구조 설명(7)

  • 세 개의 섹션으로 구성됨.
  • 선언절에서는 변수와 객체들 선언.
  • 실행절에서는 변수들 처리(조작)
  • begin으로 시작하는 실행절만 필수이고 나머지는 옵션임.
  • 예외상황 처리절에서는 실행 중에 발생한 예외나 에러를 처리.
  • END 및 다른 PL/SQL문에는 문장 끝에 세미 콜론 작성.
  • 한 줄 주석은 -- 사용. 여러줄 주석은 /**/ 사용.

2. PL/SQL의 제어 구조

3. 커서

: 커서를 선언해 질의의 결과의 각 행을 처리해야 함.

: 질의의 결과로 반환되는 행들은 활성 집합에 저장됨.

: 커서 사용시 <커서_변수_이름>.<애트리뷰트_이름>

<<커서 사용의 4단계>>

  • 블록의 선언절에서 커서 선언: CURSOR 커서_이름 IS SELECT문;
  • 커서 사용 전 실행절에서 커서 열기: OPEN 커서_이름;
  • 활성 집합에 있는 행을 한 번에 하나씩 차례대로 검색: FETCH 커서_이름 INTO 변수_리스트;
  • 커서 닫음: CLOSE 커서_이름;

4. 갱신할 튜플에 대해 커서 정의

EXEC SQL
    DECLARE title_cursor CURSOR FOR
    SELCECT title FROM employee FOR UPDATE OF title;

UPDATE    employee
SET           title =  :newtitle
WHERE    CURRENT OF title_cursor

5. PL/SQL의 예