(Microsoft PowerPoint - 5\300\345.\271\256 \303\263\270\256\(8\301\266\).ppt)

Size: px
Start display at page:

Download "(Microsoft PowerPoint - 5\300\345.\271\256 \303\263\270\256\(8\301\266\).ppt)"

Transcription

1 이펙티브오라클 제 5 장문처리 1. 수정 DML의시작과끝 2. DDL 처리 3. 바인드변수의사용 4. 가능한한적게파싱하기 5. 요약 강정식 ( xsofter@empal.com ) 이문서는 Oracle Club 데이터베이스스터디모임에서작성하였습니다. 1

2 1. 수정 DML의시작과끝 Page 369 ~ 수정 DML 문 (INSERT, DELETE, UPDATE, MERGE) 은일반적으로쿼리구성요소를갖는다. DELETE, UPDATE, MERGE 문은테이블에서수정대상행을찾아이들을수정한다. UPDATE EMP SET SAL = SAL * 1.1; INSERT 문은이를포함할수도있고아닐수도있다. 쿼리구성요소포함안함 INSERT INTO EMP (EMPNO, DEPTNO) VALUES (9999, 10); 쿼리구성요소포함 INSERT INTO TAB SELECT EMPNO FROM EMP; 1.2 수정문은일관된읽기메커니즘을이용하여갱신대상데이터를찾은다음이를수정하기위하여현재모드로바꾼다. 인덱스가없는컬럼을변경할경우 UPDATE EMP SET SAL = SAL * 1.1; 14행이갱신되었습니다. call count cpu elapsed disk query current rows Parse Execute Fetch total 오른쪽에서보는것처럼 current 와 rows 의수가거의동일하다. 이는수정을하기위해현재모드 (current) 로전환하고수정한다음에 (rows) 이를반환함을의미한다. 2

3 1. 수정 DML 의시작과끝 Page 369 ~ 수정문은일관된읽기메커니즘을이용하여갱신대상데이터를찾은다음이를수정하기위하여현재모드로바꾼다. 인덱스가있는컬럼을변경할경우 CREATE INDEX SAL_IDX ON EMP(SAL); 인덱스가생성되었습니다. ALTER SESSION SET SQL_TRACE = TRUE; 세션이변경되었습니다. UPDATE EMP SET SAL = SAL * 1.1; 14행이갱신되었습니다. call count cpu elapsed disk query current rows Parse Execute Fetch total 보는것처럼인덱스를추가한경우도마찬가지로현재모드로바꾸기위한작업이증가한것을볼수있다. 다만인덱스를추가하기전보다훨씬증가하였는데이이유는다음과같다. 이전과같이현재데이터값을현재모드로돌리기위한작업한다. 인덱스유지를위해인덱스값또한수정작업을하기위해현재모드로바꾸는작업을병행한다. 이외에도 DML 은다음과같은작업을수행한다. 내부적으로실패할경우수정이복구될수있도록하기위한리두생성 사용자에의해트랜잭션이롤백되는경우에수정을원상태로돌리기위한언두생성 3

4 2. DDL 처리 Page 371 ~ DDL문은 DML과달리최적화작업을하지않고파싱을한다. 2.2 DDL문을실행하기위해서는내부적으로이구문을검증하기위해대략 50개의 SQL문이필요하다. CREATE TABLE T (X INT) 이구문이제출될경우 오라클은사용자가테이블을생성할수있는권한을갖고있는지체크한다. 어느테이블영역에생성되어야하는지체크한다. 테이블영역의쿼터를초과하지는않았는지체크한다. T라고명명된객체가존재하는지않는지체크한다. 대상테이블이실제로존재하도록하기위해 SYS.OBJ$, SYS.COL$ 등에행을삽입하는문을실행할수있다. 2.3 테스트 ALTER SYSTEM FLUSH SHARED_POOL; -- 공유풀지움 시스템이변경되었습니다. ALTER SESSION SET SQL_TRACE = TRUE; 세션이변경되었습니다. CREATE TABLE T (X INT); 테이블이생성되었습니다. call count cpu elapsed disk query current rows Parse Execute Fetch total OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 52 RECURSIVE STATEMENTS에서보는것처럼 DDL문으로인해오라클은 123개의 SQL 문을파싱했으며이들을 347번이나실행하였다. 이들중일부는 ( 몇번의 Fetch로 인한 ) SELECT이고일부는수정이다. 4

5 2. DDL 처리 Page 371 ~ DDL 문은 DDL 문이실행되기직전과 COMMIT 또는 ROLLBACK 직후에묵시적인 COMMIT 이수행된다. DDL 개념은다음과같다. COMMIT; PARSE THE DDL 권한과구문검사 DO_THE_DDL; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; DDL 은이처럼시작전에미해결된작업이있으면항상이들의커밋을완료한다. 이는 DDL 명령이실패하더라도대부분의트랜잭션의커밋은완료된다는것을의미한다. 5

6 3. 바인드변수의사용 Page 373 ~ 402 바인드변수란? 호스트환경에서선언한변수로런타임값을하나이상의 PL/SQL 프로그램과주고받는데사용한다. 이변수는 SQL*PLUS 환경에서변수를사용하기위해다음과같은구문을사용한다. VAR[IABLE] 변수명 [ NUMBER CHAR(n) VARCHAR2(n)] 또한바인드변수값을나타내기위해서는 PRINT문을사용한다. 바인드변수를사용하면오라클은한번만하드파싱을수행하고이후에는계속해서소프트파싱을수행할수있다. 즉실행시간에값이공급될수있는개체틀로대체됨을의미한다. 사용예제 바인드변수없는쿼리 SELECT ENAME FROM EMP WHERE EMPNO = 7369; SMITH SELECT ENAME FROM EMP WHERE EMPNO = 7521; WARD 바인드변수있는쿼리 VARIABLE EMPNO NUMBER EXEC :EMPNO := 7369; PL/SQL 처리가정상적으로완료되었습니다. SELECT ENAME FROM EMP WHERE EMPNO = :EMPNO; SMITH EXEC :EMPNO = 7521; PL/SQL 처리가정상적으로완료되었습니다. SELECT ENAME FROM EMP WHERE EMPNO = :EMPNO; WARD 6

