[M1] Oracle

SANG JONG CHOI·2023년 3월 4일
0

0. 용어

스키마

  • 임의의 사용자가 생성한 모든 데이터베이스 객체 묶음
  • 테이블, 뷰, 인덱스 등의 모음
  • 스키마 이름은 그 사용자의 이름과 동일
  • 1명의 사용자는 1개의 스키마를 가진다

테이블스페이스 (TableSpace)

  • 테이블이 저장되는 공간
  • 오라클에서는 먼저 테이블이 저장될 공간을 만들고 나서 테이블 생성
  • 정의된 용량만큼 미리 확보한 테이블스페이스가 생성되어 지고 생성되어진 테이블스페이스에 테이블의 데이터가 저장

—-----------------------------------------------------------------

오라클 데이터 타입

  1. CHAR(size)
  • 고정길이 문자 데이터
  • 정해진 길이만큼 저장 영역 차지
  • 최대 길이 2000 bytes
  1. VARCHAR2(size)
  • 가변길이 문자 데이터
  • 실제 입력된 문자열의 길이만큼 저장 영역 차지
  • 최대 길이 4000 bytes
  1. NCHAR(size)
  • N이 붙으면 다양한 국가 언어 지원
  • 고정길이 문자 데이터
  • 최대 길이 2000 bytes
  1. NVARCHAR2(size)
  • 가변길이 문자 데이터

  • 최대 길이 4000 bytes

  • 한글은 설정에 따라 2 또는 3 바이트

  1. VARCHAR vs VARCHAR2
  • 현재는 동일하게 사용
  • 가변길이
  • 최대길이 4,000 바이트
  • 미래
    • VARCHAR 다른 용도로 사용할 예정
    • VARCHAR2 사용 권장
  1. NUMBER(w)
  • w자리까지의 수치로 최대 38자리까지 가능
  1. NUMBER(w, d)
  • w는 전체 길이, d는 소수점 이하 자릿수
  1. DATE
  • BC 4712년 1월 1일 ~ AD 4712년 12월 31일 까지
  • YYYY-MM-DD
  • RRRR-MM-DD
  1. LOB
  • 2GB까지의 가변 길이 바이너리 데이터 저장 가능
  • 이미지 문서, 실행 파일 저장 가능
  1. CLOB
  • 대용량 텍스트 데이터 타입 Character Long Object
  • 2,000자(한글 1,000자 이상)
  • 최대 128TB
  1. NCLOB
  • 대용량 텍스트의 유니코드 데이터 타입 National CLOB
  1. BLOB
  • 이미지, 동영상, 음악, 지도 데이터 등을 저장하기 위한 데이터 형식
  • Oracle 내부에 저장
  1. BFILE
  • 운영체제 파일 형태로 저장하고, 파일 위치만 Oracle 내부에 저장
  • 읽기 전용으로만 가능하고, 파일의 무결성/보안 등에 관한 사항은 모두 운영체제가 관리

시퀀스 (sequence)

  • 데이터베이스 객체로 유일한 값으로 일련번호 생성
  • 지정된 수치로 증가하거나 감소
  • 기본키 값을 일련번호로 자동생성할 때 상ㅇ
  • 테이블과 독립적으로 저장되고 생성
  • 하나의 시퀀스를 여러 테이블에서 사용 가능
-- 시퀀스 생성
CREATE SEQUENCE NO_SEQ
START WITH 1
INCREMENT BY 1
MAXVALUE 10000
MINVALUE 1
NOCYCLE;

-- 시퀀스를 적용할 테이블 생성
CREATE TABLE board (
bNo NUMBER PRIMARY KEY,
bSuject VARCHAR2(30) NOT NULL,
bName VARCHAR2(20)
);

-- 데이터 추가
INSERT INTO board VALUES(NO_SEQ.NEXTVAL, '공지사항', '홍길동');
INSERT INTO board VALUES(NO_SEQ.NEXTVAL, '날씨', '이몽룡');
INSERT INTO board VALUES(NO_SEQ.NEXTVAL, '휴가', '성춘향');

1. 오라클 설치

오라클 다운로드

  • for mac 관련글
    1. docker 설치
    2. terminal에서 docker search oracle-xe-11g 명령어 입력하여 다운로드 할 이미지 검색
  1. for mac 다른 관련글

SQL Developer 다운로드

  • jdk 포함 안된 버전으로 다운받기

접속 생성 (+ 버튼 눌러서)

  • Name : 관리자
  • 사용자 이름 : SYSTEM
  • 비밀번호 : 1234
  • (아래 내용 확인
    • 호스트 이름 : localhost
    • 포트 : 1521
    • SID : xe)

  • [테스트] 버튼 눌러서
  • 상태 : 성공 출력되면 됨
  • 성공 확인 후 저장 [저장]
  • 접속 (관리자용)
    • SYSTEM
    • 1234
    • 사용자 계정 생성

