Мне кажется по-человечески сделать так:
1. Либо включить
Snapshot isolation для данной транзакции в Oracle (как, не знаю, может через Connection сказать ему какую-то команду)
2. Либо сделать отдельную базу для отчетов и периодически копировать туда данные (не знаю оракл, поэтому не скажу, как лучше в SQL 2005 - backup-restore или database snapshot) -- насколько я знаю, это достаточно распространенное решение для снижения нагрузки на основную OLTP базу