8.2.2버전의 디비를 8.4.0로 업그레이드 하기 위해서 unload를 받고.
해당 objects 파일을 loaddb하는 중에 발생한 에러입니다.
unloaddb 된 objects 파일의 크기는 1.7G입니다.
--------------------------------------------------------------------------------------
GC Warning: Header allocation failed: Dropping block.
GC Warning: Out of Memory! Returning NIL!
CUBRID cannot allocate main memory and must halt execution.
The current transaction has been aborted.
Data integrity has been preserved.
Line 1374058:Your transaction cannot be rolled back since logging was ignored. Your database may be corrupted.
Line 1374058:Cannot create MOP with NULL OID.
Line 1374058:Cannot create MOP with NULL OID.
Line 1374058:Accessing deleted object -1|-16410289|-1.
Line 1374058:Accessing deleted object -1|-16410289|-1.
--------------------------------------------------------------------------------------
짐작해보건데.
free명령어로 메모리를 봤을때.
--------------------------------------------------------------------------------------
total used free shared buffers cached
Mem: 4029488 3916948 112540 0 12204 739104
-/+ buffers/cache: 3165640 863848
Swap: 8385920 1178740 7207180
total used free shared buffers cached
Mem: 4029488 3915212 114276 0 11368 760688
-/+ buffers/cache: 3143156 886332
Swap: 8385920 1187136 7198784
total used free shared buffers cached
Mem: 4029488 3916896 112592 0 10832 803200
-/+ buffers/cache: 3102864 926624
Swap: 8385920 1212416 7173504
total used free shared buffers cached
Mem: 4029488 3916700 112788 0 10388 838856
-/+ buffers/cache: 3067456 962032
Swap: 8385920 1230592 7155328
--------------------------------------------------------------------------------------
와 같이 buffers의 used값이 증가하다가 한계에 달해서 스왑이 일어날때 일어나는것 같습니다.
loaddb의 명령어중에 -c명령어를 통해서 중간 중간 커밋을 하고 해보려고했으나.
사용하는 db의 oid를 통해서 서로테이블간에 연결된것들이 많아서.
-c명령어로 하는경우 전체디비를 통체로 unloaddb해서 인지.
--------------------------------------------------------------------------------------
*** Committing the transaction ***
Line 29580767:"{NULL, 0, 0}" caused unique constraint violation.
Line 29580766:"{NULL, 0, 0}" caused unique constraint violation.
--------------------------------------------------------------------------------------
와 같은 아직 뒤에 테이블들의 값이 들어오지 않아서 유니크 값에 대한 문제가 발생합니다.
해서 -c명령어를 못쓰고 그냥 하려고해보았으나.
echo 30 >/proc/sys/vm/swappiness 으로 스왑이 덜 일어나도록 조정을 해도 결국엔
잡혀있는 메모리 4G를 넘어가면서 Out of Memory! 발생하게 됩니다.
어떻게 해결을 해야할지 몰라서 문의 드립니다.