Oracle

    [ORACLE] Directory 디렉토리 생성, 삭제, 변경

    [ORACLE] Directory 디렉토리 생성, 삭제, 변경

    * Directory 생성 SQL> create directory DIR1 as '/home/oracle/dir1'; sys, system 유저가 아닌 일반유저에서 directory 를 생성하려면, create any directory 권한이 있어야 합니다. grant create any directory to scott; * Directory 삭제 SQL> drop directory DIR1; 삭제할때도 sys, system 유저가 아닌 일반유저에서 삭제하려면, drop any directory 권한이 있어야 합니다. grant drop any directory to scott; * Directory 변경 (OS위치 변경) SQL> create or replace directory DIR1 as '/h..

    [ORACLE] LRU 알고리즘

    [ORACLE] LRU 알고리즘

    1. LRU 알고리즘 - 기본적으로 오라클은 메모리에서의 Queuing 알고리즘으로써 LRU(Least Recently Used) 리스트를 사용한다. 사용빈도가 높은 버퍼일수록 더 오래 데이터베이스 버퍼 캐시 내에 존재할 수 있도록 관리하는 알고리즘이다. 반대로 자주 사용하지 않는 버퍼들의 경우에는 임의의 시점에서 데이터 버퍼 캐시 밖으로 나가야 한다. * LRU 리스트 : 더티 버퍼를 제외한 모든 버퍼를 관리 * Dirty 리스트 : 같은 데이터 블록에 대한 데이터베이스 버퍼 캐시에 저장된 버퍼 이미지와 데이터 파일에 저장되어 있는 물리적인 블록 이미지가 서로 다른 버퍼들을 관리하는 리스트 종 류 내 용 LRU 리스트 (대체 리스트) 메인 리스트 : 사용된 버퍼들의 리스트, 핫 영역과 콜드 영역으로 구..

    [ORACLE] 오라클 서버 기본 구조

    [ORACLE] 오라클 서버 기본 구조

    * 아래 그림을 통해 알 수 있듯이 오라클 서버는 크게 인스턴스와 데이터베이스로 이루어져 있다. - 인스턴스는 오라클 서버가 사용하는 메모리 영역 - 데이터베이스는 오라클 서버가 사용하는 디스크 혹은 물리적인 영역 * 왼쪽 상단을 보면 SGA와 연동하는 사용자 프로세스(User process)와 서버 프로세스(Server process)가 존재하는데 이들은 오라클 서버와 외부에서 접속하는 클라이언트 프로그램들과의 연동 부분에 사용되는 프로세스들로서 오라클 서버를 운영하는 데 있어 중요한 부분을 차지한다. 특히 서버 프로세스의 경우 오라클 서버에 접속한 각 사용자들의 요청(쿼리, DML 등)을 전반적으로 관리해준다.

    [ORACLE] MERGE

    * MERGE 문의 이해 - MERGE문은 조건에 따라서 데이터의 삽입, 갱신, 삭제 작업을 한 번에 할 수 있다. - 해당 행이 존재하는 경우 UPDATE(DELETE포함할 수 있음)를 수행하고, 새로운 행일 경우 INSERT를 수행한다. - 대상 테이블에 대한 UPDATE/INSERT 조건은 ON절에 의해 결정된다. - MERGE문에서 CLOB 사용시 업데이트할 내용이 2000 bytes가 넘을 때 ORA-00600 오류가 발생하며, patch set 11.2.0.2 버전으로 해결할 수 있다. * MERGE Syntax MERGE [ hint ] INTO [ schema. ] { table | view } [ t_alias ] USING { [ schema. ] { table | view } | su..

    [ORACLE] 데이터 타입

    [ORACLE] 데이터 타입

    * 오라클 데이터 타입 - 관계형 데이터베이스에서 제공하는 데이터 타입은 CHAR, VARCHAR2, NUMBER, DATA, LONG, RAW, ROWID 타입으로 분류한다. - 원하는 정보를 가장 효율적으로 처리하기 위해서 적절한 데이터 타입의 선정이 필요하다. - 적절하지 못한 데이터 타입의 선정은 수행 속도를 나쁘게 하고 불필요한 자원을 낭비를 가져온다. * VARCHAR2 타입 - 가변길이 문자형 데이터 타입 - 최대 길이 : 2000 바이트(반드시 길이 지정) - 다른 타입에 비해 제한이 적다 - 일부만 입력 시 뒷부분은 NULL - 입력한 값의 뒷부분에 있는 BLANK도 같이 입력 - 전혀 값을 주지 않으면 NULL 상태 입력 - 지정된 길이보다 길면 입력 시 에러 발생 - 컬럼 길이의 편차..

    [ORACLE] TABLE 생성

    [ORACLE] TABLE 생성

    * 테이블이란? - 테이블은 데이터베이스의 기본적인 데이터 저장 단위이다. - 데이터베이스 테이블은 사용자가 접근 가능한 모든 데이터를 보유하며 레코드와 컬럼으로 구성된다. - 관계형 데이터베이스가 아닌 예전의 데이터베이스 용어에서는 파일과 테이블이, 필드와 컬럼이, 그리고 레코드와 행이 동일시되었다. - 테이블은 시스템 내에서 독립적으로 사용되길 원하는 엔티티를 표현할 수 있다. 예를 들면, 회사에서의 고용자나 제품에 대한 주문은 테이블로 표현 가능하다. - 테이블은 두 엔티티 간의 관계를 표현할 수 있다. 즉 테이블은 고용자와 그들의 작업 숙련도 혹은 제품과 주문과의 관계를 표현하는 데 사용될 수 있다. - 테이블 내에 있는 외래 키 (ForeIgn Key)는 두 엔티티 사이의 관계를 표현하는데 사용..

    [ORACLE] TABLESPACE,USER 생성 및 삭제

    [ORACLE] TABLESPACE,USER 생성 및 삭제

    * TABLESPACE 생성 CREATE tablespace test_up datafile 'test_up' SIZE 2048m AUTOEXTEND ON NEXT 4M MAXSIZE UNLIMITED LOGGING PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON; - TABLESPACE 이름 = test_up - 크기 = 2G - 2G 초과 시 4M씩 자동 확장 생성 * USER 생성 CREATE USER tester IDENTIFIED BY testerpw DEFAULT TABLESPACE test_up PROFILE DEFAULT QUOTA UNLIMITED ON..

    [ORACLE] 멀티테넌트 아키텍처

    [ORACLE] 멀티테넌트 아키텍처

    * 멀티테넌트 아키텍처에 대한 정의 [하나의 오라클 CDB(Container database) 내부에 다수의 PDB(Pluggable database)를 생성, 관리하는 멀티테넌트 컨테이너(Mutitenant container) 아키텍처] * 멀티테넌트 아키텍처에서 CDB는 다음 3개의 컨테이너(Container)로 구성된다. -> Root 컨테이너 : CDB$ROOT라고 불리며 오라클 제공 메타 데이터(Oracle supplied metadata)와 공통의 사용자(Common users) 정보를 저장하고 있다. -> Seed 컨테이너 : PDB$SEED라고 불리며 새로운 PDB를 생성할 때 사용되는 일종의 Template이다. PDB를 생성할 때 이미 내부적으로 생성해놓은 기본 데이터베이스 이미지(Te..

    [ORACLE] 로우 아이디(ROWID)

    [ORACLE] 로우 아이디(ROWID)

    * 로우 아이디는 임의의 컬럼에 해당하는 로우 데이터가 물리적으로 데이터베이스 디스크의 어딘가에 저장되어 있는지에 대한 주소라고 이해하면 된다. 결국 주소를 가지고 어느 누군가를 찾는 것이 당연히 쉬운 것처럼 데이터베이스의 경우에도 마찬가지이다. 데이터가 물리적으로 어디에 저장되어 있는지 그 주소를 가지고 찾아가는 것이 인덱스를 사용하게 되면 얻게 되는 이점이다. -> dept 테이블을 생성하고 각각의 로우 데이터에 해당하는 디스크 상의 주소가 자동적으로 생기게 되는데 이것이 로우 데이터이다. -> 로우 아이디는 전체적으로 80 bits를 사용하게 되는데 기본적으로 네 부분으로 나누어져 있다. 오브젝트 넘버(32 bits), 파일 넘버(10 bits), 블록 넘버(22 bits) 마지막으로 로우 넘버(1..

    [ORACLE] 인덱스(INDEX)

    [ORACLE] 인덱스(INDEX)

    * 인덱스(INDEX) -> 인덱스는 스키마 오브젝트중 하나이다. -> 인덱스는 어떤 사용자가 생성했는냐에 따라 해당 인덱스에 대한 스키마가 정해진다. -> 임의의 쿼리를 실행할 때 테이블 스캔을 하지 않고 Rowid를 사용하여 원하는 로우 데이터를 찾아온다. -> 디스크 I/O를 감소시킴으로써 보다 빠른 검색이 가능하다. -> 오라클 서버에 의하여 관리된다. -> 인덱스는 자동적으로 생성 가능하다. -> 임의의 컬럼에 Primary key 또는 Unique key 제한 조건을 설정하는 동시에 해당 컬럼에는 인덱스가 자동적으로 생성된다. -> 인덱스는 인위적으로 생성 가능하다. * 인덱스 기본 형식 CREATE INDEX index name ON table name (column name[ ,column..