7 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 1) 1) 바인드변수를사용하지않으면성능이낮다. 쿼리문을제출하면오라클은 SGA 영역의공유풀을먼저찾아본다. 쿼리문이제출되면파싱에서이쿼리가이미파싱되었으며최적화되었는지를파악하기위해 SGA영역의 Shared Pool을살펴본다. 소프트파싱 : 만약공유풀에이쿼리가존재한다면최적화절차를건너뛰고바로문을실행한다. 하드파싱 : 만약공유풀에이쿼리가존재하지않는다면오라클은 CPU 중심의작업인하드파싱을하고최적화과정을거친다. 사용예제 : 속도비교 하드파싱 (3.58 sec) 테스트를하기위한 T 테이블생성 DECLARE CREATE TABLE T (X VARCHAR2(5)); TYPE rc IS REF CURSOR; l_cursor RC; 테이블이생성되었습니다. l_dummy ALL_OBJECTS.OBJECT_NAME%TYPE TYPE; l_start NUMBER DEFAULT DBMS_UTILITY.GET_TIME; FOR I IN LOOP OPEN l_cursor FOR 'SELECT X FROM T WHERE X = ' TO_CHAR(i); FETCH l_cursor INTO l_dummy; CLOSE l_cursor; END LOOP; DBMS_OUTPUT.PUT_LINE(ROUND((DBMS_UTILITY.GET_TIME - L_START) / 100, 2) 'sec'); 소프트파싱 (1.14 sec) DECLARE TYPE rc IS REF CURSOR; l_cursor RC; l_dummy ALL_OBJECTS.OBJECT_NAME%TYPE TYPE; l_start NUMBER DEFAULT DBMS_UTILITY.GET_TIME; FOR I IN LOOP OPEN l_cursor FOR 'SELECT X FROM T WHERE X = :x' USING i; FETCH l_cursor INTO l_dummy; CLOSE l_cursor; END LOOP; DBMS_OUTPUT.PUT_LINE(ROUND((DBMS_UTILITY.GET_TIME - L_START) / 100, 2) 'sec'); 7

8 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 1) 1) 바인드변수를사용하지않으면성능이낮다. 사용예제 : 내부처리절차비교 하드파싱 DECLARE TYPE rc IS REF CURSOR; l_cursor RC; FOR i IN LOOP OPEN l_cursor FOR 'SELECT X FROM T WHERE X = ' TO_CHAR(i); CLOSE l_cursor; END LOOP; 내부처리절차 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 1 OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS SELECT X FROM T WHERE X = 1 SELECT X FROM T WHERE X = 2 call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 5000 SELECT X 5006 user SQL statements in session. FROM T 1 internal SQL statements in session. WHERE X = SQL statements in session. 0 statements EXPLAINed in this session. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SELECT X FROM T 5000천번을서로다른쿼리로인식하고하드파싱을한다. WHERE X =

9 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 1) 1) 바인드변수를사용하지않으면성능이낮다. 사용예제 : 내부처리절차비교 소프트파싱 DECLARE TYPE rc IS REF CURSOR; l_cursor RC; FOR i IN LOOP OPEN l_cursor FOR 'SELECT X FROM EMP_3 WHERE X = :x' USING i; CLOSE l_cursor; END LOOP; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 0 내부처리절차 SELECT X FROM EMP_3 WHERE X = :x call count cpu elapsed disk query current rows Parse Execute Fetch total OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 0 이값이 0이라는얘기는 이쿼리가소프트파싱을하였음을의미한다 user SQL statements in session. 1 internal SQL statements in session SQL statements in session. 0 statements EXPLAINed in this session. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 바인드변수를사용하여공유풀에있는것을확인한후소프트파싱을한다. 9

10 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 2) 2) 바인드변수를사용하지않으면확장성이낮다. 하드파싱은 CPU 중심의작업일뿐만아니라확장성이낮은작업이다. 쿼리의파싱과최적화는여러개가동시에수행될수있는작업이아니다. 오라클은반드시 SGA의공유데이터구조에대한액세스를제어하여야한다. 만약이런제어가안된다면종국에는시스템이깨지고만다. 그러므로오라클은래치 ( 경렬직렬화장치 ) 를사용하여공유구조를보호한다. 이런구조때문에파싱이많으면많을수록공유풀을보호하는이들래치에대한경함이늘어나고동시작업은줄어들수밖에없다. 래치 ( 직렬화장치 ) : 많은세션이공유데이터구조를안전하게액세스하고수정할수있도록해주는기능 이런문제를해결할수있는유일한방법은처음부터바인드변수를사용해야한다. 하드파싱은확정성에취약하다. 바인드변수를사용하지않고초당수백또는수천개의쿼리를실행해야하는경우시스템은멈추고말것이다. 이를해결하기위해 CPU를추가하거나클러스터를사용한다고하더라도문제가해결되지는않는다. 이유는하드웨어가불충분하여생긴것이아니라다른세션이사용대상데이터구조를점유하고있어서불가피하게기다릴수밖에없어서생긴문제이기때문이다. 10

11 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 3) 3) 바인드변수를사용하지않으면코드작성이어렵다. 인용부호 ( 작은따옴표, 큰따옴표등 ) 가포함된문자열을쿼리에대입하는경우실패하는사례가증가한다. 실패예제 : 검색창에 [Ben and Jerry s] 라고값을입력하고조회를할경우 조회화면 검색창 Ben and Jerry s FIND Field_1 Field_2 Field_3 Field_4 Field_5 Field_6 FIND 버튼로직 SELECT * FROM TAB WHERE Field_1 = v_value ;-- v_value 변수는검색값 FIND 버튼클릭할때반환되는쿼리 SELECT * FROM TAB WHERE Field_1 = Ben and Jerry s 만약 WHERE 조건에 Ben and Jerry s 이런값으로조회한다면조회를실패할것이다. 그러므로 REPLACE() 함수를이용하여한개의작은따옴표를두개로만들어야한다. FIND 버튼수정된로직 SELECT * FROM TAB WHERE Field_1 REPLACE(v_value,, ) ; FIND 버튼수정된로직으로반환되는쿼리 SELECT * FROM TAB WHERE Field_1 = Ben and Jerry s 이처럼쿼리에문자열을포함할경우바인드변수를사용해야만다양한값에대응을할수있다. 11

