The main advantage Oracle has over SQL Server in my opinion is that Oracle has tablespaces and multi-version concurrency control baked in, whereas SQL Server has ONE TempDB and snapshot isolation relying on that one TempDB.
https://technet.microsoft.com/en-us/library/ms184286(v=sql.1...
Oracle stores the old version of the row in a rollback segment.
According to the following article, "only changed values are written to undo whereas PostgreSQL/SQL Server creates a complete new tuple for modified row. This avoids bloat in the main heap segment." [1]
1. http://www.enterprisedb.com/postgres-plus-edb-blog/amit-kapi...
Both Oracle and SQL Server has some way to restrict the growth of version information whereas PostgreSQL/PPAS doesn't have any way.
(Don't speak to me about SQL Server. Of all the brain dead ideas, implementing storage in the TempDB for snapshot isolation!)