본문 바로가기

Oracle

[ORACLE]TRIM, LTRIM, RTRIM 누군가에 소스에 TRIM(LEADING '1' FROM 컬럼) 문법을 써놓았는데 몬지 몰라서 작성함 WITH CV_SAMPLE AS ( SELECT '1231231' AS STR FROM DUAL)SELECT STR , LTRIM(STR, '1') , TRIM(STR) , TRIM(LEADING '1' FROM STR) , TRIM(TRAILING '1' FROM STR) , TRIM('1' FROM STR) , TRIM(BOTH '1' FROM STR)FROM CV_SAMPLE 그냥 TRIM 에서 특정 문자를 없애주기 위한 문법이라고 보면 될 것 같음LEADING 은 앞, TRAILING는 뒷 문자를 없애줌 참고 URL : http://suyou.tistory.com/28 더보기
[오라클]AND EQUALS 실행계획 기본적으로 튜닝 대상이기는 함 발생하는 예제 사원테이블에 입사일자 + 사원번호 와 직급 + 부서이름 에 각각 INDEX가 있을 경우 select 사원번호, 부서이름from 사원wehre 입사일자 = '20170112'and 직급 = '과장' 이경우 입사일자 + 사원번호로 RANGE SCAN, 직급 + 부서이름 으로 RANGE SCAN 을 수행그 후 각각의 결과의 ROWID를 AND EQUALS 시켜 결과셋을 생성함 더보기
[ORACLE]프로시져 소스 상 변수 선언된 내용 확인 프로시져 소스 상 변수 선언된 내용 확인 컬럼크기가 늘어나는 일이 발생하여소스상 선언된 변수 크기로 인해 오류가 날 만한 것을 확인할 경우 사용 select * from ( select * from all_source where owner in ('SYS') and text like '%VARCHAR%')where regexp_like(text, 'VARCHAR2\([1-9]\)') 더보기
[ORACLE]PROCEDURE 의 ARGUMENT 조회 PROCEDURE 의 ARGUMENT(PARAMETER) 조회 select * from all_argumentswhere owner in ('SYS')and argument_name like '%TEST%' 더보기
[ORACLE]오라클 대용량 insert 오라클 대용량 insert 3만건 insert하는데 속도가 너무 많이 걸려서 대용량 INSERT 하는 것을 정리해보기로 함 대강 알고 있던 내용은 다음과 같음l Insert 쿼리에 /*+append*/ 힌트를 추가l 테이블에 nologging 추가(alter table xxx nologging; => 리두 레두 쌓지 않음 Append의 대한 더 자세한 내용http://egloos.zum.com/zzie/v/8768498http://www.jigi.net/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-APPEND-%ED%9E%8C%ED%8A%B8 1) NOARCHIVELOG 모드 데이터베이스가 사용되고 있는 경우2) NOLOGGING으로 표시된 테이블을 대상으로 작업하고 있는 경우 위의 두 .. 더보기
[ORACLE]MERGE 사용 시 ORA-30926 오류 [ORACLE]MERGE 사용 시 ORA-30926 오류 머지 사용중 발생 검색해보니 주테이블과 서브테이블 조인 시 주테이블의 키 컬럼에 해당하는 값이 여러개 나올 경우 라고 함 쉽게 이야기 하면MERGE A INTO B 에서 A와 B 의 조인 시 DUP이 난 케이스 참고 URLhttp://sehaeng.blogspot.kr/2013/06/ora-30926.html 더보기
[ORACLE]ORACLE에서 UPDATE JOIN 사용 및 MERGE INTO 로 대체방법 ORACLE에서 UPDATE JOIN 사용 및 MERGE INTO 로 대체방법 오라클에서 UPDATE JOIN을 사용할 일이 생겨서 사용해보려했으나 안된다. 쿼리는 다음과 같이 작성 UPDATE (SELECt A.col01 as col01, B.col02 as col2FROM TAB01 A, TAB02 WHERE A.col_k = b.col_k) SETcol2 = col01; 수행 시 오류가 발생했다. 검색해보니 where 조건이 들어가는 것이 key(pk) 조건이어야 한다고 한다.(참고 url : http://oracleerp.co.kr/bbs/board.php?bo_table=database&wr_id=3 ) 키 아닌 경우 UPDATE하고 싶다면 bypass_ujvc 힌트를 사용하라고 한다. 사용하려.. 더보기
[ORACLE]ORACLE V$SESSION 설명 ORACLE V$SESSION 설명 오라클 session 중 active 된 후 오래걸리는 애들 체크 select SID, USERNAME, COMMAND, STATUS,LAST_CALL_ET, SCHEMANAME, MACHINE, TERMINAL, PROGRAM ,SQL_ADDRESS, SQL_HASH_VALUE, SQL_ID, STATE, SERVICE_NAMEfrom v$sessionwhere STATUS = 'ACTIVE'and COMMAND 0order by LAST_CALL_ET desc; COMMAND : 명령 수행 종류(http://redkite777.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4Vsession-Command-%EC%BB%AC%EB%9F%.. 더보기
[ORACLE]커서에 따른 속성값들 ORACLE 에서 명시적으로 커서를 사용시(FETCH이용) 또는 SLEECT, UPDATE, INSERT, DELETE 시에도 내부적으로는 묵시적 커서를 생성하는데이 경우 사용할 수 있는 ATTRIBUTE 들이 존재한다. - 명시적 커서 사용시(커서 이름을 CR01로 함)CR01%FOUND : 최근 FETCH 된 값이 존재하면 TRUECR01%ISOPEN : 명시적 CURSOR일 경우 CURSOR의 OPEN상태이면 TRUE, 아니면 FALSE IF CR01%ISOPEN THEN--CONTINUE LOGICELSE CR01.CLOSEEND IF; CR01%NOTFOUND : FOUND의 NOT 처리한 것과 같음CR01%ROWCOUNT : CURSOR로 FETCH된 ROW수를 반환한다. 1 ROW FETCH.. 더보기
[ORACLE]SQLCODE, SQLERRM PLSQL 의 EXCEPTION 발생 시 내부적으로 에러 정보를 가지고 있는 항목 SQLCODE : 에러코드SQLERRM : 에러메시지 DBMS_OUTPUT.PUT_LINE('ERR_MSG : ' || SQLERRM); 컬럼에 바로 매핑은 10i 기준으로 오류가 나는 듯 함. BEGINEXCEPTIONWHEN OTHERS THENUPDATE TMP_TBL SETFAIL_MSG = SUBSTR(SQLERRM, 1, 500)WHERE SEQ = CR01.SEQ;=> 여기서 오류 발생함END; 그래서 이를 변수 한개 선언 후 입력한 후 사용함 LV_FAIL_MSG := SQLERRM; 여기서 꾀름칙 한것이 LV_FAIL_MSG의 사이즈 문제인데..일단 모 크게 잡았다. 일단은 구글링 해보니https://com.. 더보기