12 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 4) 4) 바인드변수가사용되지않은코드의안전도는낮다. 바인드변수를사용하지않을경우약간의편법을이용하여 WHERE 조건을임의로변경할수있다. 이런대표적인사례가 SQL Injection 해킹기법이다. SQL Injection 해킹기법 : SQL Injection 은웹페이지를통해입력된파라미터값을이용하여쿼리를재구성하는방법이다. 사용자테이블에아이디와패스워드가 oracleclub / 0909 와같이있을경우 정상동작 아이디 비밀번호 oracleclub 0909 FIND SELECT CHECK FROM TAB WHERE USERNAME = oracleclub AND PASSWORD = 0909 만약사용자가다음과같은값을넣을경우 SQL Injection 아이디 비밀번호 oracleclub babo or 1 = 1 FIND SELECT CHECK FROM TAB WHERE USERNAME = oracleclub AND PASSWORD = babo or 1 = 1 이럴경우비밀번호를잘못입력하여도 1 = 1 구문이항상참이기때문에로그인이된다. 12

13 3. 바인드변수의사용 Page 373 ~ 바인드변수를사용하면무엇이좋은가? 4) 4) 바인드변수가사용되지않은코드의안전도는낮다. 실제예제 사용자테이블생성하고유저생성 CREATE TABLE EMP_2(USERNAME VARCHAR2(30), PASSWORD VARCHAR2(30)); INSERT INTO EMP_2 VALUES( oracleclub', 0909'); COMMIT; 문자열을결합한형태 변수선언 ACCEPT uname PROMPT Enter username : Enter username : oracleclub ACCEPT pword PROMPT Enter password : Enter password : babo or 1 = 1 문자열을바인딩변수를사용하여접근한형태 변수선언 VARIABLE uname VARCHAR2(30); VARIABLE pword VARCHAR2(30); Exec :uname : := oracleclub oracleclub ; Exec :pword : := babo babo or 1 = 쿼리 SELECT COUNT(*) FROM TAB WHERE USERNAME = &uname uname AND PASSWORD = &pword pword 쿼리 SELECT COUNT(*) FROM TAB WHERE USERNAME = &uname uname AND PASSWORD = &pword pword 0 Where username = &uname uname Where username = oracleclub oracleclub Where pword = &pword pword Where pword = babo babo or 1 = 1 13

14 3. 바인드변수의사용 Page 373 ~ 자바와 VB 에서바인드변수사용하기 JDBC 프로그램에서 Statement와 PreparedStatement 비교 일반적으로성능이좋다는이유만으로바인드변수가허용되는 PreparedStatement보다는바인드변수가허용되지않는 Statement를사용하도록강권하고있다. 그러나단일사용자환경이나다중사용자환경에서도 Statement보다는 PreparedStatement가훨씬성능이좋다. 이유는앞에서도보았다시피하드파싱을하게되는 Statement는수많은래치를유발하고이는확장성을저해한다. 결국사용자가늘어나면시스템은실패할수밖에없다. 그러므로가급적 Statement를통해 값의결합 을시도하지말고바인드변수를사용할수있는 PreparedStatement를사용하라. 14

15 변수의사용 Page 373 ~ 모든규칙에는예외가있다. 바인드변수를사용할때의장점 바인드변수는쿼리를파싱할때애플리케이션이사용하는래치의수를줄이기위한훌륭한방법이다. 소프트파싱은하드파싱보다 CPU 시간을약간적게사용하며바인드변수는소프트파싱을성취하기위한수단이다. SQL 문에바인드변수를사용하는대신문자열리터럴을사용하면시스템이 SQL 삽입에노출된다. SQL 문에문자열리터럴을사용하면사용자가인용부호와같은예기치못한문자를입력할경우문에실행되지않게될수있다. 사용중인환경 (PL/SQL, 자바와 JDBC, 또는몇가지다른언어 ) 에상관없이바인드변수를사용하는방안이바인드변수를사용하지않는것보다좀더빠를뿐만아니라쉽게작성한다. 바인드변수를사용할때의의문점 바인드변수를사용하면하드파싱이아니라 SGA 공유풀을사용하는소프트파싱을하기때문에유리하다. 하지만바인드변수는리터럴값을공급하지못하고변수를공급하기때문에옵티마이저는이값을받아통계정보를이용하지못한다. 다음과같은예를통해살펴보자. 통계정보가생성된 TAB 테이블의 Field_1 컬럼에 A, B, C, D, E 5개값이들어가있고인덱스가설정되어있다. A, B, C, D, E의분포도는각각 1%, 2%, 3%, 4%, 90% 를차지하고있다. 만약이럴경우, 리터럴값이들어간다면 A, B, C, D값일경우옵티마이저는인덱스를 E값일경우는 Full Scan을할것이다. 하지만바인드변수를사용하면 1/N 로분포도를나눠 25% 가되므로값에상관없이무조건 Full Scan을할것이다. 책에서제시한바인드변수사용사례 책에서는정적 SQL에들어가는값에는리터럴값을사용하고동적 SQL에들어가는값에는바인드변수를사용하라고한다. 하지만대부분바인드변수가들어가는컬럼에최상의효율을끌어내기위해인덱스나클러스터링작업을하기때문에이솔루션은의미가없다. 그래서책저자는이를해결하기위해 Oracle 9i부터제공하는 Bind Variable Peeking을소개하고있다. 이펙티브오라클성능향상을 데이터베이스설계비법 15

16 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Bind Variable Peeking 이란? 바인딩변수를사용한 SQL은파싱과최적화가이루어진후에바인드변수의바인딩이이루어진다. 따라서최적화가이루어지는시점에서변수로제공되는컬럼의분포도가균일하다는가정을세우고최적화를수행한다. 이렇기때문에최적화를수행하고분포도가균일하지못한컬럼에바인드변수를사용하게되면최악의실행계획을생성할수도있다. 그래서하드파싱의부하를줄이기위해바인드변수를사용하는것이좋다는것을알면서도분포도가좋지않기때문에현실적으로사용하기어려운경우가종종발생한다. 이러한한계를극복하기위해 Oracle 9i부터 Peeking 기능을제공한다. Peeking 을사전에서찾아보면 몰래엿보다 라고되어있는데이기능은다음과같다. 바인드변수를사용한 SQL 이첫번째실행될때옵티마이저는사용자가지정한바인드변수를살짝엿본다. 이살짝엿본다는의미는맨처음들어온상수값으로실행계획을생성하고그이후부터들어온 SQL 은무조건이실행계획을사용한다. 앞서본예를가지고설명하면, 만약 SQL 의바인딩컬럼값이맨처음 A 로들어온다면당연히인덱스실행계획을생성할것이고그이후부터 같은 SQL 이들어온다면무조건인덱스실행계획을생성한다. 그러므로 B, C, D, E 값이들어와도무조건인덱스스캔이다. 정리하면, 하드파싱이일어날때단한번만바인드변수를 Peeking 한다는뜻이고첫번째바인딩되는값에따라실행계획이고정된다. 16

