본문 바로가기

DataBase/Oracle11

오라클 달력 및 날짜 테이블 오라클에서 통계 관련 쿼리를 작성하다보면,기간성 정보 기준으로 데이터를 도출해야할 경우가 있다. 예를 들자면 (일간, 월간, 년간) 하지만 영업일이 없었던 경우 0 원으로 표시해야하거나 주말같은 경우는 뭔가 표시를 해주어야 하는데,이게 필요할 때 찾으면 없거나 보통 귀찮은일이 아님. 해서 테이블부터 데이터 등록 PL/SQL 까지 같이 올림. 그냥 바로 돌리시면 됩니다.^^ CREATE TABLE DATE_STANDARD ( YEAR_ID CHAR(4 BYTE), MONTH_ID CHAR(2 BYTE), DAY_ID CHAR(2 BYTE), DATE_ID VARCHAR2(8 BYTE), WEEK_NO CHAR(1 BYTE), WEEK_TXT VARCHAR2(5 BYTE) ) CREATE INDEX IDX_.. 2018. 1. 25.
오라클 컬럼을 로우로 오라클 컬럼을 로우로 SELECT DECODE (MOD (ROWNUM - 1, 3) + 1, 1, SUM_TARGET_SALES_AMT, 2, MALL_TARGET_SALE_AMT, 3, MALL_OUT_CHANNEL_TARGET_SALE_AMT) AS TARGET_SALE_AMT FROM (SELECT 1 FROM DUAL CONNECT BY LEVEL 2018. 1. 10.
오라클 11g 문자열 연결 (횡) 가끔 데이터 조회 결과를 1:N 인데 1:1 로 합쳐서 표시할때 유용하다.예제는 다음과 같다. /* 엘클라시코 포워드 라인업 */ /* 오라클 11g 기준 문자열 연결 예제 (LISTAGG .. ) */ WITH EL_CLASICO_FORWARD_LINE_UP AS ( SELECT '크리스티아누 호날두' AS PLAYER, '레알 마드리드' AS CLUB FROM DUAL UNION ALL SELECT '가레스 베일', '레알 마드리드' FROM DUAL UNION ALL SELECT '카림 벤제마', '레알 마드리드' FROM DUAL UNION ALL SELECT '리오넬 메시', 'FC 바르셀로나' FROM DUAL UNION ALL SELECT '네이마르', 'FC 바르셀로나' FROM DUAL .. 2017. 12. 15.
오라클 DIRECT-PATH INSERT (인서트 성능향상) 먼저 DIRECT-PATH INSERT 에 대한 구조를 대략적으로나마 이해하면 좋을 듯 싶다. 나도 데이토의 올라온 내용을 따라해보고 까먹을까봐 일단 예제 순서만 메모.해당 세션에 패러렐 DML 허용;임시 테이블에 로깅해제;APPENT 힌트 사용테이블 로깅;다시 패러렐 DML 비허용여기에 대한 관련 링크들은 다음과 같음. INSERT 유형 (DIRECT-PATH INSERT)오라클 INSERT 속도 개선 2017. 12. 14.
오라클 쿼리 수행계획 확인 오라클에서 쿼리 수행계획을 찾다보니 확인하고, 다음과 같이 샘플 예제를 넣어서 확인해버릇 해야겠다. 내가 이해하기로는 크게 3 블럭으로 나눈다.PLAN_TABLE(플랜계획내용을 저장하는 테이블) 에 STATEMENT_ID 를 부여실행할 쿼리플랜계획내용 조회 SET SERVEROUTPUT ON; EXPLAIN PLAN SET statement_id = 'EX1' INTO PLAN_TABLE FOR SELECT * FROM "대상테이블" /* 수행계획을 확인할 대상쿼리 */ SELECT * FROM PLAN_TABLE WHERE STATEMENT_ID = 'EX1' 위 쿼리가 실행할 샘플 예제 입니다. 참고링크 : http://najuung.tistory.com/56 2017. 12. 14.
sqldeveloper - locale not recognized Mac OS 에서 sqldeveloper 로 접속시 locale not recognized 에러머세지로 연결불가.아마 로케일 문제인듯.설치된 sqldeveloper 는 영문판임.구글링중 발견. {sqldeveloper 설치위치}/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf 파일을 열고 VMOption 에서 AddVMOption -Duser.language=koAddVMOption -Duser.country=KR 이분은 친절한 캡쳐포스팅 : http://ending1.tistory.com/49 2017. 11. 27.
오라클 조인 업데이트 (다중업데이트) - Case 1 오라클에서 데이터를 다중 조건에 맞게 업데이트하기 위한 방법중 첫번째.SET 절과 (WHERE, AND) 조건 절과 동일한 내용으로 업데이트 쿼리를 수행. 샘플 데이터는 다음과 같다. 테이블 : JKUN위 테이블에서 업데이트 대상은 NUM_1 필드(전체)이다. 이 데이터들을 순번으로 업데이트 할 예정.다음은 가상 데이터 SELECT 1 AS RN, 4 AS NUM_SEQ FROM DUAL UNION ALL SELECT 2 AS RN, 5 AS NUM_SEQ FROM DUAL UNION ALL SELECT 3 AS RN, 6 AS NUM_SEQ FROM DUAL UNION ALL SELECT 4 AS RN, 7 AS NUM_SEQ FROM DUAL UNION ALL SELECT 5 AS RN, 8 AS N.. 2017. 11. 22.
오라클 WITH WITH 구문내의 쿼리 결과를 Alias 를 지정하여 이어서 SELECT 절과 이용.옵티마이저에서 인라인뷰나 임시테이블로 여김.WITH WITH_EX AS ( SELECT ROWNUM R, 'TEST1' STR, SYSDATE DT FROM DUAL UNION ALL SELECT ROWNUM, 'TEST2', SYSDATE FROM DUAL UNION ALL SELECT ROWNUM, 'TEST3', SYSDATE FROM DUAL ) SELECT * FROM WITH_EX; 조인도 가능SELECT * FROM WITH_EX A LEFT OUTER JOIN ( SELECT 1 R, 'TESTSSSSS' STR, SYSDATE DT FROM DUAL UNION ALL SELECT 2 R, 'TESTSSSS.. 2017. 11. 22.
오라클 시퀀스 ( Sequence ) 오라클 시퀀스 정리구루비 강좌 : 시퀀스(Sequence)의 이해 및 활용 아래 내용은 심플하게 정리된 포스팅입니다. 출처 : 오라클 sequence 의 사용이유와 주의점 ( http://javakorea.tistory.com/175 ) 시퀀스 사용이유가 데이터 입력시 동시성 때문에 register가 겹칠때 이를 방지 하기 위해 commit이 완료되지 않더라도 시퀀스를 사용하면 여러사용자가 중복되지않은 register(회원가입번호) 를 얻을수있어서 정상적 으로 회원가입이 가능하다. syntax) create sequence 시퀀스명 minvalue 1 // 최소 생성 시퀀스값 max value 99999999999 // 최대 생성 increment by 1 // 증가값 이값은 max-min보다 작아야함 .. 2017. 11. 22.
오라클에 돌고 있는 쿼리 시간 및 쿼리 확인하기 오라클에 돌고 있는 쿼리 시간 및 쿼리 확인하기 SELECT TO_CHAR (SID) sid, serial# serialNumber, SUBSTR (TO_CHAR (last_call_et), 1, 6) executeSeconds, userName, machine, b.sql_text sqlText FROM v$session a, v$sqltext b WHERE username NOT IN ('SYSTEM', 'SYS') AND a.TYPE != 'BACKGROUND' AND a.status = 'ACTIVE' AND a.sql_address = b.address(+) AND a.sql_hash_value = b.hash_value(+) ORDER BY a.last_call_et DESC, a.SID, a.. 2010. 9. 28.
오라클 - Sequence 시퀀스란? ◈ 유일(UNIQUE)한 값을 생성해주는 오라클 객체입니다. ◈ 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있습니다. ◈ 보통 primary key 값을 생성하기 위해 사용합니다. ◈ 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가 합니다. ◈ Sequence는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 sequence를 여러 테이블에서 쓸 수 있습니다. 시퀀스 생성 START WITH : 시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로 시퀀스번호가 증가 합니다. INCREMENT BY : 시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다. START WITH를 1로 하고 INCREMENT.. 2010. 9. 28.