본문 바로가기

끄적/DB6

[오라클] 데드락 확인 및 kill하기 1. 데드락 - 교착상태 일 중에 교착상태에 대한 이해도가 떨어져 고생 좀 했다. 간단히 이해하면 2개의 트랜잭션이 하나의 테이블에 같은 정보로 DML 작업을 할때에 commit 되지 않은 상태로 만나버리면 어느것도 완료되지 못하고 교착상태에 빠진다 그니까 결국 하나의 테이블에 대해 2명이 서로 작업을 시작했는데, 만일 오토커밋이 아니라 가정하고 한 트랜잭션이 완료되지 못한 상태로 다른 곳에서 들어와 버리면 이게 묶여 버린다. 어지간하면 이런 일이 발생하는 일이 없지만... 내 경우에 추측되는 것은 1. 내가 너무 오래 걸리는 작업을 강제로 종료하면서 이게 남아있어 버렸다. 2. 진짜 다른 사람이 나랑 같은 데이터에 대해 같은 테이블로 작업을 하고 있는데 같이 사이 좋게 묶였다. 이 2개인데.. 내 경우.. 2022. 5. 20.
[DBeaver] 오라클11g 디비버에 연결하기 보호되어 있는 글 입니다. 2022. 2. 8.
[Oracle] OVER() 와 PARTITION BY 사용하기 @ OVER => GROUP BY, ORDER BY를 이용한 서브쿼리를 개선하기 위해 나온 함수 라고들 한다. 분명히 이 녀석을 사용할 때 특히, group by 없이 집계 함수(sum,count, min....)를 사용하는 것은 굉장히 큰 이점이다. 1. group by 사용에 따르는 제한적인 부분이나(뱉는 칼럼 수와 그룹화 시킬 수의 일치라던가...), 2.복잡한 서브쿼리를 자제할 수 있기 때문에 해당 구문을 사용한다. @ PARTITION BY => OVER() 함수와 사용했을 때, Group By의 역할을 수행하는 녀석 GROUP BY 없이 OVER()를 통해 집계 함수를 사용하는건 분명 큰 장점이지만, 대부분 집계 함수는 GROUP BY와 많이 사용하게 된다. 때문에, 해당 함수를 통해 특정 칼.. 2021. 10. 30.
[Oracle] No Data Found 이슈 해결하기 21.09.23 @ NO DATA FOUND Function을 쿼리문으로 녹여야만 하는 경우에 간혹 No Data Found를 Exception 처리해서 만들어 놓은 함수가 있다. 함수나 프로시져가 아닌 이상 해당 구문은 사용하지 못한다... 물론 NVL이나 Decode를 사용해서 Null 값을 대체하거나, Decode 안에 서브쿼리를 넣어서 해결할 수도 있지만, 아예 Data가 조회되지 않는 것은 Null 이 아닌데다, Decode로 서브쿼리 열심히 만들면 열심히 만든만큼 지저분하다.. 물론 이것도 개인의 능력차이겠지만 나름의 깔끔한 방법을 찾았다. @DUAL TABLE로 해결하기 SELECT * FROM DEPARTMENTS WHERE ROWNUM 2021. 9. 24.
[Oracle] SQL로 간단한 Function 만들기 SQL을 이용하여 기본적인 Function을 만드는 법이다. 우선 기본적으로 사용하는 법은 아래와 같다. @ Function 만들기 create or replace function test_department_name(human_id in number) return varchar2 is test_name varchar2(30); begin select max(department_name) into test_name from departments where manager_id = (select max(manager_id) from employees where manager_id = human_id); return test_name; end; CREATE OR REPLACE FUNCTION Table을 생성.. 2021. 9. 9.
[Oracle] Oracle 11.g 시작하기(hr 계정 해금) / Group By 2021.09.06 참 멍청한 일이다... Oracle 시작하는 법을 까먹다니;;; 하기야 매번 코딩만 했지 설정하는건 초기니까... 그래두 좀 너무한거 아닌ㄱ..... @ Oracle hr 계정 활성화 우선 CMD 창에서 sqlplus 란 명령어로 시작을 해도 되고, 그냥 sql 커맨드 라인을 바로 켜도된다. 첫번째로 system 계정으로 들어간다. 해당 계정의 password는 내가 오라클을 설치할 때 설정한 비밀번호이다. "alter user hr account unlock;" 명령어는 hr 계정의 lock을 풀어준다. 아래 사진을 보면 알지만 초기에는 lock 되었다면서 접속되지 않는다. "alter user hr identified by hr" 명령어는 hr 계정의 password를 "hr"로 .. 2021. 9. 7.