프로젝트

일반

사용자정보

PostgreSQL 테이블 체크 및 수정처리

장 용석이(가) 2년 이상 전에 추가함

PostgreSQL에서 특히나 gacct테이블의 경우 테이블 깨지는것인지는 정확히
알수없으나 Insert나 Update가 정상적으로 일어나지 않는 케이스가 생길때가 있다.
정확한 케이스는 알 수 없으나 계좌등록에서 보통 많이 발생한다.

해당 오류 발생시 DebugView가 필요하다.
http://ins.finger.co.kr/inshelp.html
에서 다운로드 받으시고, 해당 프로그램을 실행후 다시 등록처리해봅니다.

그럼 오류가 발생할때
[23768] System.ObjectDisposedException: NpgsqlTransaction ---> Npgsql.PostgresException: XX001: could not read block 4 in file "base/16384/16500": read only 0 of 8192 bytes

이런식으로 could not read block error가 발생합니다.
"base/16384/16500" 구문에서 맨 뒤의 숫자가 필요합니다. (gacct의 경우 16500입니다)

PostgreSQL에 접속후
select relname, relkind from pg_class where pg_relation_filenode(oid) = 16500

이런식으로 호출하면 문제가 되는 테이블이 조회됩니다.
문제가 되는 테이블이 어떤것인지 확인한후 다음의 쿼리를 실행합니다.

vacuum full gacct;
reindex table gacct;

gacct대신에 문제가 되는 테이블명을 적으면 됩니다.
위의 2개의 쿼리를 차례대로 실행하신후 다시 처리해보시면 동작하실겁니다.

해당 내용에 대한 이유는 찾는중이며, 우선 발생시에는 위와같이 대처하시기 바랍니다.