반응형
반응형
Tibero 5 JDBC-590743 문자셋 변환 오류 점검 방법 Tibero 5에서 Java 애플리케이션으로 INSERT를 수행할 때 JDBC-590743: Character set conversion failed: invalid input 오류가 발생한다면, 우선 DB 문자셋과 JDBC 클라이언트 인코딩, 실제 입력 문자열에 DB 문자셋으로 변환할 수 없는 문자가 포함되어 있는지를 함께 확인해야 한다. 핵심 요약 JDBC-590743은 문자열을 Tibero 서버 문자셋으로 변환하는 과정에서 유효하지 않은 입력이 들어왔을 때 발생할 수 있다. 특히 Tibero 5 환경에서 DB 문자셋이 MSWIN949, EUC-KR, K..
PostgreSQL VACUUM FULL 후 relfrozenxid age가 1로 줄어드는 이유 PostgreSQL에서 VACUUM FULL을 수행한 뒤 pg_class.relfrozenxid의 age 값이 크게 낮아지는 현상은 정상적인 동작이다. 일반 VACUUM이 기존 테이블 파일 안에서 불필요한 튜플을 정리하는 방식이라면, VACUUM FULL은 테이블을 새로 재작성하는 방식에 가깝기 때문이다. 핵심 요약 VACUUM FULL은 일반 VACUUM처럼 일부 페이지만 정리하는 작업이 아니라 테이블을 새 relfilenode로 재작성한다. 이 과정에서 살아 있는 튜플만 새 테이블로 복사되고, 새 테이블의 relfrozenx..
Tomcat 방식과 Pod 방식 차이, WAS 운영 구조 쉽게 이해하기 핵심 요약 Tomcat 방식은 서버나 VM 위에 Tomcat을 직접 설치해 WAR 파일을 배포하는 기존 WAS 운영 방식입니다. Pod 방식은 Tomcat을 컨테이너 이미지로 만들고 Kubernetes에서 Pod 단위로 실행하는 방식입니다. 쉽게 말하면 차이는 “Tomcat을 서버에 직접 설치하느냐, 컨테이너로 만들어 Kubernetes에서 운영하느냐”입니다. 요즘 인프라에서는 WAS 운영 방식을 설명할 때 Tomcat 방식과 Pod 방식을 구분해서 말하는 경우가 많습니다. 둘 다 애플..
Oracle to PostgreSQL Migration oracle_fdw ORA-00943 오류, Oracle 테이블 대소문자와 스키마 확인 방법 Oracle에서 PostgreSQL로 마이그레이션하는 과정에서 oracle_fdw 외래 테이블은 생성되지만 조회 시 ORA-00943: table or view does not exist 오류가 발생할 수 있다. 이 경우 대부분 Oracle 쪽 스키마명과 테이블명을 PostgreSQL 외래 테이블 옵션에 정확히 지정하지 않아 발생한다. 오류 상황 정리 PostgreSQL 15 환경에서 oracle_fdw 확장을 설치하고 Oracle 12c..
PostgreSQL Data Corruption PostgreSQL invalid page in block 오류 원인과 복구 대응 방법 PostgreSQL에서 invalid page in block xxxx of relation base/... 오류가 발생했다면 단순 SQL 오류가 아니라 테이블 또는 인덱스 파일의 물리적 페이지 손상 가능성을 먼저 봐야 한다. 특히 테이블 데이터 페이지가 깨진 경우에는 REINDEX나 VACUUM FULL만으로 데이터 손실 없이 복구하기 어렵다. 오류의 의미 PostgreSQL은 테이블과 인덱스를 여러 개의 8KB 페이지 단위로 저장한다. invali..
PostgreSQL WAL Archiving PostgreSQL archive_mode on과 always 차이, 운영 환경별 선택 기준 PostgreSQL의 archive_mode는 WAL 파일을 아카이브할지 결정하는 핵심 설정이다. 특히 on과 always는 Primary 서버에서는 비슷해 보이지만, Standby 서버나 복구 상태에서는 동작 차이가 분명하다. archive_mode가 하는 일 PostgreSQL은 데이터 변경 내용을 WAL, 즉 Write-Ahead Logging 파일에 먼저 기록한다. 이 WAL 파일을 별도 저장소에 보관하면 장애 복구, 백업 복원, 특정 시점 ..