While operating synformation together with an Oracle database (prior to version 10g), the following error can occur during page compilation:
FATAL ERROR IN TWO-TASK SERVER: error = 12571 ksedmp: internal or fatal error
This error is logged by Oracle in the user dump trace files. After this error has occurred, no more pages can be compiled. From the ACU client software, it looks like the system is locked up. Only a restart of the synformation server software will help temporarily.
Page compilation within synformation is triggered by altering a block or a page template. The error can be easily reproduced by first altering a page template or a global block, directly followed by altering a local block. This almost always has the consequence that the ACU client software locks up. It’s not possible to compile pages from other ACU clients after this error has occurred. The error can be forced also by changing global and local blocks from different ACU clients.
Since such an error hasn’t been observed on other databases, I assume that it’s a problem only for Oracle databases prior to version 10g. Apparently, the error can be prevented if a certain foreign key is dropped. I recommend that everyone who runs synformation on an Oracle database prior to 10g deletes this key. Executing the following statement will fix the problem:
ALTER TABLE "SYN_PAGE_SECTIONS" DROP CONSTRAINT "FK_PAGE_SECTIONS_BLOCK_ID" CASCADE;
Deleting this key has no side effects on the operation of the system.
I know that error 12571 hints to a network timeout. It seems strange that dropping a foreign key constraint fixes the problem, but I’ve tried hard to find a fix that feels more logical. Everything else I tried did not fix the problem. I’m not really satisfied with the solution, in part because synformation has a heavily normalised data model, and this fix breaks the beauty. I guess I’ve to live with that. Maybe someone else knows something to ease my pain?