본문 바로가기

Oracle16

Oracle에서 여러 Row를 하나의 컬럼으로 합치기 SQL을 작성하다 보면 여러 Row를 하나의 컬럼으로 합쳐서 보여줘야 할 경우가 있다. MySQL에 group_concat 같은 개념이 Oracle에도 존재한다. 한 번 살펴보자. Oracle의 경우 버전마다 할 수 있는 방식이 다르다. 먼저 언급하지만 버전이 올라갈수록 SQL이 간단해진다. 샘플 데이터 국가 차례 왕 이름 고구려 1대 동명왕 고구려 3대 대무신왕 백제 1대 온조왕 고구려 2대 유리왕 백제 3대 기루왕 신라 1대 남해왕 신라 1대 박혁거세 백제 2대 다루왕 신라 1대 유리이사금 샘플 데이터는 "여기"에서 가져왔다. 해결방식 1.9i에서 connect by + sys_connect_by_path 활용 -- 테스트 데이터 WITH TB_TEST AS ( SELECT '고구려' AS COUNT.. 2017. 7. 7.
ORA-03111 break received on communication channel ORA-03111 통신 채널에서 브레이크를 수신했습니다 서비스 운영 중에 위와 같은 오류를 접하는 경우가 있습니다. 이는 크게 3가지 원인으로 귀결 되는 경우가 많습니다. Server DB 간의 Network 가 불안정한 경우 네트워크 인프라를 확인해야 합니다. SQL Query Timeout 이 발생하는 경우 Timeout 이 발생하는 원인에는 여러가지가 있습니다만, ORA-03111 의 경우 일반적인 쿼리타임 아웃과는 다른 이슈입니다. DB 서버 내에서 Disk I/O 경합 이슈 등으로 Query Timeout 이 발생하는 경우 해당 오류가 발생할 수 있습니다. 예를들면, DB 에 동시에 너무 많은 DML 을 호출하는 경우 Data 를 Memory 에 모두 로드하지 못해 Disk 에서 계속 데이터를 .. 2016. 7. 15.
Oracle lock session 처리하기 하나의 DB 장비에 여러 사람 또는 여러 장비에서 쿼리를 수행하다보면 Table Lock 이 발생하여 더 이상 쿼리를 수행하지 못하는 경우가 있습니다. 너무 무거운 쿼리가 수행되어 일정시간이 지난 후 lock 풀리거나 하면 다행이지만 deadlock 처럼 무한 대기하는 경우는 별도의 처리가 필요합니다. oracle DB 에서 Session 정보를 어떻게 확인하고 lock 이 발생한 Session 을 어떻게 kill 하는지에 대해서 정리해 보았습니다. Session 확인하기 Oracle 의 Session 정보는 v$session 테이블을 조회하여 확인할 수 있습니다. select * from v$session; 특정 계정의 Session 을 확인하고자 한다면? select * from v$session w.. 2016. 7. 14.
ORA-01722: 수치가 부적합합니다 시스템 운영 중에 ORA-01722 라는 오류를 접하게 되었습니다. 이미 알고 있는 내용도 있었지만, 어떤 오류이고, 어떻게 해결할 수 있는지 한 번 정리해 보았습니다. 그럼 ORA-01722 오류는 무엇일까요? 오류 로그 상으로는 “ORA-01722: 수치가 부적합합니다” 라고 로그가 남습니다. 무슨 의미일까요? 일단 oracle docs 에서는 아래와 같이 설명하고 있습니다. AnORA-01722("invalid number") error occurs when an attempt is made to convert a character string into anumber, and the string cannot be converted into a valid number. Valid numbers con.. 2016. 7. 1.