본문 바로가기

전체 글

(107)
도커 오류: containerd-shim-runc-v2: no such file or directory 도커를 재시작했는데 서비스가 아무것도 뜨지 않았다. 스택을 확인해보니 처음 보는 메시지가 뜬다.docker stack ps --no-trunc STACK~~~~~~~~~~~~~ containerd-shim-runc-v2: no such file or directorycontainerd-shim-runc-v2: no such file or directory우리 회사는 portainer를 사용하는데, 관련 데몬인 것 같다. /usr/bin에 가서 containerd가 포함된 파일을 찾아보았다.[root@localhost bin]# pwd/usr/bin[root@localhost bin]# ls | grep containerdcontainerdcontainerd-shimcontainerd-shim-runc-v..
아파치 mod_jk 모듈 수동 설치(Apache 2.4, RHEL8) RHEL8.9가 설치된 새 가상서버에 아파치를 세팅할 일이 생겼다. 의외로 10년이 넘는 기간 동안 내 손으로 직접 아파치를 처음부터 설치한 적은 없어서 처음 해봤다. 간단하게 정리해둔다.아파치 설치하기dnf install httpd -ymod_jk 모듈 설치하기이렇게 요약할 수 있다.httpd-devel 라이브러리 설치tomcat-connectors 압축파일 업로드tomcat-connectors 압축 해제tomcat-connectors경로/native 이동configure --with-apxs={apxs경로}makemake install명령어로 보자.httpd-devel 라이브러리 설치dnf install httpd-develtomcat-connectors 다운로드/서버 업로드/압축 해제https://..
오라클 PLS-00183 Too many bind variables 해결방법 오라클 PL/SQL 에러 - PLS-00183 발생 운영 중인 배치 프로그램에 다른 데이터베이스에서 데이터를 가져와 업데이트하는 이런 쿼리가 있었습니다. 일배치로 실행되며 등록/수정/삭제된 데이터를 PL/SQL BEGIN ~ END 사이에서 insert, update, delete문으로 만드는 동적 쿼리가 MyBatis로 작성되어 있었습니다. BEGIN UPDATE MY_TABLE SET COL1 = #{item.col1} , COL2 = #{item.col2} , COL3 = #{item.col3} , COL4 = #{item.col4} , COL5 = #{item.col5} -- .... 이런식으로 13개 WHERE COND1 = #{item.cond1} AND COND2 = #{item.cond2}..
logback 필터 - 쓰레드명 혹은 특정 내용만 필터링하기 (로그백 커스텀 필터 구현) 로그백 커스텀 필터를 만들어주세요 맡고 있는 여러 시스템 중 하나는 jdbc.sqlonly를 INFO 레벨로 설정하고 있다. jdbc.sqlonly를 INFO레벨로 하면 파라미터가 바인딩 된 쿼리 전문이 남아서 로그양이 꽤 되지만, 장애 발생시 문제 파악을 위해 운영에서도 INFO 레벨로 설정하는 경우가 꽤 있다. 그런데 스케줄러에서 실행되는 쿼리가 1분마다 찍히고 있어서 운영하는 측에서 수정 요청이 들어왔다. 스케줄은 스프링 @Scheduled 어노테이션을 사용하여 구현하였고 별도의 커스텀 TaskScheduler를 정의하지 않았으므로 poolScheduler라는 prefix가 들어간다. 이에, Thread 이름으로 필터링을 하고자 시도하였다. 그런데 당연히 기본 기능으로 그런 필터링 기능이 제공될 줄..
IntelliJ에서 빈 줄이 들어가면 쿼리 인식이 안되는 경우(Feat. 오라클 dialect) IntelliJ를 4년째 사용해오고 있습니다. 그런데 언제부터인가 데이터베이스 콘솔에서 개행문자가 2번 이상 있는 경우에 쿼리 실행이 안되는 현상이 생겼습니다. -- 잘된다 select sysdate from dual; -- 빈 줄이 들어가면 쿼리 인식이 안된다 select sysdate from dual; 그래서 설정을 찾아보고 온갖 검색을 해봐도 못 찾아내다가, 우연히 해결방법을 발견하게 되어 기록해둡니다. 오류 증상 IntelliJ Database Console에서 빈 줄이 들어간 쿼리가 실행 안됨. 참고로 오라클 해결 방법 경고가 발생하는 곳에 마우스를 올리면 다음과 같은 dialog가 나타나는데요, "Change SQL dialect"를 선택합니다. Oracle을 선택합니다. Change Dia..
아이폰 사파리에서 이미지 새로고침 안될 때(Feat. 캡챠, Webkit 엔진) 로그인 페이지에 캡챠가 적용되어 있다. '새로고침'을 누르면 당연히 캡챠가 새로고침 되어야 한다. 물론 내가 할 땐 잘됐다. 그런데 테스트를 해보시더니 캡챠 문자열 새로고침이 안된다고 한다. "아이폰에서 안되요." 처리 프로세스 서버로 캡챠 새로고침을 요청한다. 이미지 element의 src attribute에 캡챠 이미지를 세팅한다. '/capcha/image' API 에서는 세션에 저장된 캡챠값을 이미지로 생성하여 반환한다. $.ajax('/captcha/refresh').done(function () { imgElement.attr('src', '/captcha/image'); }); 그런데 아이폰(=사파리=웹킷 엔진)에서는 이..
IntelliJ IDEA에서 gradle 2.2(혹은 2.x) 버전이 안될때 버전 주의사항 (The project uses Gradle 2.12 which is incompatible with IDEA running on Java 10 or newer.) Jetbrains의 IntelliJ IDEA(이하 IntelliJ) 2020부터는 gradle 3.0 이상을 요구합니다. 그래서 IntelliJ 2019.1 혹은 2019.3 등을 설치하여 해당 프로젝트를 열면 대부분 해결됩니다. 하지만 이 때에도 동작하지 않는 경우가 있습니다. 제 경우에는 이런 오류가 발생했습니다. The project uses Gradle 2.12 which is incompatible with IDEA running on Java 10 or newer. "프로젝트는 java 1.8로 세팅했는데 뭔소리야?" 그랬는데 사실 알고보니 이건 IntelliJ를 구동하는 자바 버전이 10 이상이라는 말이었습니다. 해결 방법 유일한 해결 방법은 Intellij를 실행하는 자바 버전을 낮추는 것..
프로그램 버그, 고치는 것만큼 중요한 버그 리포트 작성과 공유 오늘 특정 날짜에서만 발생하는 오라클 오류를 발견하게 되었는데요, 그 원인은 'NUMTOYMINTERVAL' 함수를 사용하여 날짜를 계산하던 중에 발생한 문제였습니다. 이 함수는 일반적으로 날짜와 시간 간격을 계산할 때 사용되는데, 이번에 발생한 문제는 sysdate에서 특정 년월을 더하거나 빼면서 문제가 있었습니다. 예를 들면 2월은 2월28일이 마지막 날인데, 1월31일에 sysdate + NUMTOYMINTERVAL(1, 'MONTH')를 실행하면 2월31일이라는 날짜가 존재하지 않으니 ORA-01839 오류가 발생하는 식이죠. 다행히 오래 걸리지 않아 원인은 바로 발견하였습니다. 어떤 데이터에서만 이 문제가 발생하는지 확인한 후, 'NUMTOYMINTERVAL&..