17 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. ERD 학점 # 학점 * 시작점수 * 종료점수 학생 # 학번 * 이름 * 학점 (FK) 학생테이블 1000개의로우가존재하고 4명을제외한나머지는모두학점이 B STUNO STUNAME GRADE 10 oracleclub1 A 20 oracleclub2 C 30 oracleclub3 D 데이터구조 oracleclub4 oracleclub5 F B 학점테이블 60 oracleclub6 B GRADE S_POINT E_POINT 70 oracleclub7 B A oracleclub8 B B oracleclub9 B C D F oracleclub1000 B 17

18 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script CREATE TABLE GRADE_TAB AS -- 학점테이블생성스크립트 SELECT 'A' GRADE, 91 S_POINT, 100 E_POINT FROM DUAL UNION ALL SELECT 'B' GRADE, 81 S_POINT, 90 E_POINT FROM DUAL UNION ALL SELECT 'C' GRADE, 71 S_POINT, 80 E_POINT FROM DUAL UNION ALL SELECT 'D' GRADE, 61 S_POINT, 70 E_POINT FROM DUAL UNION ALL SELECT 'F' GRADE, 0 S_POINT, 60 E_POINT FROM DUAL; CREATE TABLE STU_TAB AS -- 학생테이블생성스크립트 SELECT CNT * 10 STUNO, 'oracleclub' CNT STUNAME, DECODE(CNT, 1, 'A', 2, 'B', 3, 'C', 4, 'F', 'B') GRADE FROM (SELECT LEVEL CNT FROM DUAL CONNECT BY LEVEL <= 10000); -- 공유풀초기화 ALTER SYSTEM FLUSH SHARED_POOL; 시스템이변경되었습니다. -- TRACE 생성 ALTER SESSION SET SQL_TRACE=TRUE; 세션이변경되었습니다. ALTER TABLE STU_TAB ADD CONSTRAINT STU_PK_STUNO PRIMARY KEY(STUNO); -- 학생번호에 PK 부여 테이블이변경되었습니다. CREATE INDEX STU_GRADE_INDX ON STU_TAB(GRADE); -- 학점에인덱스생성 인덱스가생성되었습니다. ANALYZE TABLE STU_TAB COMPUTE STATISTICS -- 학생테이블통계정보생성 FOR TABLE FOR ALL INDEXES FOR ALL INDEXED COLUMNS; 테이블이분석되었습니다. 18

19 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script : 리터럴값에따른실행계획 -- 분포도좋은데이터들어옴 SELECT COUNT(*), MIN(STUNO) FROM STU_TAB WHERE GRADE = 'A'; Rows Row Source Operation SORT AGGREGATE 1 TABLE ACCESS BY INDEX ROWID STU_TAB 1 INDEX RANGE SCAN STU_GRADE_INDX(object id ) -- 분포도나쁜데이터들어옴 SELECT COUNT(*), MIN(STUNO) FROM STU_TAB WHERE GRADE = B'; Rows Row Source Operation SORT AGGREGATE 9996 TABLE ACCESS FULL STU_TAB 19

20 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script : 바인드변수사용하여 A B 값순서로실행 -- 분포도좋은데이터먼저실행 VARIABLE x VARCHAR2(1) EXEC :x := 'A'; DECLARE v_count NUMBER := 0; -- 학생수 v_stuno NUMBER := 0; -- 학번 SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB WHERE GRADE = :x; Rows Row Source Operation Rows Row Source Operation SORT AGGREGATE SORT AGGREGATE 9996 TABLE ACCESS BY INDEX ROWID STU_TAB 9996 INDEX RANGE SCAN STU_GRADE_INDX(object id ) 1 TABLE ACCESS BY INDEX ROWID STU_TAB 1 INDEX RANGE SCAN STU_GRADE_INDX(object id ) -- 분포도나쁜데이터나중에실행 VARIABLE x VARCHAR2(1) EXEC :x := B'; DECLARE v_count NUMBER := 0; -- 학생수 v_stuno NUMBER := 0; -- 학번 SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB WHERE GRADE = :x; 20

21 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script : 바인드변수사용하여 B A 값순서로실행 -- 분포도나쁜데이터먼저실행 VARIABLE x VARCHAR2(1) EXEC :x := B'; DECLARE v_count NUMBER := 0; -- 학생수 v_stuno NUMBER := 0; -- 학번 SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB WHERE GRADE = :x; Rows Row Source Operation SORT AGGREGATE 1 TABLE ACCESS FULL STU_TAB Rows Row Source Operation SORT AGGREGATE 9996 TABLE ACCESS FULL STU_TAB -- 분포도좋은데이터나중에실행 VARIABLE x VARCHAR2(1) EXEC :x := A'; DECLARE v_count NUMBER := 0; -- 학생수 v_stuno NUMBER := 0; -- 학번 SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB WHERE GRADE = :x; 21

22 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M관계로테이블을생성하고이를활용하여 Peeking을살펴보자. 지금까지살펴본것처럼처음들어오는값의실행계획을가지고그이후의바인드변수는모두같은실행계획인것을볼수있었다. 이 Peeking을통해이전에는바인드변수를사용할때분포도를고려하지않고평균값을이용하는기존의최적화방법의한계를극복한걸로볼수있으나여전히비효율의기능을가지고있다. 지금까지살펴본것처럼가장이상적인방법은항상소프트파싱을하고또한분포도를고려한실행계획을세울수있는전략이되겠으나바인드변수 ( 소프트파싱 ) 와분포도를고려한실행계획은 Peeking 이전에는언제나상극이었다. 그렇다고 Peeking이도입되었으나이또한맨처음의리터럴값만살펴보고그이후에는맨처음세운실행계획을따라가므로완벽한것이아니다. 그렇다면현재까지나와있는자원을가지고위에서살펴본가장이상적인접근법을구현할수는없을까? 완벽하진않지만부분적으로이를극복할수있다. 그방법은가장분포도가나쁜값이들어올경우와분포도가좋은값이들어올경우로나누어쿼리를맨처음생성하면그이후에는항상최적화방법을가지고실행계획을작성할수있다. 22

