[카테고리:] Oracle

  • 오라클 invalid object 조회 쿼리

    기존 오라클 DB에 테이블의 구조나 Object 들이 변하게 되면 이를 참조하는 Object가 invalid 상태가 됩니다. 그래서 시스템 운영자는 이 invalid된 Object들을 다시 정상적인 상태로 만들어 줘야 하는데요. 이때 invalid object를 조회하는 쿼리를 통해 문제를 찾고 해결할 수 있습니다. 조회 쿼리

  • ORA-00054: 리소스가 사용 중이어서 NOWAIT가… 오류

    ORA-00054: 리소스가 사용 중이어서 NOWAIT가… 오류

    오라클을 사용하다 보면 가끔 예기치 않은 오류를 만날 때가 있습니다. 저같은 경우는 Java를 이용하여 not null인 필드에 null값을 넣으려다가 ora-00054에러가 발생하였는데요. 이 ora-00054는 테이블 lock과 관련된 에러로 이 상태가 유지되면 테이블을 지울수도 변경할 수가 없게 됩니다. 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다.

  • 오라클 행 합치기 기능 – listagg

    오라클 행 합치기 기능 – listagg

    한 데이터가 있습니다. A, B, C지역에 여러명의 사람들이 살아가고 있지만 이 사람들은 각기 다름 이름을 가지고 있습니다. 이 사람들을 지역별로 묶어서 데이터를 표현해야 할 경우 어떻게 해야 할까요? 오라클에서는 여러 행을 하나의 열로 합치는 기능을 제공하여 위와 같은 기능을 편리하게 구현할 수 있는데요. 바로 listagg 기능을 사용하면 되는데요. 기능을 통해 오라클 행 합치기 기능을 수행해 보겠습니다. 문법 LISTAGG(컬럼, ‘,’) WITHIN GROUP (ORDER BY 컬럼) 위의 문법은 첫번째 컬럼에 해당 하는 부분은 합쳐지는 데이터를 콤마로 구분지어 계속 append 시키는 역할을 하며, Order by절의 컬럼은 append되는 데이터의 정렬 기능을 합니다. 예제 오라클에서 제공하는 기본 테이블인 emp를 이용해 보겠습니다. 데이터를 보시면 job 컬럼은 중복된 값이 있는 반면 ename은 중복된 값이 없습니다. 그래서 JOB별 이름을 모두 다 표현해 보겠습니다. SELECT JOB      , LISTAGG(ENAME, ‘,’) WITHIN GROUP (ORDER BY ENAME) LISTAGG FROM EMPLOYEE GROUP BY JOB  중복이…

  • 오라클 ORA-12560 오류 해결

    오라클 ORA-12560 오류 해결

    오라클을 사용하다 보면 여러가지 오류가 생길 수 있는데요. 그중에서 ORA-12560 오류 처리 방법에 대해서 알아보겠습니다. 1. 오류 원인 ORA-12560 오류의 원인은 오라클의 접속이 안되는 경우에 발생하게 되는데요. 저도 sysdba 접속 시도시에 접속 오류가 발생하게 되었습니다. 2. 해결 방법 오라클 서비스 구동 첫번째로 확인해 봐야 할 사항이 오라클 서비스가 동작 여부 입니다. cmd 창을 관리자 권한으로 열어…

  • 오라클 현재날짜 표기와 포맷

    오라클 현재날짜 표기와 포맷

    오라클에서 날짜를 출력하는 함수는 SYSDATE 인데 이 함수를 통해서 오라클 현재날짜 표기와 형식을 바꿔보도록 하겠습니다. 기본적으로 SYSDATE의 표기 형식은 YY/MM/DD가 기본형식입니다. 하지만 상황에 따라 다양한 형태의 날짜형식이 필요할 때가 있는데요. 이런 날짜형식을 TO_CHAR함수를 통해서 변경할 수 있습니다. SYSDATE를 이용한 날짜포맷입니다. 이를 기준으로 날짜의 표기 방법을 바꿀 수 있는데요. 사용할 함수는 TO_CHAR 이며 TO_CHAR(SYSDATE, ‘형식’)을 사용하면…

  • 오라클 엑셀 insert 방법 by csv

    오라클 엑셀 insert 방법 by csv

    엑셀에 저장된 대용량 데이터를 DB에 입력해야 하는 경우가 있는데요. 이때 토드의 오라클 엑셀 insert 기능을 사용하면 간편하게 이를 수행할 수 있습니다. 일단 토드 프로그램을 설치해 주시기 바랍니다. 1. 예제 테이블 오라클에서 사용할 테이블의 구조는 위와 같습니다. 일단 insert할 데이터를 엑셀을 통해 작성해 줍니다. 주의 하실 점은 테이블의 컬럼과 엑셀의 컬럼의 타입을 일치해 주시면 됩니다. 그리고…

  • 오라클 with 함수로 임시테이블 생성

    오라클 with 함수로 임시테이블 생성

    조회 쿼리는 실행할 때 일부 테이블의 조회값을 임시테이블로 지정할 수 있는데요. 이런 기능을 with 함수라고 하는데요. 오라클 with 함수를 통해서 임시테이블을 만들어 보겠습니다. 왜 사용하는가? 자주 이용되는 데이터가 있을시 이를 반복적으로 이용하면 성능저하를 일으킬 수 있으므로 이때, with 함수를 통해 데이터를 임시로 Temporary Tablespace에 만들어 놓으면 성능 저하를 방지할 수 있습니다. 즉, 오라클 with 함수를…

  • 오라클 substr 로 문자열 자르기

    오라클 substr 로 문자열 자르기

    DB 컬럼상에서 문자열을 자를 수 있게 해주는 오라클 substr 기능에 대해 알아보겠습니다. 오라클 뿐만 아니라 다른 DBMS를 사용하면서 특정 문자열만 추출해 내고 싶을 때가 있습니다. 예를 들면 20150314 날짜가 있다면 문자열 함수를 이용하여 2015만 추출해 내어 년도만 표시해야 하는 경우가 있는데요. 이런 기능을 제공하는 함수가 바로 substr 이라고 할 수 있습니다. 1. 사용법 SELECT SUBSTR(‘문자열’,숫자1,숫자2)…

  • 오라클 rank 함수로 순위 구하기

    오라클 rank 함수로 순위 구하기

    DB 자료 중에 숫자로 되어 있는 값을 토대로 순위를 매겨야 할 경우 오라클 rank 함수를 사용하면 됩니다. 하지만 오라클에서 순위를 구할 때 order by 또는 rownum 사용할 수가 있는데요. 하지만 이는 rank 함수와 약간의 차이점이 존재합니다. 바로 숫자의 중복이 되질 않는다는 점입니다. 예제를 통해서 한번 오라클 rank 함수에 대해 배워보겠습니다. 다음과 rownum과 order by를 이용하여 순위를…