Database

GOLDILOCKS DBMS 를 기준으로 설명되며, 이는 다른 DBMS 또한 동일합니다. T1 테이블에 다수개의 필드가 있고, 데이터가 많이 있는 상황입니다.gSQL> SELECT * FROM T1 LIMIT 10; DESCRIPTION LOGICAL_ADDR REF_COUNT SPIN_LOCK WAIT_COUNT X_LOCK_SEQ CURRENT_MODE CAS_MISS_COUNT ----------------------------- --------------- --------- --------- ---------- ---------- ------------ -------------- PCH ( TBS:4, PAGE:0, TYPE:9 ) 562949991497728 0 0 0 14 INITIAL 0 P..
테이블을 조인 할 때, Nested Loops, Sort Merge, Hash Join 결합을 많이 사용합니다. Nested Loops외부 테이블(Outer Table)에서 조건에 만족하는 레코드를 검색한 후, 결합 조건에 일치하는 레코드를 내부 테이블(Inner Table)에서 조인하는 방식입니다.Outer Join 에서 만족하는 레코드가 적을수록 NL 조인에서 효율이 좋습니다.조인 조건에 해당하는 컬럼들은 인덱스를 가지고 있어야 합니다. Sort Merge Join외부 테이블(Outer Table) 에서 조건에 만족하는 레코드를 검색한 후, 조인 키를 기준으로 정렬작업을 수행합니다.내부 테이블(Inner Table) 에서 조건에 만족하는 레코드를 검색한 후, 조인 키를 기준으로 정렬작업을 수행합니다...
실행 계획(Plan) 이란, 결과를 도출하기 위해 어떤 방법 혹은 순서로 데이터에 접근할지를 나타내는 것을 의미합니다. 접근 방식은 테이블 스캔과, 인덱스 스캔으로 나뉘어집니다.이 접근 방식은 테이블의 데이터 량에 따라 성능차이가 발생할 수 있습니다. 예를 들어 보겠습니다. 테이블에 데이터가 1건이 있는 경우, 학번 1001 을 검색하기 위해선, 아래 그림 중 어느 게 빠를까요?테이블에 데이터가 10,000 건(엄청 많음을 의미)이 있는 경우, 학번 1001 을 검색하기 위해선, 아래 그림 중 어느게 빠를까요? 테이블의 건수가 많은 경우테이블 스캔은 수많은 데이터중 1건을 스캔해야 하지만,인덱스 스캔은 1001 이라는 데이터에 접근한 뒤, 이 주소를 이용하여 테이블에 접근하면 되므로 성능에서 이점이 생깁..
오라클 설치시 SID 가 이미 존재한다는 오류와 함께 설치가 진행되지 않은 경우가 있습니다. 이때에는 /etc/ 경로의 oratab 파일을 삭제한 뒤 다시 설치를 진행하면 됩니다.# cd /etc # rm oratab rm: remove 일반 파일 `oratab'? y
TEST 명으로 된 계정 혹은 롤이 없는 상황에서ORACLE 에 TEST 계정을 생성하려고 하는데 아래와 같은 오류가 나왔습니다. ORA-65096: invalid common user or role name SQL> drop user test; drop user test * ERROR at line 1: ORA-01918: user 'TEST' does not exist SQL> drop role test; drop role test * ERROR at line 1: ORA-01919: role 'TEST' does not existSQL> create user test identified by test; create user test identified by test * ERROR at line 1:..
이전 포스팅에서 나온 오류를 해결 한 후, 계속해서 프로그램을 짜던 중아래와 같은 에러코드를 다시한번 뱉습니다.[ERROR] Insert Execute Failure! SQLCODE : -1001 ERROR MSG : ORA-01001: invalid cursor 오라클 공식문서에서도 뾰족한 해결방법도 안나와있고, 그냥 커서가 적합하지 않다라고만 되어있어서 많이 해멨습니다. 기존에 컴파일한 Makefile 방식과 에러가 나온 부분의 소스는 아래와 같았습니다.TARGET = sh CC = gcc PROC = proc LIB = -L$(ORACLE_HOME)/lib -lclntsh -lpthread -ldl -lm -lrt -lodbc MYINC = include/ PROCINC = include=$(ORA..
Pro*C 를 짜던 중 아래와 같은 에러코드를 자꾸 뱉습니다.[ERROR] Insert Execute Failure! SQLCODE : -2122 ERROR MSG : SQL-02122: Invalid OPEN or PREPARE for this database connection 오라클 사이트에서 찾아보면, 아래처럼 해결하라고 나와있습니다.Close the cursor to make it available for this connection or use a different cursor for this connection. 대충해석해보자면, 현재 세션이 사용하고 있는 커서를 닫거나, 다른 커서를 사용하세요. 라고 되어있습니다. 데이터베이스를 재구동 해봐도 마찬가지로 발생합니다.SID 별 열려있는 커서를..
ORACLE 에서는 계층데이터를 위해 CONNECT BY 절을 지원합니다. CONNECT BY 구성 CONNECT BY 는 아래의 3개의 구문으로 구성됩니다. 구문 설명 WHERE 데이터를 가져온 뒤 마지막으로 조건절에 맞게 정리 START WITH 어떤 데이터로 계층구조를 지정하는지 지정 CONNECT BY 각 행들의 연결 관계를 설정 * START WITH 는 가장 처음에 데이터를 거르는 플랜을 타게 되고, 따라서 이 컬럼에는 인덱스가 걸려있어야 성능을 보장받습니다.* CONNECT BY 절의 결과에는 LEVEL 이라는 컬럼이 있으며, 이는 계층의 깊이를 의미합니다. CONNECT BY 사용하기 먼저 EMP 테이블에 데이터가 아래와 같이 있습니다.SQL> SELECT * FROM EMP; EMPNO ..
ORACLE 의 SQL 에서는 사용자와의 편리성을 위해 명령어들을 제공합니다. 아래는, 제가 자주쓰는 명령어들 입니다. 옵션 설명 CONN 다른계정으로 접속 ! 리눅스의 명령어를 실행 @파일 파일의 쿼리문을 수행 SET LINESIZE 한 라인에 출력되는 데이터 길이를 지정 SET PAGESIZE 한 페이지에 출력되는 레코드 수를 지정 l 혹은 ; 방금 수행한 쿼리를 출력 ( 소문자 L ) / 방금 수행한 쿼리를 수행 ED 방금 수행한 쿼리를 수정 SET TIMING ON 쿼리 수행에 걸린 시간을 출력 SET LINESIZE 를 1000 으로 설정한 후SQL> select * from emp; EMPNO ENAME JOB MGR ---------- ------------------------------ ..
연동환경 서버 DATABASE Goldilocks 3.1.15 r25159 클라이언트 OS Windows 7 DATABASE Client Goldilocks 3.1.15 r25159 win64 Excel 64bit Visual Basic 7.0.1590 Visual Basic 과 Database 는 아래처럼 ADO, OLE, ODBC 를 이용하여 연동할 수 있습니다.이 중 ODBC 방식을 이용하여 Goldilocks 와 Visual Basic 을 연동해 보겠습니다. ODBC 관리자에 Office Excel 버전에 맞는 Goldilocks DSN 64 bit 를 등록합니다.등록하는 방법은 http://mozi.tistory.com/4 를 참조합니다. 연동 방법 1. 엑셀 창을 연 뒤, Alt + F11 버..
꽁담
'Database' 카테고리의 글 목록 (17 Page)