23 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script : 분포도에따라최적의실행계획유도 -- 값의분포도에따라최적의실행계획유도하는저장형함수생성 CREATE OR REPLACE FUNCTION GET_DATA(p_grade VARCHAR2) RETURN VARCHAR2 AS v_count NUMBER := 0; -- 학생수 v_stuno NUMBER := 0; -- 학번 IF(p_grade = 'B') THEN ELSE SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB B_TYPE WHERE GRADE = p_grade; SELECT COUNT(*), MIN(STUNO) INTO v_count, v_stuno FROM STU_TAB OTHER_TYPE WHERE GRADE = p_grade; END IF; -- 저장형함수이용하여쿼리실행 FOR rec_stu IN (SELECT GRADE FROM STU_TAB) LOOP DBMS_OUTPUT.PUT_LINE(rec_stu.GRADE ' : ' GET_DATA(rec_stu.GRADE)); END LOOP; A : 1 명, 최소학번 10 B : 9996 명, 최소학번 50 C : 1 명, 최소학번 20 D : 1 명, 최소학번 30 F : 1 명, 최소학번 40 RETURN v_count ' 명 ', ' 최소학번 ' v_stuno; 23

24 3. 바인드변수의사용 Page 373 ~ 바인드변수조사 (Bind Variable Peeking) Peeking 예제 학점과학생테이블을 1:M 관계로테이블을생성하고이를활용하여 Peeking 을살펴보자. Script : 분포도에따라최적의실행계획유도 -- 분포도좋은컬럼이므로인덱스실행계획 SELECT COUNT(*), MIN(STUNO) FROM STU_TAB OTHER_TYPE WHERE GRADE = :b1; Rows Row Source Operation SORT AGGREGATE 4 TABLE ACCESS BY INDEX ROWID STU_TAB 4 INDEX RANGE SCAN STU_GRADE_INDX(object id ) -- 분포도나쁜컬럼이므로 Full Scan SELECT COUNT(*), MIN(STUNO) FROM STU_TAB B_TYPE WHERE GRADE = :b1; Rows Row Source Operation SORT AGGREGATE 9996 TABLE ACCESS FULL STU_TAB 24

25 4. 가능한한적게파싱하기 Page 402 ~ 파싱비용 일반적으로커서를사용할때개발자들은 CLOSE를신속하게하는경향이있다. 커서를제대로사용하는애플리케이션은세션별로데이터베이스에대한커서를한번만열고수차례에걸쳐이것을실행한다. 커서를제대로사용하지못하는애플리케이션은실행시마다커서를열어, 즉엄청난비용을들여데이터베이스를처리하는경향을보인다. 하지만오라클은또다시 OPEN 될것에대비하여캐시에저장한다. PL/SQL에서는 Close Cursor를하면닫는것처럼보이지만실제로는커서가열린상태로유지된다. 그이유는이커서가다시사용될것이라고생각하고이문을캐시에저장하는데이것이바로정적커서이다. 즉, 참조커서는커서를바로닫지만정적커서는열린상태로캐시에저장된다. 참조커서 & 정적커서 참조커서 : 커서의내용을실행부 ( END) 안에서사용하는구문 Ex) FOR rec_val IN (SELECT * FROM EMP) LOOP 정적커서 : 커서의내용을선언부 (DECLARE) 안에서사용하는구문 Ex) DECLARE CURSOR cur_val IS SELECT * FROM EMP FOR rec_val IN cur_val LOOP [ 로직 ] END LOOP 이를이용하여느슨한소프트파싱보다무파싱을하도록유도해야한다. 이를하기위해서는가급적참조커서보단정적커서를사용해서파싱을한번만하도록유도한다. 즉하드파싱보다는느슨한소프트파싱을, 느슨한소프트파싱보다는무파싱을하도록유도하자. 하드파싱 : 리터럴 ( 실행시마다변경이될수있는 ) 값을이용한쿼리 느슨한소프트파싱 : 바인드변수를사용한쿼리 무파싱 : 바인드변수역할을선언부에커서로선언하고이를변수로받아처리하는쿼리 25

26 4. 가능한한적게파싱하기 Page 402 ~ 파싱비용 DECLARE TYPE rc IS REF CURSOR; 하드파싱 l_cursor RC; FOR i IN LOOP OPEN l_cursor FOR 'SELECT X FROM EMP_3 WHERE X = ' TO_CHAR(i); CLOSE l_cursor; END LOOP; DECLARE TYPE rc IS REF CURSOR; 참조커서 l_cursor RC; ( 느슨한소프트파싱 ) FOR i IN LOOP OPEN l_cursor FOR 'SELECT X FROM EMP_3 WHERE X = :x' USING i; CLOSE l_cursor; END LOOP; 쿼리 5,000 번반복 5,000 번소프트파싱 OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 5000 call count cpu elapsed disk query current rows Parse Execute Fetch total DECLARE CURSOR c(p_input IN VARCHAR2) IS SELECT X FROM EMP_3 WHERE X = p_input; FOR i IN LOOP OPEN c(i); CLOSE c; END LOOP; 정적커서 ( 무파싱 ) 1 번파싱 call count cpu elapsed disk query current rows Parse Execute Fetch total

27 4. 가능한한적게파싱하기 Page 402 ~ PL/SQL 을사용한파스줄이기 지금까지본것처럼캐시에저장할수없는방법은지양하고캐시에저장가능한방법을사용해야한다. PL/SQL은오라클의 EXECUTE IMMEDIATE 또는 REF_CURSOR FOR 문을캐시에저장하지못한다. 가능한한암묵적이거나명시적인커서형태로정적 SQL을사용하라. 만약같은동적문을여러차례에걸쳐반복적으로수행해야하는경우는 EXECUTE IMMEDIATE 보다는 DBMS_SQL을사용하라. DBMS_SQL 대신에배열을사용하여, 즉다수의입력으로하나의동적문을실행하는방안을고려한다. 이렇게하면실행시간실행에극적인차이가생기며확장성이엄청나게제고된다. 왜냐하면, 필요한리소스의양이감소하고필요한래치의수가눈에띄게줄어들기때문이다. 참조커서가캐시에저장될수없는이유 PL/SQL이보통의커서를저장할수있는것처럼참조커서를캐시에저장할수있을것처럼보이지만실제로는그렇지않다. 이유는참조커서가동적으로열릴수있을뿐만아니라닫히기전에같은참조커서가여러차례열릴수있기때문이다. 그러므로커서에대한포인터역할을하는참조커서는캐시에저장될수없다. 27

