본문 바로가기

oracle

Oracle 샘플 스키마, DB유저 (Sample Schema, User) 생성 예제 (12cR2) 지난번에 오라클 샘플 스키마(HR, OE, PM, IX, SH, BI, CO)에 대한 설명과 간단히 HR 스키마를 만들어봤습니다. 참고 >> Oracle 샘플 스키마 - HR, OE, PM, IX, SH, BI, CO 이번에는 다른 샘플스키마들도 만들어 보겠습니다. Oracle 12cR2 이상에서 제공되는 방식입니다. 해보지는 않았는데, 아마 하위버전들에서도 스크립트가 안돌아가지는 않을 것 같긴 합니다. Oracle 12cR2 부터는 Sample 스키마들을 별도로 GitHub 에서 받아서 설치하도록 변경되었습니다. 다운로드는 아래 GitHub 에서 받습니다. >> https://github.com/oracle/db-sample-schemas/releases/latest 아래와 같이 나오는데, zip 파일.. 더보기
Oracle 샘플 스키마, DB유저 (Sample Schema, User) - HR, OE, PM, IX, SH, BI, CO 전통적으로 오라클에서는 샘플(테스트용) 유저로 scott 라는 DB유저(스키마)를 제공해왔었습니다. 하지만, Oracle 9i DBMS 버전부터는 보다 복잡하고 다양한 분야의 샘플유저(DB계정)를 제공합니다. ------------------------------ * HR : Human Resources - 인사부서에서 사용할 법한 샘플 데이터 * OE : Order Entry - 물건 주문정보와 관련된 샘플 데이터 * PM : Product Media - 기업에서 판매되는 제품에 대한 설명을 담고 있는 샘플 데이터 * IX : Information Exchange - B2B 어플리케이션에서 사용할 법한 샘플 데이터 * SH : Sales History - 판매실적 히스토리와 관련된 샘플 데이터 * BI.. 더보기
Oracle Text (오라클 텍스트) - Text Index 관리할때 주의사항 Oracle Text 인덱스를 사용할 때 주의해야 할 부분이 있습니다. Text Index 를 만들고나서 테이블에 데이터가 추가되는 경우에 인덱스에 자동으로 반영되지 않습니다. 이 부분이 일반 인덱스와 좀 다른 점입니다. 일반 인덱스의 경우에는 테이블에 데이터가 추가되면 그 즉시 인덱스에도 함께 반영되는데, Text 인덱스는 아래와 같이 반영되지 않아서 조회가 되지 않는 상황이 발생합니다. 이걸 일반 인덱스처럼 똑같이 만들어 줄수도 있고, 특정 시점에 비동기적으로 수행되게 할 수도 있고, 완전 수동으로 관리할 수도 있습니다. 각각의 구문은 다음과 같습니다. SQL> create index T1_IDX1 on T1(text) indextype is ctxsys.context parameters ('sync.. 더보기
Oracle Text 인덱스 생성/삭제시 Error ORA-29855, ORA-20000, DRG-50857, DRG-10502, DRG-10507 Oracle Text Index 생성 또는 삭제 할때 아래와 같은 에러를 만나는 경우가 있습니다. 분명히 처음에는 잘 되었었는데, 다시 지웠다 만들다 보면 이런 에러를 만나곤 합니다. SQL> create index T1_IDX1 on T1(text) indextype is ctxsys.context; create index T1_IDX1 on T1(text) indextype is ctxsys.context * ERROR at line 1: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine ORA-20000: Oracle Text error: DRG-50857: oracle error in drixmd.PurgeKGL ORA-2.. 더보기
오라클 SQL문에서 like 문 처리 샘플 ( %, _ ) Oracle DB에서 SQL문 만들때 like 문 처리하는 샘플입니다. Wild Character "%" 를 사용해서 조회합니다. '노%'는 '노' 글자로 시작하는 모든 데이터를 조회합니다. '붉은노을' 은 처음에 '노' 로 시작하지 않기 때문에 안나옵니다. 이것도 나오게 할려면 앞뒤로 % 를 붙여 줍니다. % 는 뒤에 나오는 모든 길이의 문자를 대체하는 Wild Character 입니다. 한 글자만 대체하고자 하는 경우에는 "_" (밑줄) 문자를 사용합니다. 만약에 "노%을" 데이터만 조회하고자 하는 경우는? %가 이미 데이터내에 사용된 캐릭터인데, 이때는 escape 키워드를 사용해서 이게 Wild Character 가 아닌 것을 표시해주면 됩니다. like 문 쓸때 가장 주의할 부분이 앞뒤로 % 가.. 더보기
Oracle Text (오라클 텍스트) - "like" SQL문 빠르게 하는 방법 SQL문 만들때 like 연산을 많이 사용합니다. 데이터가 정확히 일치하지 않아서 like '%...%' 형태로 조회해야 하는 경우가 많기 때문이죠~ 하지만, 이 like SQL문에서 검색문자열 앞에 % 가 있는 경우에는 인덱스를 타지 않거나, Index Fast Full Scan 을 하게 됩니다. 인덱스를 통째로 읽어서 찾는 겁니다. Tabel Full Scan 과 비슷합니다. 따라서 많이 느리겠죠~~ ex) where A like '%노을' 이런 경우에, 빠르게 할 수 있는 방법이 있습니다. 바로 "Oracle Text" 라는 기능입니다. 예전에는 Intermedia Text 라고 불렸었습니다. 또는 Domain Index 라고 부르는 사람도 있고, Text Index 라고 부르는 사람도 있습니다. .. 더보기
오라클 PK(Primary Key), FK(Foreign Key) 예제 오라클 DB에서 주키(Primary Key), 외래키(Foreign Key) 만드는 샘플을 소개합니다. PK, FK 만드는 예제는 아주 많은데, 주의할 부분이 있어서 추가해서 다시 정리해봤습니다. PK 만드는 구문과 샘플은 아래와 같습니다. -- 구문(Syntax) alter table {테이블명} add constraint {PK명} primary key ({PK키컬럼}); -- 예제(Example) create table PARENT as select * from scott.DEPT; alter table PARENT add constraint PK_PARENT primary key (deptno); PK를 만들면 인덱스도 같은 이름으로 만들어집니다. 하지만, FK의 경우는 인덱스가 자동으로 만들어지.. 더보기
(12cR1 신기능) 오라클 Scalar Subquery Unnesting (_optimizer_unnest_scalar_sq) Oracle 12cR1 New Feature 중에서 Scalar Subquery Unnesting 이라는 것이 있습니다. 스칼라 서브쿼리를 Unnest 한다는 얘기인데요. "스칼라 서브쿼리"란 SQL문의 Select 절에 들어있는 또다른 Select 문을 가리킵니다. Unnest 는 "둥지에서 쫒아낸다"는 의미의 단어입니다. 즉, 스칼라서브쿼리 부분을 그 위치에서 쫒아내서 다르게 변환시켜서 수행하겠다는 것입니다. 왜? 그러면, 많이 빨라지는 경우가 있기 때문이죠~ 한번 확인해 볼까요?? 아래와 같이 테스트 테이블 t1, t2 를 만듭니다. 극적인 상황 연출을 위해 t2 테이블은 자기자신을 3번 더 복제해서 좀 크게 만듭니다. -- 테이블 t1 생성 create table t1 as select * fro.. 더보기