728x90

Dev/DBMS 8

[Oracle] NVL / NVL2 / DECODE

target: NVL / NVL2 / DECODE 사용법 (null, 공백, 치환) method: 1. NVL NVL("값", "지정값") : 값이 NULL인 경우, 지정값으로 치환 SELECT EMPNO , ENAME , COMM , NVL(COMM, 0) AS COMM2 FROM EMP /* EMPNO | ENAME | COMM | COMM2 7839 | KING | | 0 7654 | MARTIN | 1400 | 1400 */ 2. NVL2 NVL2("값", "지정값1", "지정값2") = NVL2("값", "NOT NULL", "NULL") SELECT EMPNO , ENAME , COMM , NVL2(COMM, 'Y', 'N') AS COMM2 FROM EMP /* EMPNO | ENAME | ..

Dev/DBMS 2023.10.31

[Oracle] 오라클 RANK, DENSE_RANK 순위 함수

target: RANK, DENSE_RANK 함수 사용법 (feat. OVER, PARTITION BY) method: 1. RANK / DENSE_RANK 오라클에서 성적, 급여, 매출 등 순위를 구하기 위해서 순위 함수(RANK, DENSE_RANK)를 사용 순위 함수의 순위는 OVER ㅎ마수 내부의 ORDER BY 컬럼 값으로 결정 SELECT ENAME , SAL , RANK() OVER (ORDER BY SAL DESC) RANK , DENSE_RANK() OVER (ORDER BY SAL DESC) DENSE_RANK FROM EMP ORDER BY SAL DESC /* ENAME | SAL | RANK | DENSE_RANK KING | 5000 | 1 | 1 SCOTT | 3000 | 2 ..

Dev/DBMS 2023.10.31

[Oracle] Oracle 데이터를 Json 형태 문자열로 변환 [오라클 11g 이하]

target: Oracle 데이터를 Json 형태 문자열로 변환 method: ▶ 같이 보면 좋을 내용 https://pu3vig.tistory.com/119 [Oracle] Oracle 데이터를 Json 형태로 변환 [오라클 12c 이상] target: Oracle 데이터를 Json 형태로 변환 method: 1. JSON_OBJECT [Oracle 12c release 2(12.1.0.2) 이상] /* - 테이블 명 : TB_COL - 데이터 형식 > SELECT SEQ, ID, NAME, TYPE FROM TB_COL; >> Result SEQ | ID | NAME | TYPE 1 | COL1 | 컬럼1 | pu3vig.tistory.com https://pu3vig.tistory.com/121 [..

Dev/DBMS 2023.10.30

[Oracle] Oracle 데이터를 Json 형태로 변환 [오라클 12c 이상]

target: Oracle 데이터를 Json 형태로 변환 method: ▶ 같이 보면 좋을 내용 https://pu3vig.tistory.com/120 [Oracle] Oracle 데이터를 Json 형태 문자열로 변환 [오라클 11g 이하] target: Oracle 데이터를 Json 형태 문자열로 변환 method: 1. LISTAGG [Oracle 11g 이상] /* - 테이블 명 : TB_COL - 데이터 형식 > SELECT SEQ, ID, NAME, TYPE FROM TB_COL; >> Result SEQ | ID | NAME | TYPE 1 | COL1 | 컬럼1 | TEXT 2 | COL2 pu3vig.tistory.com https://pu3vig.tistory.com/121 [Java] ..

Dev/DBMS 2023.10.30

[PostgreSQL] 쿼리 실행 통계 확인을 위한 pg_stat_monitor

target: 쿼리 수행 통계 확인을 위한 pg_stat_monitor 모듈 method: PostgreSQL에는 pg_stat_statements 라는 DB서버에서 수행된 모든 SQL문의 실행 통계를 제공하는 유용한 extension이 있습니다. 그러나 몇가지 단점이 있는데 수행된 시간대가 표시안되어 pg_stat_statements 만으로는 피크시간대 수행된 쿼리를 확인하기 어려움 쿼리에서 접근한 테이블이 따로 저장안됨 쿼리를 수행한 client IP 표시가 안됨 이러한 단점들을 모두 해결한 것이 percona에서 나온 pg_stat_monitor라는 extension 입니다. 1. Installation 1) 'pg_stat_monitor' 모듈 다운로드 $ sudo yum install -y ht..

Dev/DBMS 2023.01.10

[PostgreSQL] Slow Query를 감지하기 위한 3가지 방법

target: Slow Query 감지 method: 1. Turn on the slow query log 1) 전체 DB에 적용 전통적인 방법으로 쿼리가 특정 시간보다 오래걸리면 로그에 한 줄을 전송 기본적으로 slow query log는 비활성화 상태이기에 아래와 같이 활성화 필요 # postgresql.conf # 로그 생성 시, 최소 쿼리 수행 시간(단위: ms) log_min_duration_statement = 5000 DBMS에서 postgresql.conf를 reload # SELECT pg_reload_conf(); pg_reload_conf --------------- t (1 row) 2) 특정 DB에만 적용 특정 사용자 or 특정 DB에 대해서만 변경하는 경우 # ALTER DATA..

Dev/DBMS 2023.01.10

[Oracle, PostgreSQL]DB TABLE Lock

target: DB TABLE Lock 확인 및 해제 method: 1. Oracle 오라클 LOCK 걸린 개체 확인 및 LOCK 해제 오라클이나 다른 DBMS 제품을 사용하는 중에 LOCK 이 걸려본 경험은 다들 한두번씩 있을거라고 봅니다. 일반적으로 TOAD 나 ORANGE 같은 상용제품을 사용할 때는 모니터링툴이 있으니 바로 열어서 확인해볼 수 있지만, SQL Developer 같은 무료제품을 사용할 때에는 어떻게 해야 하는지 알 수 없습니다. 사실 모니터링툴도 다 DBMS 에서 관리하고 있는 시스템인데 SQL 로 조회해보면 됩니다. 자주 사용하는 sql 정도는 몇개 저장해두고 사용하면 편하게 쓸 수 있습니다. 일단 LOCK 걸린 객체를 확인해보겠습니다. 1) LOCK 걸린 개체 확인 SELECT ..

Dev/DBMS 2023.01.10

[Oracle] INDEX HINT (성능 튜닝)

target: Index Hint를 통한 Select 쿼리 성능 개선 method: 주석인 /* */ 안에 +를 삽입함으로써 힌트 생성 오라클의 Optimizer가 쿼리 수행 전, 힌트를 참조하여 수행 (단, 힌트에 오타가 있는 경우에는 힌트절 무시) SELECT /*+ INDEX(A IDX_A) */ A.ID , A.NAME , A.REG_dATE FROM USER A ※ 주석 /* */ 안에 + 기호를 반드시 삽입 필요 ※ 멀티라인 주석인 /* */ 외에도 싱글라인 주석인 --로도 사용 가능 ※ 여러개의 복합 인덱스 힌트를 사용 가능 (ex. /*+ INDEX(...) INDEX(...) */) ※ 별도의 ORDER BY를 사용하지 않아도 INDEX 컬럼 순서로 정렬되어 조회(역순을 원할 경우 /*+..

Dev/DBMS 2022.11.11
728x90