Tailing the index creation logs, initially each
parallel process was indexing 100 documents every six
seconds but as more documents have been indexes, so
the index rate has decreased.
Currently, the index creation has been running for
six days (!!!!), they've indexed four million out of
the five million rows but the index creation has
slowed to such an extent that for each parallel
process it takes one minute to index 100 documents.
In the index creation log file you will notice that first the index is created in memory until it reaches the indexing memory limit, flushes it to disk ($I table), and continue to index more documents in memory, and so on. So basically the entire indexing task is broken up into smaller batches (depending on the size of the indexing memory you have set) and each batch is processed in two stages, the in-memory indexing and the flush to disk.
Looking at the index creation log, Is the degradation in indexing performance limited to in-memory indexing stage or to the disk flush stage or both?
If it is limited to in-memory indexing stage then you might be hitting a memory leak bug which you can prove by taking PGA dumps and validating that some sub-heap is growing uncontrollably.
Faisal