본문 바로가기
반응형

4. Database40

[Oracle] 계층구조 쿼리(Hierarchical Queries), (계층형 쿼리) 계층구조 쿼리(Hierarchical Queries) Connect by 계층적 쿼리는 오라클만이 가진 기능 중 하나로, 데이터를 선택하여 계층적인 순서 그대로 리턴하는데 사용된다. (계층형 쿼리라고도 한다) 1. 문법정리 [START WITH condition] CONNECT BY condition START WITH 조건1 - 루트 노드를 식별한다. 조건1을 만족하는 모든 ROW들이 루트노드가 된다. - START WITH는 생략가능한데, 이러한 경우 모든 ROW들이 루트노드가 된다. - 서브쿼리도 올 수 있다. - CONNECT BY 는 부모 계층형 쿼리에서 부모노드와 자식노드 특정한 관계를 나타내는데 사용한다. 부모노드가 되는 쪽에 PRIOR operator 가 반드시 명시 되어야 한다. CONN.. 2017. 8. 30.
[Oracle] 오라클 날짜함수 (Datetime Functions) [Oracle] 오라클 날짜함수 (Datetime Functions) 1. SYSDATE 함수 - 시스템의 설정된 날짜 값을 반환한다. 2.ADD_MONTH 함수 - 문법 : ADD_MONTHS( date, integer ) - 지정한 날짜 중 해당 월에 정수를 더한 값을 반환한다. ex) ; SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL; -- 현재월 : 20170809 SELECT TO_CHAR(ADD_MONTHS(SYSDATE, 3), 'YYYYMMDD') FROM DUAL; -- 3개월 더한후 반환 : 20171109 3. LAST_DAY 함수 - 문법 : LAST_DAY(date) - 해당하는 월의 마지막 일을 반환합니다. ex) 이번달 마지막 일자 반환 SE.. 2017. 8. 30.
[Oracle] 오라클 피벗(2) - PIVOT, UNPIVOT, 행을 열로, 열을 행으로 [Oracle] 오라클 피벗(2) - PIVOT, UNPIVOT, (행을 열로, 열을 행으로) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 오라플 피벗, 두번째 ] 입니다. :) 업무를 하다보면 행을 열으로 전환한다던지, 열을 행으로 전환해야하는 업무가 간혹 발생한다. 이때 보통 decode 또는 case when을 통해 행 => 열 전환을 하였을 것이다. 이를 편하게 해결 할 수 있는 기능이 Oracle 11g부터 제공된다. PIVOT - 행을 열로 변환할 때 사용하는 방법으로 기존 GROUP BY 와 집계함수(MAX, SUM 등), DECODE를 사용하는 방법을 대체한다. 코드가 매우 간결 해진다. - PIVOT 절은 GROUP Function 을 포함한 계산식을 정의 하며 FOR 절은 값을 구분할.. 2017. 8. 3.
[Oracle] 오라클 피벗(1) - LISTAGG, WM_CONCAT [Oracle] 오라클 피벗(1) - LISTAGG, WM_CONCAT 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 오라클 피벗, listagg, wm_concat (피벗, 첫번째) ] 입니다. :) 여러 Row 값을 하나의 컬럼으로 돌려서 가져오고 싶은때가 있다. 이때 , 등 구분자를 통해 가져오는 방법이다. (ex 갓대희, 김동수, 김치맨 )(오라클에서 피벗턴 가능 하다 => 세로정렬을 가로정렬로 전환) 다음과 같은 로그인 히스토리가 있다고 가정하자. ▶ 임시 데이터 생성 WITH TEMPLOGINLOG AS ( SELECT 'MOBILE' AS ID, '갓대희' AS NAME FROM DUAL UNION ALL SELECT 'PC' AS ID, '갓대희' AS NAME FROM DUAL UNION.. 2017. 7. 26.
[Oracle| 오라클 데이터 복구 (TIMESTAMP) [Oracle| 오라클 데이터 복구 (TIMESTAMP) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 오라클 데이터 복구 하기 (delete로 삭제한 건 ) ] 입니다. :) 데이터를 실수로 삭제(delete, truncate는 불가) 하고 commit하였을때 실수로 지운다던지, 복원을 시켜야 한다던지 당황하고 멘붕이 왔던 경험이 많을 것이다. 이때 특정시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능이다. 이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다. ▶ Flashback을 사용할 수 있는 조건 ※ 설정 1. 자동 언두 관리 시스템을 사용해야 합니다. (UNDO_MANAGEMENT 파라미터를 AUTO로.. 2017. 7. 26.
[Oracle] Delete, Truncate, Drop 비교 [Oracle] Delete, Truncate, Drop 비교 구분 테이블 정의 저장공간 작업속도 SQL문 종류 구분 DELETE 존재 유지 느림 DML TRUNCATE 존재 반납 빠름 DDL DROP 삭제 반납 빠름 DDL 테이블의 데이터를 삭제 처리 할때 Delete,Truncate를 이용한다. 눈으로 보기에는 Delete, Truncate와 별도 차이점 없이 둘다 데이터가 삭제 되는 것으로 생각 될 수 도 있지만 Delete,Truncate 각각 처리되는 과정과 결과가 틀린 큰 차이점이 존재 한다. [TRUNCATE 구문] TRUNCATE TABLE [ { database_name.[ schema_name ]. | schema_name . } ] table_name [ ; ] [DELETE 구문] .. 2017. 7. 24.
[Oracle] 버전 확인 [오라클 버전확인 쿼리] 1) select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production "CORE 11.2.0.4.0 Production" TNS for HPUX: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production 2) select product, version from sys.pr.. 2017. 7. 24.
[Database] Oracle 스케쥴, 잡(2) -- ********** 2ST. DBMS_SCHEDULER************* /* 10g이상에서만 사용가능 dbms_job 패키지보다 확장된 기능으로 dbms_job 에서 안되는 외부 스크립트를 실행 할 수 있음 (1) 주요특징 - 오라클에서 생성된 프로시저나 함수 외에 os에서 생성된 각종 유틸이나 프로그램까지도 실행가능 - 설정할 때 일반적으로 사용하는 자연어를 사용하여 편하게 설정 가능 - db 내부이벤트까지 추적가능하기 때문에 os나 dbms_job 보다 훨씬 다양하게 작업을 체크하고 수행가능 이 작업을 하기 위해선 해당 계정이 create any job 권한을 가지고 있어야 함 계정에 권한 부여 grant create any job to 계정 ; (2) 구성 - program : 이 부분.. 2017. 7. 17.
[Database] Oracle 스케쥴, 잡 -- ********** 1ST. DBMS_JOB************* 주기적으로 수행되어지는 JOB을 JOB QUEUE를 사용하여 스케줄링 할 수 있다. (데이터베이스 내에 생성한 프로시저 함수들에 대해 데이터베이스 내의 스케줄러에게 지정한 시간에 자동으로 작업이 진행될 수 있도록 하는 기능) JOB을 스케줄링 하기 위해서 ORACLE의 DBMS_JOB 패키지를 이용하며 JOB QUEUE PROCESS가 JOB QUEUE안의 잡을 수행한다. JOB으로 등록될 수 있는 것은 PL/SQL 프로시저 또는 패키지가 되며, 유닉스에서 CRON에 등록하여 사용하는 것과 유사하다고 하다. CRON JOB은 OS가 직접 관리하고 실행하지만 DBMS_JOB에 등록된 JOB은 오라클이 관리한다.ORACLE 에서 DBM.. 2017. 7. 17.
[DB 에러] ORA-01653 테이블스페이스 확장 불가 ORA-01653: THE_TABLE_NAME 테이블을 1024로 TS_USER1 테이블스페이스에서 확장할 수 없습니다. 테이블 스페이스(즉 공간부족) 가 부족해서 데이터가 더이상 들어갈 수 없을때 발생하는 에러. 해결방법은 3가지로 추려진다. 1. TableSpace를 resize를 통해서 늘여주거나 Datafile을 추가한다. 2. TableSpace의 AutoExtend를 off일 경우 on을 변경한다. 3. Table별 데이타 용량을 체크하여 불필요한 데이타를 삭제한다. 해결방법 1 1.1 기존의 데이터파일의 사이즈를 늘려준다. alter database datafile '/data/kkk/kkk01.dbf/ resize 5M; 1.2 데이터 파일을 추가한다. alter tablespace app.. 2017. 5. 24.
반응형