본문 바로가기

oracle64

[Oracle] Rollfoward & Rollback 서버가 비정상적으로 죽었을 때, Checkpoint 회복 Oracle startup Oracle 서버를 기동했습니다. 이때 순서대로 instance started - database mounted - database opened 순서로 실행됩니다. instance started Oracle Instance인 SGA 공유 메모리와 Background Process들을 기동합니다. database mounted Control File을 읽을 수 있는 상태가 mounted 입니다. 이 단계에서 만약 전에 정상적으로 내려가지 않았다면 SMON Background Process가 Instance Recovery 작업을 합니다. Instance Recovery 작업으로 Rollfoward와 Rollback 작업을 합니다. database opened 데이터베이스를 사용할.. 2020. 4. 4.
[Oracle] 누적 합계 구하기, WINDOWING 행 기준 범위 연산 :: 마이자몽 누적 합계 구하기 EMP테이블에서 사원의 정보와 부서번호로 정렬되어 있을때 급여의 누적합계도 같이 출력해라. ORACLE SCOTT 계정으로 실습을 진행합니다. 1 2 3 4 5 6 7 8 9 10 SELECT DEPTNO ,EMPNO ,ENAME ,SAL ,SUM(SAL) OVER( ORDER BY DEPTNO ROWS UNBOUNDED PRECEDING ) AS SUM_SAL FROM EMP; 1 2 3 4 5 6 7 8 9 10 11 SELECT DEPTNO ,EMPNO ,ENAME ,SAL ,SUM(SAL) OVER( ORDER BY DEPTNO ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS SUM_SAL FROM EMP; 누적 합계를 구하기 위해.. 2020. 4. 3.
[Oracle] redo.log 서버 내부적 Log Switch 작동 원리 :: 마이자몽 Redo Log Buffer Update 참조글 [Oracle] SGA Redo Log Buffer 리두 버퍼 사용원리 :: 마이자몽 Redo Log Buffer 이전 글들에서는 Shared Pool과 Database Buffer Cache에 대해서 하나의 SELECT문을 통해 어떤 원리로 사용되는지 알아봤습니다. 이번 글에서는 UPDATE문을 갖고 변경사항이 있을 때 Redo Log Bu.. myjamong.tistory.com redo.log ORACLE_BASE 아래 oradata 디렉토리를 보면 redo.log 파일들이 있습니다. 이 파일들은 Recovery 작업을 하기 위해 Oracle의 Background Process인 LGWR(Log Writer)가 수시로 입력해주고 있는 파일입니다. Or.. 2020. 4. 2.
[Oracle] LISTAGG 컬럼 결과 나열하기 :: 마이자몽 1 2 3 4 5 SELECT DEPTNO ,ENAME FROM EMP ORDER BY DEPTNO; ORACLE SCOTT계정의 EMP테이블의 내용입니다. RDB에 익숙해지면 위와같은 결과가 눈에 잘 들어옵니다. 하지만, 일반 문서에서는 각 부서별로 어떤 사람들이 있는지 ','를 구분자로 데이터를 보는게 이해하기 편할 것 입니다. LISTAGG 함수 1 2 3 4 5 SELECT DEPTNO ,LISTAGG(ENAME, ',') WITHIN GROUP(ORDER BY ENAME) AS EMPS FROM EMP GROUP BY DEPTNO; LISTAGG함수를 사용하면 가로로 나열할 수 있습니다. GROUP BY한 결과에 대해서 GROUP안의 칼럼을 나열시킬 수 있습니다. MULTI INDEX 확인 LI.. 2020. 4. 2.
[Oracle] SGA Database Buffer Cache DBC 데이터베이스 버퍼 캐시 사용원리 :: 마이자몽 SGA Shared Pool 관련 글 [Oracle] SGA Shared Pool 공유풀 사용 원리 :: 마이자몽 Shared Pool Library Cache : parsing된 정보를 저장 Data Dictionary Cache : Data Dictionary의 정보를 저장 --> Hard Parse 작업을 빨리 해주기 위해 Result Cache : 실행된 결과를 저장 (11g new feature) --.. myjamong.tistory.com Database Buffer Cache 이전 글에서 SGA 구성요소 Shared Pool에 Parse된 공유 데이터에 대해서 알아봤습니다. 이번 글에서는 Parse에 이어서 Select문 요청이 들어왔을 때 Execute 단계를 Database Buffer.. 2020. 4. 1.
[Oracle] SGA Shared Pool 공유풀 사용 원리 :: 마이자몽 Shared Pool Library Cache : parsing된 정보를 저장 Data Dictionary Cache : Data Dictionary의 정보를 저장 --> Hard Parse 작업을 빨리 해주기 위해 Result Cache : 실행된 결과를 저장 (11g new feature) --> 결과로 적은 내용을 반환해주는 값을 저장해두면 바로 읽을 수 있다. Shared Pool은 Libray Cache, Data Dictionary Cache, Server Result Cache 3가지 구성요소를 갖고 있습니다. 동일한 문장이 반복적으로 들어왔을 때 Parse 작업을 하지 않고 바로 사용할 수 있도록 공유의 목적으로 사용되고 있습니다. 이해를 돕기 위해 우리가 일반적으로 사용하는 SELECT문.. 2020. 3. 31.
[Oracle] 문장수준 읽기 일관성 Consistent Mode, Current Mode 차이 :: 마이자몽 Dirty Read Commit되지 않은 데이터를 다른 Transaction에서 읽을 수 있다면 어떤 현상이 발생할 수 있을까요? 최종 연봉 계산하는 예시로 발생할 수 있는 현상을 알아 보겠습니다. 최종 연봉은 현재 연봉 + 퇴직금 + 인센티브로 최종 결정되는 것으로 가정해보겠습니다. 만약 Commit되지 않은 데이터를 다른 Transaction에서 읽을 수 있다면, 데이터를 읽는 시점에 따라 다른 결과 값을 읽습니다. 퇴직금까지만 합산했을 때 데이터를 읽으면 3900이되고 인센티브까지 합산했을 때 4200의 값을 읽습니다. 즉, 일관성 없이 데이터를 읽기 때문에 연산 과정에서 최종값이 아닌 중간값을 받아오는 문제가 발생할 수 있습니다. 이렇게 Commit되지 않은 데이터를 다른 Transaction에서.. 2020. 3. 30.
[Oracle] PIVOT, UNPIVOT 함수 사용 행열 전환 :: 마이자몽 행열 전환 ORACLE SCOTT 계정 EMP 테이블에서 2개의 칼럼을 이용하여 GROUP BY 결과를 확인해봤습니다. 하고 싶은 작업은 GROUPING한 칼럼을 가로 세로축으로 두고 데이터를 출력하려고 합니다. CASE 표현식이나 DECODE 함수를 이용해서 결과를 출력할 수 있습니다. [Oracle] DECODE 함수 사용 쿼리 결과 가로로 보기 :: 마이자몽 DECODE 함수 DECODE 함수를 사용하여 쿼리내의 조건문 처럼 사용할 수 있습니다. 첫번째 인자로 확인할 대상을 넣어주고 2번째 인자에 확인할 대상의 예측 값이 있으면 3번째 인자를 없으면 4번째 인자의 값을 반.. myjamong.tistory.com DECODE 함수를 사용하면 같은 함수를 계속 사용하면서 중복되는 작업을 해야합니다. .. 2020. 3. 30.
[Oracle] ROW_NUMBER, RANK, DENSE_RANK 함수 순위 매기기 :: 마이자몽 사원들의 급여를 많이 받는 순서대로 순위를 출력하시오. ORACLE SCOTT 계정의 EMPLOYEES 테이블을 이용해서 출력한 결과입니다. 순서를 매기는 방법에는 여러가지 방법이 있습니다. 분석함수를 사용하지 않는다면 아래처럼 구할것 입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT EMPNO ,ENAME ,SAL ,DEPTNO ,ROWNUM AS RNK FROM ( SELECT * FROM EMP ORDER BY SAL DESC ); SELECT 절은 ORDER BY 이전에 실행되기 때문에 SUBQUERY를 이용해서 순위를 매길수 있습니다. 전체 순위중 일부를 출력하기 위해서는 TOP-N쿼리나 ROW LIMIT CLAUSE를 사용해서 출력이 가능합니다. 자세한 내용은 아.. 2020. 3. 29.
[Oracle] OVER ... PARTITION BY 분석절 분석함수 ANALYTIC FUNCTION :: 마이자몽 사원 정보를 입력하는데, 전체 급여 평균값과 함께 출력하시오. ORACLE SCOTT 계정 EMP 테이블로 출력된 결과입니다. 위 문제를 풀기 위해 어떻게 쿼리를 작성하실건가요? 1 2 3 4 5 6 7 8 SELECT DEPTNO ,EMPNO ,ENAME ,JOB ,SAL ,ROUND((SELECT AVG(SAL) FROM EMP)) AS AVG FROM EMP; SUBQUERY를 이용할 수도 있지만... ANALYTIC FUNCTION 분석함수를 사용해서 좀 더 편한 방법으로 해결할 수 있습니다. 1 2 3 4 5 6 7 8 SELECT DEPTNO ,EMPNO ,ENAME ,JOB ,SAL ,ROUND(AVG(SAL) OVER()) AS AVG FROM EMP; 분석함수 OVER 절을 사용해서 문제.. 2020. 3. 28.