사용자 계정 생성

  • 사용자 생성 시 DB(테이블 스페이스) 지정
  • 사용자 이름 주의!
    • 21C 버전 : 앞에 C## 붙여야 함
    • 11g 버전 : 안 붙임
      • (1) C## 붙여서 생성하고
      • (2) 안 붙이고 생성할 수 있도록 설정
      • 최종은 안 붙여서 사용할 것임
  • [다른 사용자] / [사용자 생성]
    • 사용자 탭
      • 사용자 이름 : C##USER1
      • 비밀번호 : 1234
      • 기본 테이블스페이스 : USERS
      • 임시 테이블스페이스 : TEMP
    • 부여된 롤
      • CONNECT : 권한이 부여됨 체크
      • RESOURCE : 권한이 부여된 체크
    • 할당량
      • USERS : 무제한 체크
    • SQL : 자동 생성된 SQL 문 확인
    • [적용] 버튼 클릭
  • 사용자 생성되었는지 확인

접속 생성 (생성된 C##USER1사용자용 )

  • Name : TEST_DB
  • 사용자 이름 : C##USER1
  • 비밀번호 : 1234
  • 테스트
  • 저장
  • 접속

C## 붙이지 않고 사용자 계정 생성

  • DBA 권한이 있는 계정(SYSTEM, SYS)으로 다음 명령어 실행
  • ALTER SESSION SET “_ORACLE_SCRIPT”=true;

  • [다른 사용자] / [사용자 생성]
    • 사용자 탭
      • 사용자 이름 : SPRING_USER
      • 비밀번호 : 1234
      • 기본 테이블스페이스 : USERS
      • 임시 테이블스페이스 : TEMP
    • 부여된 롤
      • CONNECT : 권한이 부여됨 체크
      • RESOURCE : 권한이 부여된 체크

- 할당량
    - USERS : 무제한 체크
- SQL : 자동 생성된 SQL 문 확인
    
    ```css
    -- USER SQL
    CREATE USER "SPRING_USER" IDENTIFIED BY "1234"  
    DEFAULT TABLESPACE "USERS"
    TEMPORARY TABLESPACE "TEMP";
    
    -- QUOTAS
    ALTER USER "SPRING_USER" QUOTA UNLIMITED ON "USERS";
    
    -- ROLES
    GRANT "CONNECT" TO "SPRING_USER" ;
    GRANT "RESOURCE" TO "SPRING_USER" ;
    
    -- SYSTEM PRIVILEGES
    ```
    
- [적용] 버튼 클릭
  • SPRING_USER 사용자 생성되었는지 확인

접속 생성 (생성된 SPRING_USER 사용자용 )

  • Name : SPRING_DB
  • 사용자 이름 : C##USER1
  • 비밀번호 : 1234
  • 테스트
  • 저장
  • 접속

사용자 계정 생성 연습문제

  • 사용자 : NEW_USER / 1234
  • 접속 : NEW_DB
  • NEW_DB에 접속

2. SQL Developer 사용

3. 사용자 계정 생성

4. 테이블 생성

(1) 마법사 사용

(2) SQL 문 사용

CREATE TABLE product(
prdNo VARCHAR2(10) NOT NULL PRIMARY KEY,
prdName VARCHAR2(30) NOT NULL,
prdPrice NUMBER(10),
prdCompany VARCHAR2(30),
prdStock NUMBER(5)
);

INSERT INTO product VALUES  ('1001', '노트북', 1000000, '삼성', 10);
INSERT INTO product VALUES  ('1002', '냉장고', 12000000, 'LG', 5);
INSERT ALL

INTO product (prdNo, prdName, prdPrice, prdCompany, prdStock) VALUES ('1003', '마우스', 30000, '로지텍', 7)
INTO product (prdNo, prdName, prdPrice, prdCompany, prdStock) VALUES ('1004', '키보드', 50000, 'LG', 2)
INTO product (prdNo, prdName, prdPrice, prdCompany, prdStock) VALUES ('1005', '프린터', 300000, 'HP', 10)
SELECT * FROM dual;
COMMIT;
SELECT * FROM product;
  • [도구] / [환경설정] : 워크시트 기본 경로 설정
    • [데이터베이스] / 워크시트
    • 스크립트를 찾을 기본 경로 선택 : [찾아보기]
    • [확인]

5. txt 파일로부터 임포트해서 테이블 생성

6. 데이터베이스 백업 : expert, import

주의 ! 
[도구] / [환경설정] : 날짜 출력 형식 변경
[데이터베이스] / [NLS]

- 날짜 형식 : RR/MM/DD
- > YYYY-MM-DD

import

  • product.txt 파일을 읽어서 테이블 생성 및 데이터 입력
  • [테이블] / [데이터 임포트]
  • 파일 : [찾아보기]
  • 형식 : text
  • 인코딩 : EUC_KR
  • 구분 : ,
  • 왼쪽 둘러싸기 : 없음
  • 테이블 이름 : product
    • 데이터 유형 변경

export

백업 및 복구

  • 백업 : EXPORT
  • 복구 : IMPORT
  • [도구] / [데이터베이스 익스포트]
    • 파일명 : 익스포트01.sql
  • IMPORT
    • 익스포트01.sql 파일을 [스크립트 실행]해서 임포트
    • 주의!
      • 동일한 사용자 계정이 생성되어 있어야 하고
      • TableSpace가 있어야 함
      • 동일 테이블명이 존재하면 오류

7. Spring Boot + MyBatis + Oracle

  • Spring Boot 프로젝트 생성
    • Name : spring_boot_mybatis_oracle
    • Group : com.spring_boot_mybatis_oracle
    • Artifact : project
    • Package: com spring_boot_mybatis_oracle.project
  • Oracle Driver 선택
profile
No error, No gain

0개의 댓글