반응형 IT/Database112 [Oracle / Tibero] Lock 걸린 테이블 확인 불특정한 다양한 이유로 Database는 Lock이 걸릴수 있고, 만약 그 Lock 이 DeadLock일 경우에는 멈춰버리는 상황이 생겨 최악으로는 프로세스를 내렸다가 다시 실행해야하는 상황이 생길수도 있다. 다시 실행하면 그만이 아닌 어떤 쿼리에서 어떤 이유로 , 왜 락이 걸렸는지 등등 확인해봐야한다. 아래 쿼리를 참고 하면 된다. 락 걸린 테이블 확인 select * from v$locked_object vo , dba_objects do where vo.object_id = do.object_id; 장기실행 또는 락걸린 SQL 확인 select distinct vo.session_id ,vss.serial# ,do.object_name ,vss.machine ,vss.terminal ,vss.pro.. 2023. 11. 26. [Oracle] 인덱스 힌트/ 옵티마이저 힌트 사용방법 (주석, 튜닝) 기본적으로 쿼리를 실행하면 DBMS 내의 옵티마이저가 여러개의 실행 계획을 만들고 그 안에서 제일 비용이 적게 소요되는 실행계획을 선택하여 실행이 된다. 하지만 옵티마이저를 믿지 못하거나 특정 방법으로 실행계획을 하고 싶을 시에는 옵티마이저 힌트를 사용하면 된다. 기본적으로 사용법은 아래와 같다. 위에 주석 부분에 사용을 하고 자주 사용되는 값들은 아래와 같다. 1. OPTIMIZER_MODE 지정가능 값 /*+ ALL_ROWS */ 목적 : Best Throughput 용 도 : 전체 RESOURCE 소비를 최소화시키기 위한 힌트. Cost-Based 접근방식으로 ALL_ROWS는 Full Table Scan을 선호하며 CBO(Cost Based Optimization)는 default로 ALL_ROW.. 2023. 11. 25. INDEX SCAN종류 Database 에서 query사용시 인덱스에 대해서 알아볼 것이다. INDEX RANGE SCAN B*Tree인덱스의 가장 일반적이고 정상적인 형태이고 필요한 범위만 스캔 INDEX FULL SCAN 수직탐색 없이 리프블록 처음부터 끝까지 수평적으로 탐색하는 방식 최적의 인덱스가 없을 경우 사용한다. INDEX UNIQUE SCAN 수직적 탐색만으로 데이터를 찾는 방식 등치(=)조건으로 탐색하는 경우에 작동한다. INDEX SKIP SCAN 인덱스 선두컬럼을 조건절에 사용하지 않으면 옵티마이저는 기본적으로 TABLE FULL SCAN을 선택한다. 하지만 TABLE FULL SCAN보다 I/O를줄이거나 정렬된 결과를 쉽게 얻을수 있다면 INDEX FULL SCAN사용 한다. INDEX FAST FULL .. 2023. 11. 24. INNER JOIN, NATURAL JOIN 조인기법은 다양하게 있으나 비슷하게 동작을 하는(조건 부 상이) Inner Join과 Natural Join 에 대해서 다뤄볼 것이다. 사용법 및 설명 Inner Join select * from TableA Inner Join TableB On TableA.id = TableB.id; 위와 같이 사용이 되며 조인 조건을 On 이하절에 기술해줘야한다. Natural Join select * from TableA Natural Join TableB 이렇게 사용하고 조인 조건이 없는데, 조인조건은 동일한 이름의 컬럼들을 자동 인식하여 조인처리 한다. 이름과 형식이 같으면 조인 조건이 이뤄지므로, 다른 용도로 사용되는 컬럼은 주의가 필요하다. 출력 순서 또한 아스타 * 를 사용할 경우에 Natural 기준이.. 2023. 11. 23. 순수 관계 연산자 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자 종류는 총 4가지 이며 각각 아래 설명과 같다. 연산자 특징 Select - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬 - 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함 - 연산자의 기호는 그리스 문자 시그마(σ)를 사용 Project - 주어진 릴레이션에서 속성 List에 제시된 Attribute만을 추출하는 연산 - 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함 - 연산자의 기호는 그리스 문자 파이(π)를 사용 Join - 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산.. 2023. 11. 22. 단일행 서브쿼리(Single Row SubQuery) / 다중행 서브쿼리(Multi Row SubQuery) / 다중 칼럼 서브쿼리(Multi Column SubQuery) / 연관 서브쿼리(Correlated Subquery) 서브쿼리는 쿼리 내에 쿼리가 또 존재한다고 생각하면 편하다. 이름이 각각 있는데 하나씩 살펴보도록 하면 단일행 서브쿼리(Single Row SubQuery) 리턴값이 하나 이하인 쿼리를 의미하며 단일행 비교연산자 ( =, , 2023. 11. 21. [Oracle] (+) Join 의미 데이터베이스 조인에 대한 내용은 아래 참고 포스팅 참고 바란다. Oracle에서 조인을 할 경우 ANSI(SQL 표준) 문법으로는 SELECT * FROM A LEFT OUTER JOIN B ON A.id= B.id; 이런식으로도 사용이 되지만 좀더 편하게는 아래와 같이 사용이 될수도 있다. SELECT * FROM A, B WHERE A.id = B.id (+) ; 여기서 (+) 가 없다면 Inner Join 이 되고 (+) 가 붙는다면 안붙은 테이블을 기준으로 (+) 붙은것들을 조인 하는 의미이다. SELECT * FROM A, B WHERE A.id = B.id (+) AND B.name='1' (+) AND B.addr='seoul'; 이렇게 될 경우엔 SELECT * FROM A LEFT OUT.. 2023. 11. 20. [Oracle] savepoint 데이터베이스를 공부하다보면 Commit, Rollback 이랑 함께 나오는 단어가 있는데 savepoint이다. 게임에서 시점을 저장하는것과 비슷한 개념으로 생각하면 된다. 간단하게 예제로 바로 알아보면 이해가 갈것이다. 1. Insert into table values ('1'); 2. SAVEPOINT save1; 3. Insert into table values ('2'); 4. SAVEPOINT save2; 5. Delete from table; 6. Rollback to save1; 흐름대로 보면 1번 1 을 넣는다. 2번 save1이라는 이름으로 저장한다. 3번 2를 넣는다. 4번 save2라는 이름으로 저장한다. 5번 모든 데이터를 삭제한다. 6번 save1지점으로 돌아간다. 이렇게 되면 결.. 2023. 11. 11. 정규화 (1,2,3차 정규화 / 정규형) (Normal Form) 데이터베이스를 하게 되면 정규화 라는 단어를 접하게 된다. 특정 조건에 맞추어 어떠한 형태를 해두는것이 정규화인데, 조건에 만족이 되어있다면 정규형이고, 다음차 정규화 대상이라고 표현한다. 데이터베이스에서는 1-5차 정규화가 존재하며 가장 많이 쓰이는 1-3 차 정규화에 대해 다뤄볼 것이다. 먼저 예시를 위해 아래 처럼 테이블이 존재한다고 가정하자. 학번(기본키) 이름 과목번호 과목 성적 A0001 홍길동 S1,S2 수학,과학 80,90 A0002 이순신 S3 영어 70 먼저 1차 정규화는 테이블의 컬럼이 원자값을 갖도록, 한개의 값만 갖도록 하게 하는것이다. 지금 위 표에서 과목과 성적에 홍길동 학생이 두개의 값이 있다. 예시를 1차 정규화를 적용시켜보겠다. 1차 정규화 결과 (모든 값은 원자값으로 구.. 2023. 11. 5. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음 반응형