본문 바로가기

반응형

전체 글

oracle - 오라클에서 힌트(Hint) 사용 예제 오라클에서 힌트(Hint) 사용 예제 SQL*Plus로 scott 계정으로 로그인한 후 test라는 테이블을 만들어 실습을 합니다.SQL> create table test ( 2 id number not null primary key, 3 name varchar2(20) 4 );테이블이 생성되었습니다. 데이터는 5건 넣는데 순서를 잘 보시기를 바랍니다.기본적으로 select하면 넣은 순서대로 나옵니다.SQL> insert into test values (4,'4길동');1 개의 행이 만들어졌습니다.SQL> insert into test values (3,'3길동');1 개의 행이 만들어졌습니다.SQL> insert into test values (5,'3길동');1 개의 행이 만들어졌습니다.SQL> in.. 더보기
oracle - 오라클 프로시저 목록보기 오라클 프로시저 목록보기 리스트만 보시려면..select * from user_procedures; 프로시저의 내용까지 보려면select * from user_source; select object_name,status,TO_CHAR(CREATED,'YYYY-MM-DD HH24:mi:ss') as CREATED,TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:mi:ss') as LAST_DDL_TIMEfrom user_objectswhere object_type = 'PROCEDURE' 더보기
oracle - 오라클 프로세스 확인하기 오라클 프로세스 확인하기 생성된지 2분 이상된 프로세스 확인하기 select b.ROW_WAIT_OBJ#, a.spid ,c.sql_text,b.SID, b.SERIAL#,b.machine,b.OSUSER,b.logon_time,b.paddrfrom v$process a, v$session b, v$sqltext cwhere a.addr = b.paddrand b.sql_hash_value = c.hash_valueand B.machine ='머신이름'and b.logon_time < (select sysdate-(1/24/10) from dual)--and a.spid = 8016order by logon_time asc, a.spid asc, C.PIECE asc 프로세스 죽이기 ALTER SYSTE.. 더보기
oracle - 오라클 트리거 오라클 트리거 오라클 트리거(Trigger)는 트리거링 사건(Triggering Event)에 의해 자동으로 실행되는 PL/SQL 이라고 할 수 있다.트리거링 사건은 데이터베이스의 테이블에 DML 문이 실행될때 발생하는데 INSERT,UPDATE,DELETE문의 사용에 트리거링 사건을 정의 할 수 있고, 이들이 실행될때 트리거가 자동으로 실행된다.예) emp테이블에 sal 컬럼은 사원의 봉급을 나타낸다. 누군가가 이 봉급을 자기가 원하는 값으로 변경시킨다면 문제가 될 것이다.이런 일을 방지하기위해 트리거를 사용할 수 있다. sal 컬럼의 값이 update 되면 그 기록을 남기도록 할 수 있는것이다.트리거는 다음과 같은 작업에 사용될 수 있다.⊙ 데이터베이스 테이블 생성시 참조 무결성과 데이터 무결성, 그.. 더보기
oracle - 오라클 옵티마이저의 기본 원리 오라클 옵티마이저의 기본 원리   관계형 DBMS와 옵티마이저 21세기에 들어서도 여전히 관계형 DBMS가 데이타베이스 시장을 지배하고 있다. 그리고, 관계형 DBMS에서 사용되는 핵심 언어는 SQL(Structured Query Language)이다. 이 SQL 언어의 가장 큰 특징은 사용자가 데이타베이스에서 자신이 원하는 데이타(What)만 지정하면, 그 데이타를 어떻게 구하는가(How)는 DBMS가 자동적으로 결정해서 처리해 준다는 점이다. 이런 면에서 SQL을 선언적(declarative) 언어(주 1)라고 부르며, 사용자는 데이타베이스의 물리적 구조의 변경에 상관 없이 항상 원하는 정확한 결과 데이타를 구할 수 있다. 이러한 물리적 데이타 독립성(physical data in.. 더보기
오라클 실행계획(explan table) 보기. 오라클 실행계획(explan table) 보기. 오라클은 실행계획이라는 것을 확인하여 성능을 측정할 수 있습니다. 엄밀히 말해 성능을 측정하는게 아니라 SQL리 인덱스를 적절히 쓰고 있는지 아니면 인덱스가 무시된체 full table scan을 하여 성능을 떨어뜨리게 되는지등을 확인하는 것입니다. 1. 우선 실행계획을 측정 하려면 실행계획을 확인한 자료를 오라클 DB에 저장할 수 있도록 실행계획 테이블을 만들어 줘야 합니다. 실행계획 테이블의 이름은 어떠한 이름을 가지고 있더라도 상관은 없지만 아래의 테이블 필드를 가지고 있어야 합니다. 따라서 실행계획을 확인하기 위한 첫 작업은 실행계획 테이블을 만드는 것이겠지요. 우리는 디폴트 이름은 PLAN_TABLE이라고 이름을 지읍시다. create table .. 더보기
oracle - 실행계획 해석하기(Nested Loops Join) 실행계획 해석하기(Nested Loops Join) 실행 계획을 보면 Nested Loop라는 것이 보이는데 그 바로 밑에 나온 문장이 드라이빙 테이블(OUTER TABLE)이며 그 아래 문장이 비드라이빙 테이블(INNER TABLE) 입니다. 다음의 예를 보도록 하죠… SQL> SELECT E.EMPNO, E.ENAME, D.DNAME, D.LOC FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO ORDER BY EMPNO;9i) Execution Plan------------------------------------------------------SELECT STATEMENT Optimizer=CHOOSESORT (ORDER BY)TABLE ACCESS (BY INDE.. 더보기
oracle - 실행 계획 해석하기(1) 실행 계획 해석하기(1) 실행계획을 예를 들어 하나씩 해석해 보도록 하죠^^ 이전의 강좌에도 있지만 실행 계획은 일반적으로 아래와 같은 기준으로 해석 됩니다. - 실행계획의 가장 안쪽으로 들여 쓰기 된 것이 먼저 수행- 실행 계획의 각 문장은 들여쓰기간 한 단계 덜된 부모 문장에 종속- 동일하게 들여 쓰기 된 문장이 여러 개 있는 경우 가장 위 문장이 우선 실행- 인덱스를 경유하여 테이블을 Access하는 두 실행 계획은 하나로 취급(테이블 Lookup에 사용되는 Index Scan을 의미) 아래의 예를 보도록 할까요? SQL> SELECT /*+ FULL(D) */ ENAME, SAL, JOB FROM DEPT D WHERE DEPTNO = 20 UNION ALLSELECT /*+ INDEX(E IDX.. 더보기
oracle - 실행계획 SQL연산(OUTER JOIN) 실행계획 SQL연산(OUTER JOIN) Outer Join이란 드라이빙 테이블과 조인되는 테이블에 조건을 만족하는 데이터가 없더라도 드라이빙 테이블의 데이터를 출력하는 조인의 방식입니다. (흔히 오라클인 경우 꼭 나타나야 하는 반대쪽에 더하기 표시를 합니다.) 즉 Outer Join에서 (+) 표시가 붙지 않은 테이블이 드라이빙 테이블이 되는 거죠~ SQL> SELECT E.ENAME 사원명, M.ENAME 관리자, E.SAL 급여 FROM EMP E, EMP M WHERE E.MGR = M.EMPNO(+); Execution Plan-------------------------------------------------------------------SELECT STATEMENT Optimizer=C.. 더보기
oracle - 실행계획 SQL연산(NESTED LOOP) 실행계획 SQL연산(NESTED LOOP) 먼저 아래 SQL문장을 보도록 하죠… SQL> SELECT E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO Execution Plan------------------------------------------------------SELECT STATEMENT Optimizer=CHOOSETABLE ACCESS (BY INDEX ROWID) OF ‘EMP’NESTED LOOPS TABLE ACCESS (FULL) OF ‘DEPT’ INDEX (RANGE SCAN) OF ‘IDX_EMP_DEPTNO’ (NON UNIQUE) 이 경우 DEPT 테이블이 드라이빙 테이블이 되고 EMP 테이블은 비드라이빙 테이.. 더보기

반응형