반응형
반응형
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..
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 파일을 별도 저장소에 보관하면 장애 복구, 백업 복원, 특정 시점 ..
오라클 테이블 Block Corrupt로 인한 백업 실패 조치 정리 개요 오라클 데이터베이스에서 테이블 Block Corrupt가 발생하면 특정 테이블 조회 오류뿐 아니라 RMAN 백업 실패로 이어질 수 있다. Block Corrupt는 데이터파일 내부의 특정 블록이 논리적 또는 물리적으로 손상된 상태를 의미하며, 백업 과정에서 해당 블록을 읽는 순간 오류가 발생할 수 있다. 핵심은 손상된 블록의 위치를 먼저 확인한 뒤, 해당 블록이 어떤 객체에 속하는지 식별하고, 복구 가능 여부를 판단하는 것이다. 운영 환경에서는 백업 실패만 보고 RMAN ..