본문 바로가기

IT관련

오라클 like 구문 업그레이드 regexp_like 샘플예제 (정규표현식 기본 응용) 오라클에서 제공하는 정규표현식 지원 함수 regexp_like 를 이용하면 기존 like 구문에서 할 수 없었거나 아주 어렵게 구현했던 부분들을 아주 쉽게 구현할 수 있습니다. regexp_like 기본 구문(Syntax) 는 다음과 같습니다. 예제를 통해서 사용법을 확인해보면, ♣ 문자열내에 특정문자(A, M, S) 문자가 들어가 있는 이름 찾기 '|' 기호는 or 의 의미를 가지고 있습니다. 근데, and 의 의미를 가진 '&' 는 없습니다. ㅎㅎ & 는 정규표현식에 원래 없습니다. ♣ 특정문자(N)로 끝나는 이름 찾기 ♣ 특정문자(S)로 시작하는 이름 찾기 $ 는 문자 뒤에 붙이고, ^ 는 문자 앞에 붙이는 차이가 있습니다. ♣ 특정문자(A, M, S) 문자가 들어가 있는 이름 찾기 (대소문자 구분.. 더보기
오라클 정규식, 정규표현식(Regular Expression) 이란? 그리고 사용방법. 정규표현식(Regular Expression, 레귤러 익스프레션)이라고 하면 너무 어렵게 느껴지지만 우리가 알게 모르게 지금껏 많이 써오던 것입니다. 도스창, 윈도우즈의 커맨드창에서 *(별표), ?(물음표) 같은 기호들을 파일 찾을때 많이 사용해왔었는데, 바로 이게 정규표현식의 일부입니다. 예) dir A* (A로 시작하는 모든 파일 찾기) Linux 나 Unix 시스템에서도 vi 에디터에서 ^ 는 첫문자, $ 는 마지막 문자를 가리키는데, 이것도 정규표현식의 일부입니다. 이런 정규표현식에 대한 설명 및 문법은 위키백과에 아주 상세하게 잘 정리되어 있습니다. 참고 >> 정규 표현식 - 위키백과, 우리 모두의 백과사전 위 위키백과의 설명을 보면, *, ?, ^, $ 정도가 아니라, [] {} () . + .. 더보기
오라클 PL/SQL 함수(Function) 병렬처리 옵션 (parallel_enable) Oracle DB 내에서 PL/SQL "함수" 를 만들때 병렬처리 옵션을 줄 수가 있습니다. 병렬처리 옵션 주는 방법은 매우 간단한데, 효과는 엄청납니다. create function 함수 생성 문장에서 "parallel_enable" 문구만 뒤에 추가해주면 끝입니다. -- 함수 (싱글처리) create or replace function func_s (p_val number) return number is v_ret number; begin select dbms_random.value(1, p_val) into v_ret from dual; return v_ret; end; / -- 함수 (병렬처리) create or replace function func_p (p_val number) return n.. 더보기
테이블, 인덱스, 뷰, 시퀀스 rename to (이름 변경) SQL 구문 (ORA-14047, ORA-01765) Oracle DB 에서 Table, View, Sequence, Private Synonym 의 이름변경시에는 "rename ~ to" 구문을 사용할 수 있습니다. SQL> rename TAB1 to TAB2; SQL> rename VIEW1 to VIEW2; SQL> rename SEQ_TEMP1 to SEQ_TEMP2; SQL> rename SYN_TAB1 to SYN_TAB2; -- Synonym은 Private Synonym 만 가능하고, Public Synonym 은 안됩니다. Table 의 경우에는 "alter table ..." 구문으로도 이름 변경이 가능합니다. SQL> alter table TAB1 rename to TAB2; Table 의 경우는, 위 2가지 방법이 모두 가능한데, In.. 더보기
ORA-600, ORA-7445 등 Internal 에러 분석할때 필요한 정보수집 TFA툴 소개 Oracle DB에서 ORA-00600, ORA-00700, ORA-07445 등과같은 Internal 에러가 발생하는 경우는 보통 버그성인 경우가 많고, 원인분석을 위해 오라클에 직접 물어봐야 합니다. 이때, 오라클에 증상만 설명하고 에러넘버만 불러준다고 오라클에서 원인분석을 할 수 있는 게 아닙니다. 보통 ORA-00600 같은 Internal 에러들은 버그성인 경우들이 많아서 Oracle 개발자도 첨보는 에러상황인 경우일 수 있기 때문에, 그 당시(에러가 날 당시)의 각종 로그정보들이 필요합니다. 그 당시의 정보를 이거달라 저거달라 해서 주고받다 보면 시간이 엄청 소요되겠죠? 그래서 한방에 필요할만한 정보들을 왕창 모아서 받기 위해 오라클에서 만든게 TFA (Trace File Analyzer) 라.. 더보기
오라클 에러 (ORA-00998: must name this expression with a column alias) Oracle DB에서 CTAS(Create Table As Select) 구문으로 임시데이터를 만들때 아주 흔하게 만나는 에러가 ORA-00998 입니다. 아래와 같이 connect by 문으로 간단히 테스트 데이터를 1000건 만들고자 할때, CTAS 구문을 사용할 수 있습니다. SQL> create table TEST33 as select level + 1000 from dual connect by level create table TEST33 as select level + 1000 as col33 from dual connect by level 더보기
오라클 에러 정보 (ORA-06532, ORA-06533) - PL/SQL에서 Arrary(배열) 범위를 벗어난 경우 Oracle DB 내에 있는 프로시저, 함수를 호출할때 아래와 같이 ORA-06532, ORA-06512 에러가 발생하는 경우, 이는 프로시저, 함수내에서 Arrary(배열) 변수를 사용했는데, 이 부분에서 에러가 발생한 것입니다. 배열로 선언해놓은 범위를 벗어나서 호출하는 경우에 발생합니다. PL/SQL 에서 배열 첫번째 인자는 0 이 아닌, 1 부터 시작하는 것을 주의할 필요가 있습니다. 아래의 PL/SQL 문의 경우 v_arrary 변수는 3개의 데이터(배열멤버)를 가진 배열 변수입니다. 따라서, 배열의 멤버들을 접근하려면 v_array(1), v_arrary(2), v_arrary(3) 처럼 사용해야 합니다. SQL> set serveroutput on SQL> declare type V_ARR .. 더보기
(솔라리스 19c DB 설치시 에러) pkg list: no packages matching 'oracle-database-preinstall-19c' known Oracle Solaris 11 버전에서 Oracle Databse 19c 설치하기 전에, 필요한 패키지 설치를 위해 oracle-database-preinstall-19c 를 먼저 install 하도록 되어있습니다. 하지만, 막상 실행해보면, 아래와 같이 못 찾는다는 에러메시지가 발생합니다. 한글 Locale 환경에서는 아래와 같이 나옵니다. [root@solaris ~]# [root@solaris ~]# pkg list -n oracle-database-preinstall-19c pkg list: 'oracle-database-preinstall-19c'과(와) 일치하는 패키지가 알려지지 않았습니다. [root@solaris ~]# [root@solaris ~]# [root@solaris ~]# [r.. 더보기