RollBack 중인지 확인하고 싶을 때(오라클)

대용량 테이블 및 데이터를 다루다 보면 많은 양의 Insert, Delete, Update를 한 후, Rollback을 해야하는 경우가 있습니다. 이 때, 롤백명령을 한 후 이게 정말 롤백이 되고 있나 싶을 정도로 오랫동안 안 끊기고 있는 경우가 있습니다. 그럴 때 롤백이 되고 있는지를 확인하고 싶을 때 사용하는 SQL을 하나 소개합니다. 먼저, 동작시킨 sql_id 의 값은 알아야 합니다. 다음을… Read More »

통계정보 재생성방법 (오라클)

통계정보를 수집하려면 통계정보 재생성을 해주어야 겠지요. 통계정보 재생성을 해줄 때 일반 테이블과 파티션테이블과 통계정보 수집하는 명령어가 조금 차이가 있습니다. 아래 내용을 보시면서 그 차이점과 수집하는 방법을 알아보도록 합시다. 먼저, 일반테이블은 아래와 같습니다. 다음은 파티셔닝 된 테이블의 통계정보 재생성을 알아보도록 합시다. 자, 위와같이 명령어를 돌려주시면 통계정보가 수집됩니다. 단, 통계정보를 수집할 권한이 있어야 겠지요. 없으시면 있는 분한테… Read More »

수집된 통계정보 확인(인덱스 기준 – 오라클)

이전에 통계정보 확인은 테이블에 대한 건수가 얼마나 있는지를 알아봤다면, 이번에는 인덱스를 기준으로 살펴보도록 하겠습니다. ALL_IND_STATISTICS 에서도 같은 정보확인이 가능합니다. 알아보는 SQL은 아래와 같습니다. 새로 만든 테이블인 경우, 통계정보에 나타나지 않거나 데이터건수가 존재하지만 0으로 표현될 경우가 있습니다. 이런 경우에는 DBA등 관리자에게 해당 테이블의 통계정보를 재생성해달라고 해야 합니다.

수집된 통계정보 확인방법(오라클)

QUERY를 작성하다보면 이 해당 테이블에는 총 몇 건의 레코드가 존재하는지 궁금할 경우가 있습니다. 궁금한 것을 넘어서 꼭 확인을 하고 넘어가야 좋은 SQL을 작성할 수 있다고 생각됩니다. 아래 통계정보를 이용하여 확인하는 방법을 공유하고자 합니다. 일반적으로 개발자분들한테는 DBA가 보는 통계정보는 공유가 안되는 사이트가 많습니다. 그래서 DBA가 보는 통계정보 대신에 해당 TABLE OWNER라면 확인 가능한 것을 알려드립니다. ALL_TAB_STATISTICS… Read More »

기본적인 TABLE간의 JOIN 원리

위 그림을 보시면서 여러분의 생각은 어떠신지요? 혹시 A처럼 테이블끼리 연결된다고 생각하고 계시지 않으셨나요? 두 개가 뭐가 다르지? 라고 생각하신다면 조금만 생각해 보십시오. 왠지 A의 경우는 내부적으로 행의 갯수가 변화없이 연결되는 것처럼 느껴지지 않으시나요? 오른쪽 B의 경우는 테이블A,B간에 양쪽 다 3건이 각각 9건으로 바뀌어서 서로 매핑되어 있는 모습입니다. 이 모습을 많은 분들이 SQL을 배우시면서 A라고 생각하시는… Read More »

ANSI SQL과 ORACLE SQL

어느 쪽이 더 익숙하신가요? 왼쪽의 SQL이 더 익숙하시다면 여러분은 오라클을 많이 사용하신 걸 겁니다. 이번 장은 오른쪽에 씌여있는 부분 ANSI를 소개하려고 만든 페이지 입니다. 오른쪽 형태로 쓰면 틀린 거라고 생각하실지 모르지만, 전혀 틀린 쿼리가 아니고 오히려 표준으로 쿼리를 작성하고 계신 겁니다. 데이터 베이스가 각각의 회사마다 전부 다르게 나오고, 명령어나 함수들이 전부 다르게 나옵니다. DB2, SYBASE,… Read More »

전체범위처리와 부분범위처리

전체범위처리는 무엇이고, 부분범위처리는 무엇인지 알아보도록 합시다. 아주 간단하게 설명해 보겠습니다. 위 SQL은 전체범위처리일까요? 전체를 대상으로 하니까 전체범위처리가 아닐까요? 저렇게 쿼리를 작성하면 결과가 빨리나오나요? 아니면 늦게 나오나요? 결과가 빨리 나옵니다. 이유는 결과를 배달하는 버퍼에 내용을 금방 다 채울 수 있기 때문입니다. 조금 더 쉽게 생활에 맞춰서 설명해 보겠습니다. 홈쇼핑에 여행상품이 몇명이상이면 출발이라는 거 보신 적 있으시지요?… Read More »

프로그래밍과 SQL작성의 차이

절차적 사고란 프로그래밍을 작성하는 논리적인 사고를 말하는 것입니다. 위 그림과 같이 COLOR가 빨강이면서 SIZE가 10인 것을 찾으면 HELLO를 출력한다고 해봅시다. 이를 절차적인 언어로 말해본다면, “DATA라는 변수에서 1부터 10까지 반복하면서 COLOR가 ‘빨강’이면서 SIZE가 ’10’인 것을 찾으면 ‘HELLO’를 출력해 줘.” 라고 할 수 있을 겁니다. 이를 SQL로 작성한다고 생각해봅시다. 조금 그림이 잘못되었지만, 개념을 잡으려는 것이니까 사소한 거는… Read More »

개발자로 일하면서 칼퇴근 하기

얼마 전 새로운 프로젝트를 시작하게 되었습니다. 이번같이 운영사업을 가져오는 경우에는 RFP에 나와있는 내용중에 나의 업무는 무엇인가를 명확하게 하는 것이 중요합니다. 항상 있는 일이지만, 운영사업단(이하 사업단)은 비용을 어떻게 해서든 줄이려고 합니다. 또, 일을 맡긴 고객입장도 어찌보면 마찬가지겠지요. 하지만, 여기서 개발자 분들이 좀 진지하게 생각해 보셔야 하는 부분이 있습니다. 내가 한달에 얼마만큼의 일을 할 수 있고, 나의… Read More »

사용하는 컴퓨터의 제품명을 알아보기

간혹 프로젝트를 진행하다 보면 사용하는 노트북 또는 컴퓨터의 제품명을 취합하는 경우가 있습니다. 이 때 간단히 명령어로 알아보는 방법을 소개합니다. wmic csproduct get name 위와 같이 입력하면 아래와 같이 제품을 알려줍니다.