본문 바로가기

DataBase

PLT 2.5 SYNONYM PLT 2.5 SYNONYM 오라클 객체(테이블, 뷰, 시퀀스, 프로시저)에 대한 대체이름(Alias)를 말합니다. Synonym은 실질적으로 그 자체가 Object가 아니라 Object에 대한 직접적인 참조 입니다. SYNONYM을 사용하는 경우 n 오브젝트의 실제 이름과 소유자 그리고 위치를 감춤으로써 database 보안을 개선하는데 사용 됩니다. n Object에의 Public Access를 제공 합니다. n Remote Database의 Table, View, Program Unit를 위해 투명성을 제공 합니다. n Database 사용자를 위해 SQL 문을 단순화 할 수 있습니다. Private Synonym : 특정 사용자만 이용할 수 있습니다. Public Synonym : 공용 사용자 그.. 더보기
PLT 2.4 SEQUENCE PLT 2.4 SEQUENCE SEQUENCE는 테이블의 행에 대한 SEQUENCE 번호를 자동적으로 생성하기 위해 사용될 수 있다. SEQUENCE는 사용자가 생성한 데이터베이스 객체이다. SEQUENCE에 대한 전형적인 사용은 각행에 대해 유일해야 하는 PRIMARY KEY 값을 생성하기 위해서 입니다. SEQUENCE는 Oracle에 의해 발생되고 증가(또는 감소) 됩니다. SEQUENCE 값에 대해 보다 빠른 액세스를 허용하기 위해 메모리에 SEQUENCE를 CACHE합니다. CACHE는 SEQUENCE를 처음 참조할 때 형성됩니다. 다음 SEQUENCE 값에 대한 요구는 CACHE된 SEQUENCE에서 읽어 들입니다. 마지막 SEQUENCE가 사용된 후에 SEQUENCE에 요구하면 CACHE된 .. 더보기
PLT 2.3 View PLT 2.3 View 하나 혹은 그 이상의 table로부터 사용자에게 비추어지는 데이터의 또 다른 방식의 창이다. View는 정의된 table 혹은 table들의 모든 column이나 몇 개의 column만 선택하여 정의 할 수 있다. 중요한 것은 index와는 달리 view는 독립적으로 데이터가 저장되는 것이 아니라는 것이다. 단지 또 다른 방식의 창과도 같다. View를 사용하는 목적 l Sensitive Security 제공 : End user가 access할 수 있는 row나 column등에 제한을 가함으로써 필요한 경우 security를 보장할 수 있다. l Data Access Performance 향상 : 두 개 이상의 table로부터 data access하는 경우가 빈번히 발생하는 경우 .. 더보기
PLT 2.2 Index PLT 2.2 Index 인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조입니다. l 자동 인덱스 : 프라이머리 키 또는 uinque 제한 규칙에 의해 자동적으로 생성되는 인덱스 입니다. l 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스들 입니다. 인덱스의 분류 1. 물리적 분류 : 비트리(B-tree) 인덱스와 비트맵(Bitmap) 인덱스 2. 논리적 분류 : 단일열 인덱스와 결합(Concatenated) 인덱스, Unique 인덱스와 NonUnique 인덱스 물리적 분류 B-Tree index n 인덱스의 칼럼이 여러개 동일한 키갑을 가지고 있을 경우 (ex 부서번호) n 널.. 더보기
Chapter 2 Oracle 객체 - PLT 2.1 Table Chapter 2 Oracle 객체 PLT 2.1 Table 테이블은 실제로 데이터들이 저장되는 곳 이라고 생각하면 쉽게 이해 할 수 있습니다. CREATE TABLE명령어를 이용해서 테이블을 생성 할 수 있습니다. 다음은 테이블에 관한 설명입니다. 1. 테이블은 오라클 데이타베이스의 기본적인 데이타 저장 단위 입니다. 2. 데이타베이스 테이블은 사용자가 접근 가능한 모든 데이타를 보유하며 레코드와 컬럼으로 구성 됩니다. 3. 관계형 데이타베이스가 아닌 예전의 데이타 베이스 용어에서는 파일과 테이블이, 필드와 컬럼이, 그리고 레코드와 행이 동일시 되었습니다. 4. 테이블은 시스템내에서 독립적으로 사용되길 원하는 엔티티를 표현할수 있습니다. 예를 들면, 회사에서의 고용자나 제품에 대한 주문은 테이블로 표현.. 더보기
PLT 1.3 롤백 세그먼트 (ROLLBACK SEGMENTS) PLT 1.3 롤백 세그먼트 (ROLLBACK SEGMENTS) 롤백세그먼트는 롤백(취소)에 필요한 데이터들이 저장되는 세그먼트입니다. 사용자가 트랜잭션을 유발하는 SQL문 등을 사용하면 해당 트랜잭션의 내용이 롤백을 위해 데이터파일에 저장됩니다. 어떤 컬럼을 UPDATE 한 후 사용자가 데이터에 변경한 내용을 이전으로 되돌리고 싶다면 ROLLBACK 명령을 사용할 것입니다. COMMIT 명령을 사용하거나 내부적으로 COMMIT 이 발생하면 변경한 내용은 영구적으로 반영되고, 트랜잭션이 종료될 것입니다. 트랜잭션이 종료되면 롤백세그먼트에 저장되었던 데이터들은 더 이상 필요 없는 것들이 됩니다. 롤백세그먼트의 용도 용 도 내 용 트랜잭션 롤백 트랜잭션이 테이블 내의 행을 변경할 때 구 이미지(이전 데이터 .. 더보기
PLT 1.2 리두 로그 파일(Redo Log Files) PLT 1.2 리두 로그 파일(Redo Log Files) 오라클 서버는 데이터베이스 내의 데이터 손실을 최소화하기 위해 온라인 리두 로그 파일을 유지합니다. 리두로그 파일은 데이터베이스 버퍼 캐쉬 내의 데이터에 가해진 모든 변경사항을 기록합니다. 리두 로그 파일은 인스턴스 실패 같은 상황에서 데이터 파일에는 쓰여지지 않은 Commit된 데이터를 복구하기 위해 사용됩니다. · 온라인 리두 로그 파일의 동일한 사본들을 온라인 리두 로그 그룹이라고 합니다. · 백그라운드 프로세스인 LGWR 은 그룹 내의 모든 온라인 리두 로그 파일에 동시에 동일한 정보를 기록합니다. · 오라클 서버는 데이터베이스의 정상적인 작동을 위하여 최소한 두 개의 온라인 리두 로그 그룹을 필요로 합니다. · 위의 그림은 리두 로그 그.. 더보기
Chapter 1 Oracle Server Chapter 1 Oracle Server PLT 1.1 백그라운드 지원 프로세스 여러 개의 백그라운드 프로세스가 Oracle 인스턴스의 작업을 지원하며 사용자로부터 온 연결 요청을 처리한다. 다음은 인스턴스 지원 프로세스를 보여준다. [bizsvr]/data/oracle> ps -ef | grep ora oracle 712 1 0 Mar 22 ? 27:33 ora_lgwr_BIZORA9 oracle 710 1 0 Mar 22 ? 2:06 ora_dbw0_BIZORA9 oracle 714 1 0 Mar 22 ? 30:34 ora_ckpt_BIZORA9 oracle 718 1 0 Mar 22 ? 0:00 ora_reco_BIZORA9 oracle 716 1 0 Mar 22 ? 15:21 ora_smon_B.. 더보기
한달을 요일별로 구함 Query SELECT SUM(DECODE(A.A2, '1', A.A3, null)) 일요일, SUM(DECODE(A.A2, '2', A.A3, null)) 월요일, SUM(DECODE(A.A2, '3', A.A3, null)) 화요일, SUM(DECODE(A.A2, '4', A.A3, null)) 수요일, SUM(DECODE(A.A2, '5', A.A3, null)) 목요일, SUM(DECODE(A.A2, '6', A.A3, null)) 금요일, SUM(DECODE(A.A2, '7', A.A3, null)) 토요일 FROM ( SELECT rownum + 7 - to_number(TO_CHAR(TO_DATE('200312' || TO_CHAR(rownum),'YYYYMMDD'),'D')) as A1, .. 더보기
TIP - 오라클 8i이상에서 한번의 쿼리로 페이징 처리하는 방법 페이징 처리를 하려면 전체 Row수와 order by한 부분 중 가져올 부분을 잘라서 가져와야 한다. 그래서 다음의 쿼리를 이용하면 된다. 단 아래의 Query는 Oracle 8i이상에서만 작동한다. SELECT * FROM ( SELECT a.*, rownum+rnum-1 as total_rows FROM ( SELECT a.*, rownum rnum FROM ( 원하는 ORDER BY 절이 포함된 SELECT 쿼리 ) a ORDER BY rnum DESC ) a ORDER BY rnum ) WHERE rnum BETWEEN ? AND ? 예) 10개의 Row만 가져오는 Query SELECT * FROM ( SELECT a.*, rownum+rnum-1 as total_rows FROM ( SELEC.. 더보기