NOLOGGING has nothing in common with rollbacks!!! Nologging deals with *redo* entries, while rollback deals with *undo* entries.

Answer to original question: No, it can't be done. There is no way you could prevent undo entries to be written to rollback segments. No way, no documented way to do it and even not undocumented one (AFAIK).

On the other hand you could (at least up to a point) prevent redo entries to be generated by using some of the unrecoverable methods oracle provides for you. Or you could even totaly prevent redo generation by setting some undocumented init parameters - but you surely don't want to do this on a production database....

There is a reason why it is quite easily to prevent generation of redo entries, but is impossible to prevent generation of undo entries. Redo entries have only one main purpose: in case a database recovery (either instnace or media recovery) is needed they provide a way to recover the transactions. If it is OK with you not to be able to recover some of your transactions its OK with Oracle too, so it offers you that option. But on the other hand, rollback entries have more than one purpose. Beside the capability to rollback (undo) your transactions and the role that they play during recovery process, they play a crucial role in one additional basic functionality of Oracle's database: they provide a READ CONSISTENT VIEW of data for each and every query and DML on datablocks that you are modifying with your transaction. And here is a point where Oracle can not allow you not to generate rollback entries. You realy might not need them , but other concurent session must have them for the duration of your transaction. And that's why they must be generated.