본문 바로가기

전체 글

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.. 더보기
전신마취가 풀리는, 수술중 각성(Anesthesia Awareness) 실제로 가능? 수술중에 마취가 깨버린다면?? 오~~ 쉣! 이런 엿같은 시츄에이션을 봤나??? 이게 가능?? 네~ 가능하답니다. WTF~ 그것도 1000명중 1명 꼴로... 이런 소재를 다룬 영화도 있습니다. 외국영화로는 "Awake" 가 있고, 한국영화로는 김명민 주연의 "리턴" 이라는 영화가 있네요. ㅎㅎ 생각만 해도 끔찍합니다. 수술중에 움직이지도 못하는데 수술하는 소리 다 들리고~~ "간호사 매쓰, 여기 작은 창자 좀 잘라봐" 진짜라면 수술 끝나고 트라우마 장난 아닐듯... 이게 주로 과거에 심각한 알콜중독이었거나 마약을 심하게 했던 경험이 있는 환자인 경우에 이런 엿같은 상황이 발생할 가능성이 높다고 합니다. 예전에 뱀을 많이 잡아먹으면 늙어서 약발이 안받는다는 얘기를 어릴때 어른들한테서 들은적이 있는데... .. 더보기
오라클 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.. 더보기
Oracle 무료 DB관리툴 ((EM Express)) - 포트변경, http 로 접속 설정 방법 EM Express 접속할 때, https 로 접속하다보니 아래와 같은 "인증서 오류"를 한번 만나고 넘어가야 하는 찝찝함이 있는데요. 이걸 http 방식으로 접속하게 하면 이런 오류를 만나지 않아도 됩니다. http로 접속할 수 있도록 설정하는 방법과 접속 포트를 변경하는 방법을 설명하겠습니다. EM Express 는 오라클 리스너와 통합되어 있기 때문에 lsnrctl status 커맨드에서 정보를 확인할 수 있습니다. 현재, tcps 프로토콜(https)을 사용하고 있고, 5500 포트로 오픈되어 있습니다. 먼저 http 접속을 오픈하거나 포트를 바꾸는 방법은 아래와 같습니다. -- EM Express 포트 확인 SQL> select dbms_xdb_config.getHttpPort() from du.. 더보기