목록쿼리 (13)
말랑말랑제리스타일
오라클 DB를 사용하다 보면 간혹 대량의 데이터를 한 번에 INSERT 한 이후 속도가 저하되는 경우가 발생합니다. 다양한 이유가 있겠지만 SQL문이 아무 이상이 없고 INDEX도 올바른데 이런 현상이 나타나는 경우 테이블 ANALYZE 기능을 이용해볼 수 있습니다. 오라클에서 TABLE ANALYZE로 속도를 향상시킬 수 있는 경우 오라클에서 TABLE ANALYZE를 통해 속도를 향상시킬 수 있는 경우를 확인해보는 방법은 다음과 같습니다. 1. COUNT를 이용해 해당 테이블의 전체 ROW 수를 확인해봅니다. SELECT COUNT(*) FROM 테이블명 2. DBA_TABLES 테이블에서 해당 테이블의 데이터를 조회해봅니다. SELECT * FROM DBA_TABLES WHERE TABLE_NAME..
오라클 SQL을 사용하다 보면 종종 따로 테이블에 없는 숫자를 출력하거나 조회해야 되는 경우가 있죠. 아래 쿼리로 오라클에서 1부터 10까지의 숫자를 출력할 수 있습니다. 오라클 1부터 10까지 출력하는 쿼리 SELECT LEVEL AS NUM FROM DUAL CONNECT BY LEVEL
ORACLE 함수 중 SUBSTR을 이용해서 문자열을 자르는 방법은 크게 2가지가 있고 세분화하면 4가지가 있을 수 있는데요. 이 방법들을 한번 알아보겠습니다. ORACLE SUBSTR 사용법 SUBSTR은 기본적으로 2개 또는 3개의 매개변수를 사용할 수 있습니다. SUBSTR(문자열, 시작할 위치, 자를 개수) 이런 방식으로 사용이 가능한데요. 여기서 자를 개수를 비우고 2개의 매개 변수만 사용하면 자동으로 시작 위치부터 끝까지 문자열을 자르게 됩니다. SELECT SUBSTR('ABCDEF',3,2) FROM DUAL; SELECT SUBSTR('ABCDEF',3) FROM DUAL; 이런 식으로 테스트해보면 첫 번째 ORACLE 쿼리의 결과는 3번째 글자부터 2개의 글자를 잘라서 'CD'가 나오고..
Oracle에서 Start With, Connect By Prior 구문으로 계층형 쿼리를 간단하게 만들 수 있습니다 계층형 쿼리가 뭐냐?? 트리 형태의 구조를 쿼리 즉 Oracle SQL로 나타낸거죠 일단 계층형 쿼리를 사용할 수 있는 간단한 테이블을 만들어줍니다 이런 형태의 테이블을 만들거고 Material에는 자신의 이름, Parent_mat에는 부모 노드 즉 상위 명칭이 들어갑니다 CREATE TABLE TREE_TAB_TMP ( MATERIAL VARCHAR2(10) PRIMARY KEY, PARENT_MAT VARCHAR2(10) ); INSERT INTO TREE_TAB_TMP VALUES ('M1',NULL); INSERT INTO TREE_TAB_TMP VALUES ('M2','M1');..
DCL 구문 즉 , Data Control Language 중 가장 대표적인 Oracle 구문이 바로 Grant, Revoke로 권하는 주거나 빼는 구문인데요 특정 직무 담당자가 아닌 이상 자주 쓰는건 또 아니다보니 헷갈리죠 근데 또 막상 써보면 Grant 구문으로 Oracle 테이블 권한 주는건 간단합니다 GRANT 권한 ON 테이블명 TO 유저명 으로 유저에게 테이블 권한을 부여할 수 있는데요 여기서 권한에는 SELECT,DELETE 등 권한을 줄 구문이 들어가고 테이블 명과 유저명은 말안해도 알겠죠 GRANT SELECT,DELETE,INSERT,UPDATE ON TAB1 TO USER1 좀 더 바로 쓸 수 있는 예시 Oracle SQL로 표현하면 위와 같겠죠 SQL 실행시키거나 Oracle 프로시..
가끔 SQL문을 쓰다가 새로운 기능을 사용하는 경우가 적지않아 있는데요 특히 Oracle 12 버전에서만 지원하거나 그런 경우에 버전을 확인하게 되죠 이런 경우 간단하게 Oracle 버전을 쿼리로 조회 가능합니다 SELECT * FROM V$VERSION; 이게 바로 Oracle 버전 조회하는 쿼리입니다
Oracle에는 신기한 기능들이 많습니다 그게 Oracle이 바로 업계 1위의 자리를 유지하는 원동력이죠 기본적으로 Drop한 테이블은 Drop이 DDL이라 Auto Commit에다 복구가 불가능한데요 얼마전 테이블 작업을 하다가 테이블을 날려먹었습니다... 기어이 사고를... 쳤다고 생각한 순간 Flashback이 떠올랐고 쥐도새도 모르게 제가 Drop한 테이블을 복구했죠 물론 삭제와 생성을 반복한 경우 복구가 어려운데요 그렇지 않고 Drop한 이후 어??!!!하는 순간에는 간편하게 Oracle의 Flashback 기능으로 복구가 가능합니다 만약 Drop만 진행했다면 FLASHBACK TABLE 삭제한테이블명 TO BEFORE DROP; 구문으로 원래 테이블 명으로 복구가 가능하고 만약 같은 이름으로 ..
오라클 테이블을 수정하거나 프로시저를 깨진 채로 저장한 경우 컴파일이 안된채로 깨져있는데요 이런 경우 토드나 오라클 DB 툴을 이용하면 볼수는 있는데 간혹 다수로 리스트 쫙 뽑아서 보고싶을때나 다른 테이블이랑 엮어서 보고싶을때 조회 쿼리를 이용해서 깨진 프로시저를 한번에 볼 수 있습니다 SELECT * FROM ALL_OBJECTS WHERE OWNER = '유저명' AND STATUS = 'INVALID' 바로 이 ALL_OBJECT 테이블에서 STATUS를 INVALID로 놓고 조회하면 깨진 프로시저, 펑션 등이 쫙 나오는데 DBA 권한이 있어야 조회 가능한 테이블이고 전 유저에 대해 조회하기 때문에 유저명을 OWNER에 넣고 조회해야 퍼포먼스가 나올 수 있다는 점을 참고해서 쓰시길 바랍니다 깨진 프..