01. Database 10

[DBeaver] 디비버-오라클 데드락(deadlock) 해제법

'ERROR: deadlock detected ...'라는 로그가 뜨면서1시간 동안 로그인도 안 되고, 입력한 내용이 저장이 안되는 상황이 발생했다. 디비버를 통하여 오라클 DB를 사용하고 있었기 때문에아래와 같은 방법으로(락 걸린 세션을 조회하고 kill 하는 방법) 교착상태를 해결하였다. 만약 이 방법도 통하지 않는다면,최상위 권한을 가진 DBA에 직접 문의하여 해결해야 한다고 한다. -- 1. 세션을 조회한다.SELECT SID, SERIAL#, USERNAME, PROGRAM FROM V$SESSION-- 2. 락 된 세션을 조회한다.SELECTV$SESSION.SID,V$SESSION.SERIAL#,V$SESSION.USERNAME,DBA_OBJECTS.OBJECT_NAME,V$SESSION.S..

01. Database 2024.06.27

[xml] 오라클 CLOB 데이터 화면에 뿌려주기

오라클의 CLOB 데이터형은 보통 글자 수가 너무 길 때 사용한다.select 쿼리문을 사용하는 화면을 만들 때,(예를 들어) long_text(컬럼명)라는 CLOB 데이터를 가져왔다. Select long_text from table;을 했는데, 화면에는 ‘Oracle.~.~…‘이라는 문구만 떴다. 알고보니 자바에서는 varchar의 형태로 가져오므로 DB와 서로 데이터형이 안맞아서 그런 것이었다. 이럴 때는 쿼리문 앞에 'resultMap'이라는 태그를 사용하여 SQL 조회 결과를 반환하는 방식을 지정하면 해결된다.jdbcType과 javaType을 각각 지정해주면 된다. jdbcType(테이블의 자료형)은 CLOB이겠고, javaType(자바의 자료형)은 String으로 가져오면 된다. ........

01. Database 2024.06.27

[iBatis 2.0] if-else 조건문 사용법

status(맵으로 넘긴 파라미터)라는 키값을 비교하여 sql문에서 분기처리를 하는데, 0 일때, and 조건을 실행하고1,2,3 일 때, or 조건을 실행하고 싶었다. 세팅되어있는 ibatis는      PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"     "http://ibatis.apache.org/dtd/sql-map-2.dtd">  태그를 사용하여 값을 비교하는 조건 분기처리를 하였다. (A_COLUMN IS NULL AND B_COLUMN IS NULL AND C_COLUMN IS NULL) (A_COLUMN = #status# OR B_COLUMN = #status# OR C_COLUMN= #status#) (A_CO..

01. Database 2024.06.27

[SQL][Oracle] 엑셀다운로드 시간 단축했던 법 공유

현업에서 유지보수 업무를 하다가고객사로부터 4만건이 넘는 데이터를 엑셀로 다운받을 때6분 30초 정도 걸리는 등의 이유로 업무에 지장이 간다는 민원을 접수했다. 엑셀로 데이터를 불러올 때 결국 select 쿼리문을 쓰므로, 쿼리문만 수정하면 될 것 같았다. 우선, 3개월 단위로 조회하면 더 빨라지지 않을까 하여 'BETWEEN 조건'을 걸었다.6분 30초에서 2분 30초로 단축되었다. 데이터를 일부만 조회하니 시간이 자연스럽게 단축될 수 밖에 없었다. 하지만, 여기서 더 줄일 수 없을까 고민했고, 회사 선임님께 도움을 구했다. 그리고 서브쿼리문 하나만 수정했더니2분 30초에서 20초로 단축되었다. 여기서부터 이 포스팅에서 공유하고 싶은 이야기이다.무려 약 2분을 단축했던 방법이다.간단하게 말해, 서브 쿼..

01. Database 2024.06.20

[SQL] 원하는 DB에 맞게 쿼리문 변환하기(feat. SQLines)

https://www.sqlines.com/online SQLines - Online SQL Conversion - SQL Scripts, DDL, Queries, Views, Stored Procedures, Triggers www.sqlines.com 현업에서 데이터베이스를 Oracle에서 MariaDB로 변경하면서,xml 파일도 수정해야 하는 상황이 발생했다. 규칙을 알고 하나씩 수정하는 것보다,그냥 프로그램 돌려서 복붙하는 게 더 효율적일 것 같았다. 그래서 알게 된 사이트를가장 위에 링크로 연결해두었다. 완벽하게 변환은 안 된다고 하니, 변환된 결과를 보고 직접 수정해야 할 부분은 수정해야 할 것 같다. 예를 들어, 태그에서 프로퍼티 네임이 double quotes("")가 아니라 single..

01. Database 2024.06.19

[Cubrid/큐브리드] 윈도우(Window)에서 설치 시 한글 문자 깨짐 조치

현재 맡고 있는 프로젝트 중에,데이터베이스를 큐브리드로 사용하고 있어서 데이터를 자유롭게 수정/삭제하기 위해 개발 환경 데이터베이스를 새로 생성하여운영 환경에 있는 데이터를 가져오는 과정 중이었다. csv 파일로 데이터 내보내기 후생성된 개발 디비에서 각 테이블에 데이터를 직접 import 하고 있는데, 분명 csv 파일의 charset과 데이터 가져오기 시 charset을 UTF-8 혹은 euc-kr로 설정해서한글 데이터가 잘 들어올 수 있도록 동일하게 맞춰주었는데,이상한 특수 기호들이 뜨면서 머리 아픈 순간이 왔다. 원인은 CUBRID JAVA StoredProcedure가 JVM(자바 가상 머신)에서 동작하기 때문에,JVM의 디폴트 charset을 변경해야 한다는 것이었다. 자바 환경변수를 설정할 ..

01. Database 2024.06.19

[Cubrid/큐브리드] 특정 데이터베이스만 실행하는법

큐브리드를 약 3개월 정도 사용해본 결과,매주 월요일마다 새롭게 실행해야 한다는 단점이 있었고(이건 왜인지 모르겠지만, 설정의 문제는 아닌 듯 하다),디비버를 오래 켜두면 바로 broker 연결 이슈가 생긴다는 단점도 있었다. 난 오라클이 좋다... ㅎㅎ 아무튼 데이터베이스의 연결이 끊어질 때마다 새롭게 실행한다. [실행순서] 1. Mobaxterm을 실행한다.(putty나 다른 ssh 프로그램 사용) 2. 큐브리드가 설치된 서버로 접속한다.(계정정보 입력 필수) 3. su - cubrid 입력 4. cubrid 관리자 비밀번호 입력 5. cubrid server start 데이터베이스명 입력 그러면, 내가 원하는 데이터베이스만 실행할 수 있다. 모두 실행하고 싶으면, cubrid service star..

01. Database 2024.06.19