28 4. 가능한한적게파싱하기 Page 402 ~ PL/SQL 을사용한파스줄이기 DBMS_SQL 사용예제 EXECUTE IMMEDIATE 은동적쿼리를실행할때한건마다파싱을하지만 DBMS_SQL 은한번만파싱을한다. DBMS_SQL 을사용한프로시저와 EXECUTE IMMEDIATE 를사용한프로시저를비교하면서파싱을살펴본다 패키지선언 CREATE OR REPLACE PACKAGE DYN_INSERT AS PROCEDURE DBMS_SQL_METHOD(p_tname IN VARCHAR2, p_value IN VARCHAR2); PROCEDURE EXEC_IMD_METHOD(p_tname IN VARCHAR2, p_value IN VARCHAR2); 프로시저실행 (DBMS_SQL_METHOD) DECLARE FOR i IN LOOP DYN_INSERT.DBMS_SQL_METHOD('EMP_3', TO_CHAR(i)); END LOOP; 프로시저실행 (EXEC_IMD EXEC_IMD_METHOD) _METHOD) DECLARE FOR i IN LOOP DYN_INSERT.EXEC_IMD_METHOD('EMP_3', TO_CHAR(i)); END LOOP; 패키지 Body 선언 CREATE OR REPLACE PACKAGE BODY DYN_INSERT AS g_last_tname VARCHAR2(30); -- 마지막테이블을기억하기위한변수 g_cursor NUMBER := DBMS_SQL.OPEN_CURSOR; -- DBMS_SQL_METHOD PROCEDURE DBMS_SQL_METHOD(p_tname IN VARCHAR2, p_value IN VARCHAR2) IS l_rows NUMBER; IF(g_last_tname <> p_tname OR g_last_tname IS NULL) THEN DBMS_SQL.PARSE(g_cursor, 'INSERT INTO ' p_tname ' (x) values (:x)', DBMS_SQL.NATIVE); g_last_tname := p_tname; END IF; DBMS_SQL.BIND_VARIABLE(g_cursor, ':x', p_value); l_rows := DBMS_SQL.EXECUTE(g_cursor); END DBMS_SQL_METHOD; -- EXEC_IMD_METHOD PROCEDURE EXEC_IMD_METHOD(p_tname IN VARCHAR2, p_value IN VARCHAR2) IS EXECUTE IMMEDIATE 'INSERT INTO ' p_tname '(x) values (:x)' USING p_value; END EXEC_IMD_METHOD; 28

29 4. 가능한한적게파싱하기 Page 402 ~ PL/SQL 을사용한파스줄이기 DBMS_SQL 사용예제 TKPROF 보고서비교 프로시저실행 (DBMS_SQL_METHOD) DECLARE FOR i IN LOOP DYN_INSERT.DBMS_SQL_METHOD('EMP_3', TO_CHAR(i)); END LOOP; 프로시저실행 (EXEC_IMD_METHOD) DECLARE FOR i IN LOOP DYN_INSERT.EXEC_IMD_METHOD('EMP_3', TO_CHAR(i)); END LOOP; INSERT INTO EMP_3 (x) values (:x) call count cpu elapsed disk query current rows Parse Execute Fetch total INSERT INTO EMP_3(x) values (:x) call count cpu elapsed disk query current rows Parse Execute Fetch total

30 5. 요약 Page 402 ~ 421 오라클은 DML 구문에서는파싱을시도하지만 DDL 에서는파싱을시도하지않는다. DML 에서는일관된읽기메커니즘을위해현재모드로바꾸고작업을수행한다. DDL 구문이제출되면내부적으로대략 50 개정도의 SQL 작업이일어난다. 바인드변수를사용하는목적 바인드변수를사용하지않으면최적화하는데많은시간을허비함으로써시스템이제대로동작하지않는다. 인용부호를제대로표현하기수월하다. SQL Injection 해킹공격에대응할수있다. 바인드변수를효율적으로사용하는방법 바인드변수를사용하게되면분포도를고려한실행계획을작성할수없다. 그러므로 Peeking 기법을활용하라. 파싱을줄이기위해캐시에저장할수없는참조커서를사용하지말고정적커서를사용하라. EXECUTE IMMEDIATE 보다는 DBMS_SQL 을사용하라. 30

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

Microsoft Word - SQL튜닝_실습교재_.doc

Microsoft Word - SQL튜닝_실습교재_.doc * 실습환경 * 1. 오라클데이터베이스의튜닝실습을하기위해서는기본적인테이블과데이터가필요합니다. 다음과같은절차에의해환경설정을하십시오. 1) 강사가제공하는 Export 된파일 (scott.dmp) 을자신의 ORACLE 경로에저장하십시오. [C: ] cd C: ORACLE ORA92 BIN [C: ] dir scott.dmp scott.dmp 2) SYSTEM 사용자로접속하여

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

SQL Tuning Business Development DB

SQL Tuning Business Development DB SQL Tuning Business Development DB Oracle Optimizer 4.1 Optimizer SQL SQL.. SQL Optimizer :.. Rule-Based Optimization (RBO), Cost-Based Optimization (CBO) SQL Optimizer SQL Query Parser Dictionary Rule-Based

More information

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따 Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------

More information

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc 특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력

More information

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL

More information

Jerry Held

Jerry Held ,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan I/O Index Scan ROWID I/O Fast Full Index Scan scan scan scan I/O scan scan Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan scan I/O scan Index Scan ROWID scan I/O Fast Full Index Scan scan scan I/O Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 4 장 JOIN 을배웁니다 1 2 1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형

DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형 DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형 원리를알아야답이보인다!! SQL 개발자 (Developer) 데이터모델을통해업무를이해하고, SQL 을정확히구사하는능력 DB 성능고도화전문가양성 SQL 전문가 (Professional) 성능을고려한고급 SQL 작성능력 DB 성능고도화핵심원리실습문제 declare l_ 수납금액 number; begin for

More information

Microsoft Word - 04_EXCEPTION.doc

Microsoft Word - 04_EXCEPTION.doc ORACLE EXCEPTION INTRODUCTION PLSQL 블록이 PARSE 되는동안에발생되는에러를컴파일에러 (Compilation Error) 라고부르며, PLSQL 블록이실행되는동안에발생되는에러를런타임에러 (Run-Time Error) 라고부르는데, 이런타임에러를오라클에서는예외 (Exception) 라고부른다. 오라클의예외 (Exception) 는크게두가지로구분된다.

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)

More information

90

90 89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r -------------------------------------------------------------------- -- 1. : ts_cre_bonsa.sql -- 2. :

More information

歯PLSQL10.PDF

歯PLSQL10.PDF 10 - SQL*Pl u s Pl / SQL - SQL*P lus 10-1 1 0.1 PL/ SQL SQL*Pl u s. SQL*P lus 10-2 1 0.2 S QL* Pl u s PL/ S QL SQL*Pl u s, Pl / SQL. - PL/ SQL (i npu t ), (s t or e ), (r un). - PL/ SQL s cr i pt,,. -

