목록Category (169)
C#,Delphi,Oracle,MSSQL 개발자블로그
오라클 SQL은 실행전에 반드시 파싱을 하도록 되어있다. Hard Parsing(이하 하드 파싱)은 기본적으로 다음의 스텝을 가진다. 1. SQL문을 shared pool에 로딩한다. 2. Syntax parsing. 3. Semantic parsing 4. Query Transformation 5. Optimization 6. Create executable 여기서 중요한 것은 soft parsing(소프트 파싱)은 위의 1번 SQL문을 shared pool에 로딩하지 않는 다는 점이다. 정확히 말하면, SQL 문에 대해서 오라클에서는 해싱값을 가지게 되고 그 값을 share pool에서 찾아오게 된다. 그래서 쿼리에 space나 개행문자등이 오면 SQL문의 해싱값이 달라지니 hard parsing이 ..
먼저 오라클에서 쿼리를 날리게 되면, 오라클은 옵티마이저라는 놈을 이용해서 실행계획 즉 plan이라는걸 짜게(?) 됩니다. 이 때 실행계획이 완성되기 전까지는 꽤 많은 리소스들이 사용된다고 합니다. 실행계획이란건 이런거죠. 예를 들어 select empno from student where empno = 100 이렇다면, 오라클은 empno컬럼에 걸린 인덱스를 가지고 empno가 100인것을 찾겠다.. 뭐 이정도 되겠죠. 물론 이건 너무 간단한 예이니깐..머.. 그런데 조금 있다가 누군가가 select empno from student where empno = 100이라고 똑같은 쿼리를 날리게 되면, 오라클은 흠..새로운 쿼리가 들어왔으니 또 계획을 세워야 겠구만..헉헉헉.. 이렇게 한다면 곤란하겠죠? ..
프론트엔드와 백엔드.. 자주 보게되는 용어인데 정리한번 해보려한다. 프로그램은 여러기능을 수행하는데 어떠한 기능들은 사용자와의 인터페이스를 담당하는 것도 있을테고 어떤 기능은 내부적으로 시스템의 자원에 엑세스하거나 어떤 데이터를 처리할 것이다. 프론트엔드(Frond-end)는 사용자나 혹은 다른 프로그램과의 인터페이스를 말한다. GUI같은 것들이 프론트엔드이다. 반대로 백엔드(Back-end)는 시스템의 구축, 내부로직, 데이터베이스설계, 데이터의 처리 등을 담당하게 된다. 프로그램을 만들때 프론트엔드와 백엔드를 나누어서 만드는 경우가 있는데 이러한 경우 프로그램의 외관을 바꿀 때는 프론트엔드만 변경시키면된다. 우리가 프로그램을 쓰다 외관이 지겨워서 다른 스킨을 갈아치우는 것과 마찬가지로.. 프론트엔드를..
ROWID 정의 ▣ ROWID는 ORACLE에서 INDEX를 생성하기 위하여 내부적으로 사용하는 PSEUDOCOLUMN 으로 사용자가 임으로 변경하거나 삭제할 수 없다. ▣ 단지 테이블의 한 컬럼처럼 참조만 가능하며 데이타베이스에 값이 저장되지는 않는다. ▣ ROWID는 물리적인 ADDRESS를 가지고 있기 때문에 SINGLE BLOCK ACCESS로 찾고자 하는 ROW를 찾을 수 있어 물리적인 ROWID는 주어진 테이블에 가장 빠른 ACCESS 방법을 제공하게 된다. ▣ ROWID를 분석해보면 AAAArs AAD AAAAUa AAA ------ --- ------ --- 1 2 3 4 1) 6자리 : 데이터 오브젝트 번호 (data object number) - 오브젝트의 고유 번호 2) 3자리 : 상..
오늘은 티스토리 글 순서 바꾸기를 방법을 알려줄게요. 어렵지 않아요~ 간단해요^^ 티스토리 글은 등록일 순서로 게시가 되기 때문에 등록일을 바꿔주면 돼요. 그럼 사진을 볼까요? 사진을 보면 3월 31일에 글이 세개 있죠~ 이 글의 순서를 바꿀거에요. 지금은 블로그에서 글이 순서 바꾸기, 테스트2, 테스트1 순서로 보이겠지요? 그럼 반대로 테스트1, 테스트2, 순서 바꾸기 순서로 바꿔볼거에요. 먼저 테스트1 글 수정으로 들어가요. 그럼 오른쪽에 보면 등록일이 있죠? 거기서 현재를 눌러주면 글이 가장 위로 올라가요! 그럼 테스트1 이라는 글이 블로그에서 가장 먼저 보이겠죠? 그리고 순서 바꾸기 글 수정에 들어가서 예약으로 날짜나 시간을 수정해줘요~ 테스트2 보다 전 날짜나 시간으로 수정하면 되겠죠? 그러면 ..
● 예외를 일으키는 두 가지 방법 1. 오라클 에러가 발생하면 관련 예외는 자동적으로 일어난다. 예를 들면, 질의 문장의 데이터베이스에서 읽어 들인 행이 아무것도 없을 때, ORA-01403가 발생하면, 이 때 PL/SQL은 예외 NO_DATA_FOUND를 일으킨다. 2. 블록 내에서 RAISE 문장을 써서 명시적으로 예외를 일으킨다. 예외는 사용자가 정의하거나 미리 정의되어 있다. ● 예외 트랩, 예외 트래핑(trapping) 예외가 블록의 실행 가능한 섹션에서 발생했을 때, 처리는 블록의 예외 섹션에서 해당 예외 처리기로 제어가 넘어가는 것. EXCEPTION WHEN exception1 [OR exception2 ...] THEN statement1; statement2; ... [WHEN exce..
● 매개변수와 커서 커서가 열릴 때 커서로 매개변수 값을 전달하고, 커서가 실행될 때 질의에서 그 값이 사용될 수 있다. DECLARE CURSOR C1 (v_deptno NUMBER, v_job VARCHAR2) IS SELECT empno, ename FROM emp WHERE deptno = v_deptno AND job = v_job; BEGIN OPEN c1(10, 'CLERK'); ... ● FOR UPDATE 절 SELECT ... FROM ... FOR UPDATE [OF column_reference] [NOWAIT] column_reference 수행된 질의에 대응하는 테이블 열 또는 열의 집합이다. NOWAIT 다른 섹션이 행을 잠그면 오라클 에러를 리턴한다. - 커서가 열릴 때 영향..
● 커서 오라클 서버는 SQL 문장을 실행하고 처리한 정보를 저장하기 위해 Private SQL 영역이라 불리는 작업 영역을 사용한다. Private SQL 영역에 이름을 붙이고 그것의 저장된 정보를 액세스하기 위해 PL/SQL커서를 사용할 수 있다. - 암시적 커서 : 모든 DML과 PL/SQL SELECT 문장에 대해 선언된다. - 명시적 커서 : 프로그래머에 의해 선언되고 이름 붙여진다. 커서는 PL/SQL에 내장된 일종의 포인터이며, 데이터베이스 쿼리와 레코드들의 세트를 얻는 작업, 그리고 결과셋의 행들을 하나씩 얻는 작업에 이용될 수 있다. 즉, 커서는 데이터에 대한 프로그래밍적인 접근을 가능하게 해준다. [명시적 커서] 명시적 커서는 커서를 관리하는데 필요한 PL/SQL코드를 PL/SQL 프로..
● 조합 데이터형 (또는 Collection 이라고도 부른다.) -RECORD 관련은 있으나 비슷하지 않은 데이터를 논리적인 한 단위로 묶기 위해서 RECORD 데이터형을 사용한다. -TABLE 전체 객체로서 데이터의 모음을 참조하고 조작하기 위해 TABLE 데이터 형을 사용한다. -중첩 TABLE -VARRAY ● PL/SQL 레코드 RECORD는 여러개의 데이터 타입을 갖는 변수들의 집합니다. PL/SQL 테이블과 다르게 개별 필드의 이름을 부여할 수 있고, 선언시 초기화가 가능하다. TYPE type_name IS RECORD (field_declaration[, field_declaration]...); identifier type_name; type_name RECORD의 형의 이름 field_..
● PL/SQL 실행 흐림 제어 문장의 논리적 흐름을 변경할 수 있다. PL/SQL 제어 구조의 2가지 유형 - IF 문장 - LOOP 제어 구조 ● IF문장 IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statements;] END IF; condition 부울 변수 또는 표현식이다. 이것은 IF 표현식이 TRUE를 생성할 때만 일련의 문장들을 실행하도록 한다. THEN 다음에 나오는 문장들과 그것에 선행되는 부울 표현식을 관련시키는 절이다. statements 하나 이상의 PL/SQL 또는 SQL 문장이 될 수 있다. 그것들은 몇 개의 중첩 IF, ELSE와 ELSIF를 포함하는 IF문장을 포함할 수 있다. ELSIF ..