Oracle (24) 썸네일형 리스트형 오라클 성능 고도화의 원리와 해법 - Chapter 1 * 클릭 시 원본 사진으로 볼 수 있습니다. 참고 : http://www.gurubee.net/pages/viewpage.action?pageId=17530891 정규화 정리 제 1정규화 : 주식별자 하나 당 여러 개의 속성이 나오는 경우 이를 분리한다. 예) 지점정보 테이블의 PK인 지점코드에 해당하는 여러 팀명이 필드로 있는 경우, 팀명은 팀 테이블로 분리한다. 제 2정규화 : 주식별자에 종속적이지 않는 속성이 나오는 경우 이를 분리한다. 예) 지점정보에 PK인 지점코드와 종속적이지 않는 사원명은 사원 테이블로 분리해야 한다. 제 3정규화 : 속성간에 종속적인 속성은 분리한다. 이전 속성관계(Transitive Dependence) 예) 지점정보 테이블에 속성으로 팀 코드, 팀장 등의 필드가 있는 경우 팀코드에 팀장 필드는 종속적이므로 팀 테이블로 분리한다. 보이스-코드 정규화 : 주식별자가 여러개 존재하는 경우 이를 분리한다. (제 3정규화가 마친 이후에 실시) 예) 제.. 테이블 변경건 파악하는 방법 업무를 하다보면 테이블의 변경건을 파악해야 할 경우가 생긴다. 이때 주로 사용하게 되는 세가지 방법에 대해서 알아보고 장단점을 비교 분석해보고자 한다. 테이블의 입력/수정/삭제가 되는 건을 판단하는 방법은 일반적으로 3가지 방식을 사용한다. 첫째. 히스토리 테이블을 생성하고 OLTP 업무 처리시 트랜잭션 구문에 변경 내역을 쌓는 루틴을 추가하는 방법 둘째, 테이블에 트리거를 넣어서 입력/수정/삭제시 자동으로 히스토리 테이블에 넣는 방법 셋째, ORA_ROWSCN을 이용해 변경건을 찾는 방법 첫번째 방법은 업무 트랜잭션 기준으로 로깅을 해서 히스토리를 넣는 방식으로 이 방식의 장점과 단점은 다음과 같다. 장점 1. 업무단위의 로깅으로 로그 내용이 명확하고 분석이 용이함 2. 특정 업무에 대해서만 선택적으로.. 인덱스 클러스터 생성 인덱스 클러스터 생성 인덱스 클러스터의 생성순서 1. 클러스터를 생성한다. 2. 클러스터 인덱스를 생성한다. 3. 클러스터 테이블들을 생성한다. 클러스터 생성 문법 - cluster : 클러스터 이름 - column : 키 열 이름 - data type : 키 열의 데이터 유형과 크기 - TABLESPACE : 클러스터를 저장할 테이블스페이스 지정 - SIZE : 클러스터 키의 최대 값, 킬로바이트, 또는 메가바이트 단위로 지정 - INITRANS : 각 블록에 미리 할당된 트랜잭션 엔트리의 수를 지정(기본값은 최소값인 2) - MAXTRANS : 각 블록에 할당될 수 있는 트랜잭션 엔트리의 수를 제한. 예제 -- 클러스터 키가 deptno인 클러스터를 생성 예제. SQL> CREATE CLUSTER e.. 멀티컬럼 스칼라뷰를 이용한 1:M 쿼리 속도향상 1. 일반적인 1:M 조인에서 M 부분을 group by 시키고 조인하는 쿼리 select /*+ gather_plan_statistics */ a.apt_name, b.* from apt_info a, (select apt_code, count(distinct apt_code) a_cnt, count(*) d_cnt from dong_info group by apt_code) b where a.apt_code = b.apt_code and a.bjd_code = '1111010100' and rownum 앞서 제시한 멀티 로우 멀티 컬럼 스칼라 서브쿼리를 테이블화 시키는 구문 where d.a_number > 0 -> 스칼라 서브쿼리 내에서 아우터 조인으로 인한 빠지는 값을 제거하기 위한 조치 ANSI OUTER JOIN 과 ORACLE OUTER JOIN 의 차이점 ANSI OUTER JOIN 과 ORACLE OUTER JOIN 의 차이점 오라클에서 흔히 OUTER JOIN을 이용하는 경우 WHERE 조건에서 입력 값이 부족한 부분에 (+) 이용해서 하는 방법과 ANSI OUTER JOIN 문법인 LEFT(RIGHER) OUTER JOIN ~ ON 절을 이용하는 방법이 있다. 이 두가지 방식의 문법적인 차이첨을 확인해보고 사용상 오류를 방지하기 위해 이 문서를 작성한다. 1. 테스트 테이블의 형태 SQL> select * from tmp_20110727_1; APT_CODE APT_NAME ---------- ------------ 1 신구파인힐 2 인텔빌라 3 청운벽산빌리지 SQL> select * from tmp_20110727_2; APT_CODE BULD_O.. 1. 오라클 실무 문제 (2011.7.26) 1. 오라클 실무 문제 작성일시 : 2011.7.26 해결여부 : 해결 기본정보 - APT_INFO 와 SF_APT_VALIDATE 는 1:1 대응(PK = APT_CODE)으로 약 25만건 정도를 가지고 있습니다. - APT_INFO 와 BJD_INFO 는 N:1 대응(APT_INFO.BJD_CODE = BJD_INFO.BJD_CODE(PK)) 입니다. - SF_APT_VALIDATE 테이블에는 APT_CODE 는 있으나 BJD_CODE, BRANCH_CODE 는 없습니다. - 출력하고자 하는 값은 BJD_INFO의 BRANCH_CODE 별로 처리 건을 추출하는데 처리여부는 SF_APT_VALIDATE.VALIDATE_FLAG를 기준으로 추출 합니다. - SF_APT_VALIDATE.VALIDATE_F.. PLAN 테이블 활성화 및 사용하기 1. oracle 10g 이상에서 플랜 테이블을 사용하는 방법 가) 플랜테이블 생성 - 사용할 계정으로 로그인 SQL> sqlplus scott/tiger - 플랜테이블 생성 쿼리 수행 SQL> @$ORACLE_HOME\RDBMS\ADMIN\utlxplan.sql 나) 플랜테이블 추가 검색기능 가동 - 관리자 계정으로 로그인 SQL> sqlplus '/ as sysdba' - 추가 검색기능 권한 쿼리 수행 SQL> @$ORACLE_HOME\sqlplus\admin\plustrce.sql - 추가 검색기능 권한 주기 SQL> grant plustrace to scott; 2. 플랜테이블을 이용해 실행계획 보기 SQL> set linesize 300; 주) 줄길이 조정 SQL> set pagesize 100.. 이전 1 2 3 다음