More information

Microsoft Word - 05_SUBPROGRAM.doc

Microsoft Word - 05_SUBPROGRAM.doc ORACLE SUBPROGRAM INTRODUCTION PLSQL 은오라클에서제공하는프로그래밍언어이다. 이는데이터베이스언어인 SQL 과함께효과적으로데이터베이스에접근할수있는방법을제공하고있다. Procedural LanguageSQL 의약자에서볼수있듯이절차적인기능을기본적으로가지는프로그래밍언어이다. PLSQL 은기본적으로블록 (BLOCK) 구조를가지고있다. 블록의기본적인구성은선언부

More information

6장. SQL

6장. SQL 학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블

More information

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

Microsoft PowerPoint - Oracle Data Access Pattern.ppt Special Key Note Oracle Data Access Pattern ( 주 ) 오픈메이드컨설팅 오동규수석컨설턴트 1 What is Data Access Pattern? > 데이터를 I/O 하는방식 Index Scan Full Table Scan Rowid 2 Why is The Pattern Important? >SQL 의성능을좌지우지함. >SQL

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

ESQL/C

ESQL/C 20 장. PL/SQL 커서 주요내용 암시적커서 명시적커서선언 명시적커서열기및닫기 명시적커서에서데이터 Fetch 커서의속성 (%ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND) 커서 FOR 루프 PL/SQL 의커서 (Cursor) 커서 SQL 문과프로그램실행과정에서결과를저장할수있는오라클메모리구조 ( 개별 SQL 작업영역 ) 암시적커서 (Implicit

More information

Microsoft Word - PLSQL.doc

Microsoft Word - PLSQL.doc PL/SQL 2008 DB system and programming 보충자료 PL/SQL의실행절 BEGIN 절에서의몇가지규칙 - 실행문은여러라인에걸쳐사용할수있다. - 변수명의명명규칙은오라클의일반적인명명규칙과동일하다. PL/SQL 블록내에서 SQL 문을사용할때에는컬럼명과같은변수명은피해야한다. - SQL에서와마찬가지로날짜와문자는홑따옴표 ( ) 를사용하여인용하여야한다.

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý 5 중 1 2007-06-12 오후 5:52 Home Login Register SQL Query SQL Tuning Oracle Administration Tools References Boards SoQooL? 쏘쿨 SoQooL) 이란? Q&A Tips Lectures Function Lectures Oracle Spatial Tips Scripts SQL

More information

ePapyrus PDF Document

ePapyrus PDF Document Goodus 기술노트 [38 회 ] Author 윤병길, 이은정 Creation Date 2009-02-27 Last Updated Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자변경자 ( 작성자 ) 주요내용 1 2009-02-27 윤병길, 이은정문서최초작성 Contents

More information

Microsoft Word - 03_SQL_CURSOR.doc

Microsoft Word - 03_SQL_CURSOR.doc SQL Cursor SQL 커서소개오라클서버에서는 SQL 문을실행할때마다처리 (Parse, Execution) 를위한메모리공간, 즉 SQL 커서를사용하게된다. 이메모리공간은 Private SQL Area 라고도불리우며, 오라클의작업환경이 Dedicated Server 환경이냐또는 MTS(Multi- Threaded Server) 환경이냐에따라서버내에위치되는곳이다르다.

More information

PowerPoint Template

PowerPoint Template 설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

슬라이드 제목 없음

슬라이드 제목 없음 4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 6 장. DML 을배웁니다 1 - SQL 명령어들 DML (Data Manipulation Language) : INSERT( 입력 ), UPDATE( 변경 ), DELETE( 삭제 ), MERGE( 병합 ) DDL (Data Definition Language) : CREATE ( 생성 ), ALTER

More information

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드] MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS보다가격이매우저렴한편이고,

More information

FlashBackt.ppt

FlashBackt.ppt 1. Flashback 목적 Flashback 이란? 사용자실수에의한손상된데이터를 Database 의크기와상관없이복구를할수있는기능이다. 이 Flashback 기능은일반적인복구에서우려되는데이터베이스의크기를걱정하지않아도된다. 보통의사용자실수는커다란시스템장애가수반되며, 이를복구하기위해서는많은자원과시간이필요하다. 하지만 9i 에서지원되느 flashback query

More information

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT 3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

슬라이드 제목 없음

슬라이드 제목 없음 MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing 은성능에좋

1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing 은성능에좋 Hard Parsing 에따른성능문제와효과적인 SQL 작성법 SpeedGate Consulting 김철각 1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing

More information

기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved

기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved 기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date 2010-06-01 Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved Contents 1. SQL PLAN MANAGEMENT OVERVIEW... 3 1.1. INTRODUCTION...

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양핚예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 10 장 view 를배웁니다 1 - View 란가상의테이블이다! 2 1. 단순 View (Simple View) SCOTT>CONN / AS SYSDBA; SYS>GRANT CREATE VIEW TO scott ; CREATE [OR REPLACE] [ FORCE NOFORCE] VIEW view

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 5.3.3.93 Patch Notes Table of Contents BUG-27950 ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를 생성하지못한다. 3 BUG-38105 PASSWORD_LIFE_TIME 경과후유예기간 (PASSWORD_GRACE_TIME) 내에 접속을시도할경우알림메시지를발생해야한다.

More information

PostgreSQL 2 Uniersity of California at Berkeley ( ) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1

PostgreSQL 2  Uniersity of California at Berkeley ( ) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1 ERwin 과 PostgreSQL 연동하기 인하대학교지리정보공학과데이터베이스실습 PostgreSQL 2 http://www.postgresql.org/ Uniersity of California at Berkeley (1977-1985) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1996 년부터

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

untitled

untitled PowerBuilder 連 Microsoft SQL Server database PB10.0 PB9.0 若 Microsoft SQL Server 料 database Profile MSS 料 (Microsoft SQL Server database interface) 行了 PB10.0 了 Sybase 不 Microsoft 料 了 SQL Server 料 PB10.0

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 3 장 SQL 복수행함수 ( 그룹함수 ) 를배웁니다 1 함수이름 의 미 사용예 COUNT 입력되는데이터들의건수를출력 COUNT(sal) SUM 입력되는데이터들의합계값을출력 SUM(sal) AVG 입력되는데이터들의평균값을출력 AVG(sal) MAX 입력되는데이터들중최고값을출력 MAX(sal) MIN

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

