
저는 Oracle Query Tool로 Orange를 제일 좋아합니다. 단점은 윈도즈 버전만 있다는 것이죠. 물론 Toad, SQL Gate도 좋은 툴입니다. Orange / Toad가 상대적으로 가격이 비싸기 때문에 SQL Gate를 회사에서 많이 사용을 했습니다. 올해 이직을 했는데, 비용 때문인지 DBA를 제외하고는 대부분 SQL Developer (무료)를 사용하고 있었습니다. SQL Developer도 나름 좋지만, 윈도즈에서만 사용할 경우에는 살짝 아쉬운 부분이 많이 있습니다. 그런데 특정 부서에서는 유료로 "PL/SQL Develper 를 구매해서 사용하고 있었습니다. 처음 들어본 툴인데, 이름부터가 PL/SQL 코딩에 특화된 것처럼 보이죠. 가장 큰 매력이 가격인 것 같았습니다. 50 Us..
회사에서 특정 쿼리 수행시간이 오래 걸려서 튜닝 요청을 받았습니다. 처음 보는 쿼리라서 먼저 실행계획을 봤는데, 특이 사항이 없어서 쿼리에서 처리하는 데이터를 본 후에 문제점을 발견할 수 있었습니다. 오라클 11g 였는데, 쿼리의 SELECT LIST 부분에 WM_CONCAT 함수가 수행 시간을 오래 걸리게 만들었습니다. 저는 평소에 "행 -> 열"로 만들어야 하는 경우에는 주로 "LISTAGG" 함수를 사용합니다. WM_CONCAT은 사용하기는 편하나, 오라클 매뉴얼에도 없는 비공식 함수기 때문에 가급적 사용을 안합니다. WM_CONCAT이 문제가 되었던 거는 처리해야 하는 행(값)이 너무 많아서 였습니다. 조회 조건을 변경 하면은 대부분 10개 내외로 WM_CONCAT() 함수가 사용이 되어졌는데, ..
오라클 PL SQL 패키지 내에 DB LINK가 있을 때 유의할 점(?) 혹은 알아두면 좋을 점을 공유하려고 합니다.특정 테이블을 조회하고 있고, 또한 DB LINK로 원격지 테이블도 조회하는 PL SQL이 있습니다.이때 로컬에 있는 테이블에 컬럼을 추가하는 DDL를 수행하면 PL SQL 패키지 또는 프로시저(펑션)의 상태가INVALID가 됩니다.그 이후에 PL SQL를 호출하면 DB LINK가 있을 경우와 없는 경우가 다르게 처리 됩니다.1. DB LINK가 존재하는 경우: 호출시 해당 PL SQL이 DDL로 수행이 되면서 컴파일도 되고 VALID 상태로 변경된 후에 호출이 됨 2. DB LINK가 없는 경우: 호출시 해당 PL SQL이 DDL로 수행되는게 아니라 컴파일 후에 VALID 상태로 됨. 예..
아래와 같이 구문을 사용할 때 주의할 점이 있습니다. ALTER TABLE 테이블명 DROP PRIMARY KEY; 또는 ALTER TABLE 테이블명 DROP CONSTRAINT 유니크제약조건명; 그것은 Primary key를 생성하는 방법에 따라 제약조건과 인덱스가 모두 삭제가 될 때도 있고, 또는 제약조건만 삭제가 되고 인덱스는 그대로 남아 있는 경우가 발생한다는 것입니다. Primary Key를 생성하는 방법에 따른 현상인데요. Primary Key를 생성할 때 인덱스와 제약조건을 동시에 생성하면 삭제할 때도 동시에 삭제가 되고 이미 생성된 인덱스를 사용해서 Primary Key를 생성하면, 위 구문 수행 시 제약조건만 삭제가 되고 인덱스는 남아 있게 됩니다. 문제는 이미 생성된 Primary K..
> 가상컬럼이 있는 테이블 생성CREATE TABLE TB_ORDERS (ORDER_NO VARCHAR2(10),PRICE NUMBER,QTY NUMBER,TOTAL_VALUE AS (PRICE * QTY) VIRTUAL); > 데이터 입력INSERT INTO TB_ORDERS (ORDER_NO, PRICE, QTY) VALUES('1709010001', 5000, 5);COMMIT; 데이터를 조회하면 TOTAL_VALUE에 25000 이 들어가 있는게 보인다.정확히 말하면 가상컬럼이기 때문에 PRICE * QTY 의 수식에 의해서 보여지는 값이라고 보면 된다. 당연하지만 가상컬럼이기 때문에 업데이트는 안된다. - EOF -
오라클에서 파티션키 값을 검색 조건으로 사용할 경우 주의할 점 1가지를 소개해 드립니다. 피티션 테이블명: T_ORDERS피티션 키: ORDER_DT인덱스: CUST_NO (고객번호) 위와 같은 상황에서 'AAA' 고객을 거래내역을 조회하는 경우에 ORDER_DT에 조건에 논리적 오류가 있을 경우에 문제가 생깁니다. SELECT *FROM T_ORDERSWHERE CUST_NO = 'AAA' AND ORDER_DT BETWEEN '20170101' AND '20170102';>> 정상적으로 고객번호 인덱스를 Access하는 실행계획이 수립됨. SELECT *FROM T_ORDERSWHERE CUST_NO = 'AAA' AND ORDER_DT BETWEEN '20170101' AND '20171231';>..
CREATE OR REPLACE TRIGGER USER_TRACE_TRG AFTER LOGON ON DATABASE BEGIN IF USER = '&USER_ID' THEN execute immediate 'alter session set events ''10046 trace name context forever, level 12'''; END IF; EXCEPTION WHEN OTHERS THEN NULL; END; / CREATE OR REPLACE TRIGGER USER_TRACE_TRG AFTER LOGON ON DATABASE WHEN(USER = '&USER_ID')BEGIN execute immediate 'alter session set events ''10046 trace name con..
- Total
- Today
- Yesterday
- 톡토기
- 르세라핌
- GKRS
- 파나소닉 비데 DL-EH10KWS
- 화분벌레
- 브리다 정수기
- JMW 헤어드라이기기
- 로니카 BCS
- Pixel Pals
- 카카오 에드
- 남설 팔찌
- weka
- 고체 향수
- 루미큐브 종류
- yugabyteDB
- 빈센트 반 고흐
- node.js
- 홈 오피스
- 코라나 19
- 오미크론
- 매직 트랙패드2
- 솔리드 쿨론
- 별잉 빛나는 밤
- VARIDESK
- 증권정보포털
- Life Chair
- 배당급
- 유가바이트디비
- Sybase IQ
- 별이 빚나는 밤
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |