Postgresql vs Oracle
Oracle is more popular than PostgreSQL for the same reason that Microsoft is more popular than Linux in larger companies: no head of IT with a budget has ever lost his job for choosing them over an open source alternative.
My opinion is that PostgreSQL is very close to Oracle, especially with the upcoming 9.1 which offers an alternative to Oracle's DataGuard.
On the SQL Level there are really head-to-head, not much difference (with Postgres having actually more "little helpers" and features that make life a lot easier).
Things where Oracle offers still more features:
Materialized views(available since Postgres 9.3, but Postgres still has no incremental refresh or query rewrite)- Flashback queries and flashback archives (they are really cool)
Index only scans(available since Postgres 9.2, but not as efficient as Oracle's implementation in my experience)- transaction control in stored procedures (there will be support for that in the upcoming Postgres 11, but not as complete as in Oracle)
- Index organized tables (aka "clustered indexes")
- ASH and AWR reports (Postgres 9.6 added the infrastructure to have something like that in the future)
parallel queries
Postgres 9.6 added some basic ability to run queries in parallel, Postgres 10 improved that even more and Postgres 11 will even be able to use it for things likecreate table as
- parallel DML
- Changing tables that are used in views (e.g. drop a column)
As much as I like PostgreSQL one thing that can be really annoying is configuring (auto)vacuum to cope with high write traffic.