뇌를자극하는 SQL Server 2012 (1 권 )   1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Microsoft 2. (2) 3. 처리속도가빠르며, 별도의비용이들지않는다. 4. (4), (5) 5. (1), (4) 6. SQL Server 2005, SQL Server 2008, SQL Server 2008

More information

ORACLE-SQL

ORACLE-SQL ORACLE-SQL SELECT 문 2014-04-12 Blog.ksh123jjang.me 내용 SELECT문이란?... 2 SLELECT문사용하기... 3 모든열선택... 4 특정열검색... 5 SQL문작성방법... 6 열머리글기본값... 7 산술식... 8 NULL... 9 열 alias... 10 연결연산자... 11 대체인용연산자 (q)... 12 중복행제거...

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.3.1.10.6 Patch Notes 목차 BUG-45060 offline replication start 와 replication drop 을동시에수행하는경우, replication start 가완료되지않았으면 replication drop 을수행하지못하도록수정하였습니다... 4 BUG-46193 메모리테이블의이중화병렬 sync

More information

슬라이드 1

슬라이드 1 17.1 데이터베이스트리거 17.2 DML 트리거 17.3 DML 트리거작성 17.4 DML 트리거관리 17.5 INSTEAD OF 트리거 17.6 NON-DML 트리거 17.1 데이터베이스트리거 데이터베이스트리거 (database trigger) 테이블에어떤조작이가해졌을때에미리지정해놓은처리를자동으로실행시키는블록 PL/SQL 블록으로작성, 오라클데이터베이스에저장

More information

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2 5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

SQL Tuning Business Development DB SQL - -SQL -SQL

SQL Tuning Business Development DB SQL - -SQL -SQL 0:00-0:50 SQL :00-2:00 2:00-3:30 3:30-4:20 SQL 4:30-5:20 5:30-7:20 SQL Tuning Business Development DB SQL - -SQL -SQL SQL () H/W( ) CPU, Memory, Network ( ) SQL I/O ( ) SQL (2) ( ) ( ) SQL SQL SQL SQL

More information

Oracle Database 10g: Self-Managing Database DB TSC

Oracle Database 10g: Self-Managing Database DB TSC Oracle Database 10g: Self-Managing Database DB TSC Agenda Overview System Resource Application & SQL Storage Space Backup & Recovery ½ Cost ? 6% 12 % 6% 6% 55% : IOUG 2001 DBA Survey ? 6% & 12 % 6% 6%

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

MS-SQL SERVER 대비 기능

MS-SQL SERVER 대비 기능 Business! ORACLE MS - SQL ORACLE MS - SQL Clustering A-Z A-F G-L M-R S-Z T-Z Microsoft EE : Works for benchmarks only CREATE VIEW Customers AS SELECT * FROM Server1.TableOwner.Customers_33 UNION ALL SELECT

More information

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용 SPA(SQL Performance Analyze) 를이용한통계정보 수집 엑셈컨설팅본부 /DB 컨설팅팀오경렬 1. SPA 란? SPA(SQL Performance Analyze) 는 RAT(Real Application Testing) 서비스의옵션중에하나 이다. 본문서는 SPA 를이용해좀더안정적으로통계정보를생성하는 Process 에대해다룬다. 2. 통계정보와

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담 대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담일것이다. 말그대로대량의데이터를변경해야하는작업의특성상 SQL Tuning 만으로성능을개선할여지는많지않을뿐더러개선을한다하더라도극적인효과를기대하기는어렵다.

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

make life game.doc

make life game.doc Database design guide ( 테이블, 컬럼정의방법 ) 2004 년 11 월 18 일 Sunny Kwak sunnykwak@hanmail.net sunnykwak.egloos.com Copyrights 2004 Sunny Kwak. All rights reserved. Other disclaimers The names of actual companies

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770> 제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요

More information

제목 레이아웃

제목 레이아웃 웹해킹이라고무시하는것들보소 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM SQL Injection 끝나지않은위협 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM Who am I 정도원 aka rubiya Penetration tester Web application bughuter Pwned 20+ wargame @kr_rubiya

More information

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx 05-01 SQL의소개 SQL을이용한데이터정의 SQL을이용한데이터조작 뷰 삽입 SQL 학습목표 SQL의역할을이해하고, 이를기능별로분류해본다. SQL의데이터정의기능을예제를통해익힌다. SQL의데이터조작기능을예제를통해익힌다. 뷰의개념과장점을이해한다. 삽입 SQL의역할을이해한다. 2 01 SQL 의소개 SQL (Structured Query Language) 의미

More information

초보자를 위한 분산 캐시 활용 전략

초보자를 위한 분산 캐시 활용 전략 초보자를위한분산캐시활용전략 강대명 charsyam@naver.com 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 그러나현실은? 서비스에필요한것은? 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 적절한기능 서비스안정성 트위터에매일고래만보이면? 트위터에매일고래만보이면?

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) SECTION 03 데이터조작어 (DML) 3-1 데이터검색 (SELECT)

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

Microsoft PowerPoint Python-DB

Microsoft PowerPoint Python-DB 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 데이터베이스 SQLite 데이터베이스 파이썬과데이터베이스연결 순천향대학교컴퓨터공학과 2 데이터베이스 (Database) 소개 데이터베이스 DBMS (DataBase Management System) 이라고도함 대용량의데이터를매우효율적으로처리하고저장하는기술 SQLite, 오라클, MySQL 등이있음

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 ) SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 ) 이많기때문에, 실행계획생성시 SQL 의 Cost 를잘못계산하여최적의실행계획을세우지못하는경우가발생한다.

More information

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

예제소스는  에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US A.4 마당서점데이터베이스생성 1 마당서점의데이터베이스 Madang을생성하기위해윈도우의 [ 시작 ]-[ 모든프로그램 ]- [Microsoft SQL Server 2012]-[SQL Server Management Studio] 를선택한다. 인증을 [Windows 인증 ] 으로선택한후 < 연결 > 을클릭한다. 2 1 3 서버이름 MADANG_DB\SQLEXPRESS

More information

最即時的Sybase ASE Server資料庫診斷工具

最即時的Sybase ASE Server資料庫診斷工具 TOAD 9.5 Toad Oracle 料 SQL 料 行 理 SQLprofile Quest Software 了 Oracle -Toad Tools of Oracle Application Developers Toad 了 DBA DBA 理 易 度 Toad 料 SQL PL/SQL Toad Oracle PL/SQL Toad Schema Browser Schema Browser

More information