
Oracle vs. PostgreSQL – A Comment - jkatz05
https://www.postgresql.org/message-id/flat/0959C81A-5B07-4D04-A6B1-57AA78A9A553%40gmail.com
======
Justsignedup
As a developer:

\- No license fees is huge. My company saves tens of thousands on license fees
when we can't really afford it.

\- The ability to set up environments super quickly is amazing.

\- Rollback of DDLs is huge for testing migrations

\- The backup features aren't broken by default. I've spent hours researching
how to back up an oracle db and transfer it to another. And at that point
versions matter. With postures I think I spent 30 minutes total figuring it
out over the years.

Overall I am a huge fan of Postgres having used it for about half of my career
and oracle for the other half. I genuinely hope I never use oracle again.

~~~
throwaway_pdp09
> Rollback of DDLs

Oracle can't roll back these (create table/drop index etc)? That really
surprises me. Pretty certain MSSQL can, because I've used it. Amazed,
actually, that oracle can't.

~~~
atombender
Very few databases support transactional DDL, meaning that you can do
something like:

    
    
      BEGIN;
      DROP TABLE foo;
      CREATE TABLE bar (t int);
      ROLLBACK;
    

...and it will just work as you expect. Oracle doesn't, nor does MSSQL.

As far as I know, other than Postgres, only Sybase ASE, Informix, DB2 UDB, and
Firebird support transaction DDL.

~~~
castorp
> Very few databases support transactional DDL

Postgres, SQL Server, Firebird, DB2, SQLite, Ingres, Informix, Teradata,
Vertica all support transactional DDL

~~~
nycdotnet
SQL Server partially supports it - indexes for example are not versioned which
causes snapshot transactions to fail if someone rebuilds an index - even if
it’s not in scope of the snapshot.

~~~
throwaway_pdp09
That doesn't sound right by my experience, Could you give a link please? I'm
concerned I've not heard of this. Probably because it's MVCC/snapshot
isolation which I'm not familiar with.

------
craigkerstiens
I'm a big fan of Postgres, and it's got plenty going for it. That's not to say
Oracle isn't a good database in its own right. The knocks against Oracle tend
to be lock-in, complexity, price, but rather than go in a checklist comparison
I'd rather say what's unique about Postgres:

\- Based on its license it's very hard for any one company or individual to
"own" Postgres, this makes risk of a company as a bad actor being minimized
pretty appealing

\- Its geospatial capabilities put it as the most advanced geospatial
database, only ESRI software really stands to beat it here

\- The improvements for app devs from things like JSON, to a variety of index
types put it in unique territory among relational databases

\- The extension framework is truly unique and stands to be where a lot of
future innovation happens.

~~~
justinvh
> Its geospatial capabilities put it as the most advanced geospatial database,
> only ESRI software really stands to beat it here

Where does PostGIS stand in comparison?

~~~
ken
The original comment was about how few packages and how little space Postgres
takes. PostGIS is good but it pulls in a _lot_ of extra packages.

I hate Oracle as much as anyone but this is no longer a fair comparison. If
you’re bragging about how good PostGIS is, you’re no longer anywhere near a
66MB install. More like (IIRC) 5 to 10 times that.

~~~
znpy
660 mb disk space?

I can afford that.

And I think that most people can.

~~~
mb4nck
For the record, on Debian unstable:

    
    
      root@pg1:~# LANG=C apt install postgresql-12 
      Reading package lists... Done
      [...]
      0 upgraded, 32 newly installed, 0 to remove and 0 not upgraded.
      Need to get 59.7 MB of archives.
      After this operation, 240 MB of additional disk space will be used.
      Do you want to continue? [Y/n] ^C
      root@pg1:~# LANG=C apt install postgresql-12 postgresql-12-postgis-3
      Reading package lists... Done
      [...]
      0 upgraded, 105 newly installed, 0 to remove and 0 not upgraded.
      Need to get 104 MB of archives.
      After this operation, 418 MB of additional disk space will be used.
      Do you want to continue? [Y/n]
    

I think the addition of LLVM for JIT execution of plans added a lot to the
Postgres install baseline (at least in distribution packages, you can compile
a much leaner postgres yourself).

~~~
anarazel
Due to the way that the LLVM dependency in postgres works, it could be
packaged separately from the base postgres server package. The LLVM
interfacing code is runtime loaded, and there's no error if "llvmjit.so" is
not on the system, even when the server was built with LLVM support. It's
basically a packager's choice whether to do so, or not.

------
ralphc
I bookmarked this tweet from 2012 - "I wish I had enough money to run Oracle
instead of Postgres." "Why do you want to do that?" "I don't, I just wish I
had enough money to."

------
jeswin
I've used plenty of Oracle; it's a poor choice (probably the worst) for
organisations of any size. People buy Oracle in large corporations because
that's what their leaders and their team know, and it helps them stay relevant
in the company. Especially in places where daily work is more about engaging
in office politics than dealing with technology.

And the other one is bribing. From mild to criminal, involving payments via
vendors to decision makers - [http://allthingsd.com/20120816/oracle-settles-
sec-bribery-ca...](http://allthingsd.com/20120816/oracle-settles-sec-bribery-
case-for-2-million/)

~~~
modoc
It's often higher performance and with better HA solutions than any other
options. I have a lot of dislike for the company, but it's silly to say it's a
poor choice for any organization size..

------
phoe-krk
Copying from [https://stackoverflow.com/questions/12115397/is-it-
against-l...](https://stackoverflow.com/questions/12115397/is-it-against-
license-to-publish-oracle-and-sql-server-performance-test):

 _The standard license ([http://www.oracle.com/technetwork/licenses/standard-
license-...](http://www.oracle.com/technetwork/licenses/standard-
license-152015.html)) you agree to when you download software from the Oracle
Technology Network (OTN) does state that you're not allowed to disclose
benchmarks._

    
    
        You may not: 
        <<list of things you cannot do>>
        - disclose results of any program benchmark tests without our prior consent.
    

I sadly suspect that Paul Förster might need a lawyer if anyone from Oracle
finds out about that post. Which, given that this is trending on Hacker News,
they easily might.

~~~
GordonS
> You may not: <<list of things you cannot do>>

I mean... does _anyone_ here think this is in any way reasonable? Is this even
legal?

~~~
nimbius
It's not about making it reasonable, it's an open threat to punish anyone who
does decide to benchmark Oracle. Nobody's going to win the case, but whoever
violates the term will surely wind up bankrupt defending themselves.

~~~
ethbro
Publish benchmarks as an LLC, then just go ahead and declare bankruptcy.

~~~
jojobas
Better yet, publish as a Russian or Chinese resident. Disclose results to a
(preferably not Oracle-using) tech newspaper on the condition of anonymity.

~~~
vbezhenar
Last time I checked, Oracle had some kind of branch in Russia. Not sure
whether that clause is enforceable within Russia laws, but they could just
bribe police, so they would make one's life quite miserable.

Money is money everywhere. May be even more so in Russia.

I have no idea about China, though.

------
vbezhenar
That's not a very useful comparison. Databases are made to execute queries,
not to install them. The only useful metric is performance and features (and
price, of course). Sure, Oracle is bloated and pain to manage, but if it works
faster, provides unique features and costs less in the end, people will use
it.

~~~
Someone1234
Right but by that metric Oracle is archaic.

Just look at Postgres[0] supported column data types and then look at
Oracle[1]. Better data types means more tightly defined columns, which means
fewer bugs/less defensive programming/reduced maintenance/reduced code
complexity.

No doubt someone will be along shortly to tell me "you don't NEED it!" and
then tell me how to hack constraints into making it act like something it is
not, but I don't care. I have no interest in "forcing" Oracle to act like a
modern database through repeatedly having to re-define 30+ year old common
data types (e.g. Int32, Int64, Long, Bool, etc).

As a developer I /hate/ working with Oracle. It is just cludgy. I don't care
how many times people point to vague indefinables for why it is "superior," it
sucks to work with. Microsoft Sql Server is better, and Postgres/Sqlite are
superb.

Just the fact Postgres has a date (with no-time) column means it outright
wins. In Oracle, we stored them as <Date> 12:00 but that's a gotcha since it
can get timezone adjusted in the pipeline (e.g. <Date> 12:00 becomes <Date>
08:00) and the result be subtly broken. Cannot time-zone adjust a real date
type.

[0]
[https://www.postgresql.org/docs/9.5/datatype.html](https://www.postgresql.org/docs/9.5/datatype.html)

[1]
[https://docs.oracle.com/cd/B28359_01/server.111/b28318/datat...](https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012)

~~~
z3t4
You should store dates with timezone or you can't make calculations like how
old is this post. You could base it off system time, but then the calculation
have to take into account summer/winter time.

~~~
brianwawok
Everything in the DB should be UTC. Anything else is crazy.

~~~
growse
This isn't true.

For example: If a user schedules an event to happen at 15:35 on July 29th 2021
IST, you _cannot_ know with certainty what the equivalent UTC value is. You
know what it would be _assuming_ the relationship between IST and UTC stays
the same between now and next year. If India suddenly decides to implement
some sort of DST, or make any other changes to the definition to IST, the UTC
value you stored is now wrong.

Timezones are political, but they're also how people organise their lives. The
user's local timezone is context that you can't just discard.

~~~
int_19h
> If India suddenly decides to implement some sort of DST, or make any other
> changes to the definition to IST, the UTC value you stored is now wrong.

It is not wrong. When timezones change, the database that contains that info
is updated - but it still retains information about historical rules,
precisely so that earlier dates can still be converted reliably.

On the other hand, if you use local times, then you are not able to
distinguish between pre- and post-clock change, when the same time repeats
twice.

~~~
growse
You're not converting a historic date though, you're converting a future date.
And that's an inherently uncertain process. It is literally impossible to know
what UTC time 2021-07-29T15:35:00 IST refers to _until it happens_. The Indian
government is free to redefine IST as they wish, and could choose to do that
at 15:34:59.

------
thePunisher
It has been known for DECADES that Oracle is outrageously expensive compared
to the competition. But the unwillingness of larger companies to go with open-
source databases which have no multi-billion dollar company behind them has
kept Oracle in the saddle all these years.

~~~
qeternity
I think that mission critical, legacy systems from a time before there was big
OSS acceptance at the CTO level is the main reason. I’m not sure how many
greenfield projects are using Oracle, but I’d expect that is rapidly
decreasing over time. However, if you’ve had an Oracle db running for 20
years, and the cost of screwing up a migration starts at 9 figures, and runs
into the 10 figures, then Oracle have you by the cost-benefit balls.

~~~
swarnie_
Oracle consultant here -> The Oracle world is shrinking admittedly and its
shrinking from the smaller end up. I almost never get called by a company with
less then 500 users or $100k a year of licence obligations.

Oracle is a tried and tested safe bet when implementing corp wide, multi year
projects. The HN crowd won't like it (and for good reason) but CTOs will
always bet on name recognition when millions or billions are on the line.

~~~
miahi
As a fellow Oracle consultant, I see the same. Most of the small clients only
involve me in migration projects to other DBs now (postgres or mysql), but the
ones with >$1M licenses continue to pay their support and migrate to 19c.

But that's also because it's way harder to migrate a huge project/organization
to a completely different DB - it's just cheaper and less risky to continue
with the current one.

------
dralley
> What I especially hate about Oracle (despite the license costs, of course)
> is that it has so many bugs, bugs and even more bugs and one keeps on
> searching for patches all day, generating lot of downtime. Applying a PSU or
> RU is mostly not enough.

Obligatory:
[https://news.ycombinator.com/item?id=18442941](https://news.ycombinator.com/item?id=18442941)

~~~
macmac
After reading that no serious person could ever dream of having any serious
enterprise be based on Oracle DB.

------
devit
"create stand alone database: ~30m"

If creating a database takes 30 minutes, there is something extremely wrong
either in the procedure the person used to do so, or in the Oracle software
itself.

~~~
daniel-levin
Well, if the database has the number of tables, triggers, stored procedures,
etc that SAP or Oracle’s ERP has then this seems less unreasonable. We’re
talking thousands

~~~
miahi
It's not about an application DB, it's just for the system dictionaries and
metadata, the file structure and so on.

------
ksec
I am sure there are many areas that Oracle is still technically better than
Postgre.

What I am interested in, is what are those features / problems. And if Postgre
has a roadmap for those improvement.

I mean not just Oracle. Outside of HN the majority of dev and cooperation
still swears by MySQL. I often wished HN instead of constantly hyping a
technology, tell me up front what are the Cons. And hopefully everyone will
make up their own mind whether the Pros and the Cons are worth trying it out.

~~~
vbezhenar
One reason that I've heard is cluster, Oracle supports clustering while
Postgres only provides half-baked solutions. But that was years ago, so I'd
like for correction.

------
paulryanrogers
For those still on Oracle, why? Is it regulations or executives demanding
certified solutions?

And if so then with so many bugs at what point does certification become a
negative signal?

~~~
aeyes
\- query hints

\- planner hints

\- better statistics (including ways to manually create statistics)

\- no vacuum

\- automatic planner adjustment when true cost was off

\- better planning for prepared statements

\- active-active clustering with RAC

\- vendor support for running on SAN including snapshots

\- usable query analysis tools provided by the vendor (pg_stat_statements
alone doesn't cut it)

\- datapump much faster than pg_dump

\- better connection management

\- out of the box backup tooling

edit: I haven't used Oracle in 4 years, all of that was available to me back
then.

~~~
Someone1234
Several of these are "features" exist to fix broken parts of Oracle (like
query/planner hints, planner adjustment, etc). Officially (per Oracle) the
planner should be good enough so you never need to use a hint, but
realistically all of these are "features" because the built-in systems aren't
good.

So, granted, other databases don't have Oracle's hacks to fix their broken
stuff but I'm not sure why that is an argument FOR using Oracle rather than
AGAINST. Hints are fragile hacks.

~~~
vbezhenar
So what do you do when you encounter bug in Postgres planner? File a bug and
wait for months or years until fix is released? Hack postgres source and fork
it? Using hints sounds like a more sane solution. Nobody's perfect. Being able
to work around is better than not being able to.

------
asldkfja_skdlf
Honest question, what is that with former Oracle clients and SUSE LInux?

Did the Novell ownership make it similar/alternative to Oracle stuff? Or is it
just that it was the first linux with a paid support option and those folks
likely used it earlier because of this?

Asking for people that actually use openSUSE today, not other pundits with
baseless hypothesis like myself :)

~~~
yellowapple
SUSE is reasonably popular (it's to Europe as Red Hat is to the USA, if I
understand right), and SLES is (like openSUSE) RPM-compatible, making it
reasonably friendly to large enterprise software packages (like, say, Oracle
DB). I'd expect most people using Oracle DB to be doing so on either SLES or
RHEL (or some derivative of the latter, like Oracle Linux).

------
kumarvvr
With the amount of hype and mind share micro-services attract, I hope the era
of large database clusters like Oracle comes to an end.

At the system level, even Oracle has to do some sort of message passing stuff
to be able to distributed databases.

With the availability of streaming services, resilient distributed computation
and data storage architectures, I hope companies like Oracle die a slow, but
graceful death.

PostgreSQL and advanced database systems like FoundationDB, with help of
stream / event processing systems, should be able to replace large Oracle
clusters.

The problem of "lock-in" is a business problem and ought to be solved my the
MBA's in my view.

~~~
zozbot234
There will always be a lot of use for large databases. PostgreSQL does provide
some under-the-hood features for doing distributed db's (such as the PREPARE
TRANSACTION extension) but the actual implementation work is left to the user
- there's no such thing as a "one size fits all" solution in this domain.

~~~
kumarvvr
Exactly, so, what use cases is Oracle best suited for, situations where
Postgres cannot be a good fit?

~~~
throwaway_pdp09
When you have a sore back from lugging around your wallet, and it needs
lightening for your own good.

Not that MSSQL isn't heading that way, and getting more weird and buggy all
the time.

------
yardstick
Anyone here use Patroni for automated high availability with postgres? Does it
“just work” or do you need a lot of housekeeping?

~~~
qeternity
We recently rolled out Patroni on k8s and it definitely does not “just work”.
I suppose once you get it up and running, there’s some truth to that, but it’s
one of the most hostile pieces of software I’ve come across. This isn’t a
complaint, after all, Zalando don’t owe me anything. But the documentation,
the project structure, the contributors...it all reveals very clearly that
this is really just some internal tooling that they happen to make public, as
opposed to a first-class OSS project. Unfortunately it’s also the best
Postgres HA system out there, but it’s truly a massive PITA to get setup and
it’s extremely opinionated about things that it doesn’t need to be.

~~~
CyberDem0n
Patroni was openly developed from day 0. The repo was created in early July
2015, but before that it was living as the fork of Compose Governor.

The Spilo docker container which packages PostgreSQL + Patroni was also always
publicly available from the first day. I agree, the Spilo is a bit opinionated
due to the way how it is used at Zalando.

These two projects have quite a long history and originally weren't even
targeted to be deployed on K8s because back in 2015 K8s wasn't absolutely
suited for running stateful workloads.

The most opinionated one is Zalando Postgres-Operator, and yes, first it was
the internal tooling and was solving our specific problems. Now I would also
argue that with such an amount of external contributors it already became a
way more general solution.

After all, Patroni is so general, that we call it a template for PostgreSQL
HA. You can take it and build something that you need/want without relying on
Spilo and Zalando Postgres-Operator. Speaking of Patroni@K8s, there are
already two very nice examples: Crunchy Data PostgreSQL Operator and StackGres
are both relying on Patroni for running PostgreSQL HA on K8s.

~~~
qeternity
Hi Cyber - yes I know it has a very active community, and you and I have
interacted on github before. But I find this response very similar to github:
it’s a template, so build whatever you like with it. That’s not what most
people want, and that kind of a reply reinforces my comment. I don’t use React
because I want a template for for building a reactive application. I use it
because it does all the things I don’t want to have to be concerned with. Like
I said, I don’t think any project needs defense. I thank you all for the work
you’ve done. But it is not the easiest bit of kit nor the most
helpful/inclusive community.

------
cannabis_sam
Using Oracle over PostgreSQL in public company is a breach of fiduciary duty.

------
raverbashing
The real surprising part of this benchmark to me is how quick it was to
compile PgSQL from source.

Is it pure C? Of course, building a DB is not something you worry too much
everyday (unless you're developing it), but it seems an interesting fact.

~~~
yxhuvud
Depends a lot on what machine you are using and how parallelized the compile
script is. Modern CPUs (threadripper 39x0Xs) can compile the Linux kernel in
under 30s. With that in mind, does is it really surprising that Postgres can
take 3.30m?

~~~
raverbashing
The Linux Kernel is probably more paralelizable than PostgreSQL (due to the
device drivers)

It would be interesting to know how long does that system that takes 30s for
the LK compiles PostgreSQL

------
downvoteme1
I seriously doubt that the author has 20 years of Oracle DBA experience yet
not know why Oracle takes up more disk space that Postgres. There are so many
features in Oracle for which there is no equivalent in Postgres.

-Sharding

-Java Pool

-Oracle Apex

-DB containers and pluggable databases

Many more that I am too lazy to list .

All of these come pre packaged with Oracle. If you are in an Organization that
has 1000s of Oracle db’s per org, you quickly understand that license cost are
a minute number but dba and developers are much more expensive .

~~~
kakwa_
License cost tend to be negligeable compared to the cost of devs,
dbas,sysadmins, etc, that's true.

But at the same time, it's a can be a huge speed bump in term of procurement.
Waiting several weeks for accounting to accept the procurement of a license
can really damage business or development speed.

It also adds significant admin load to track the license pool correctly and
can represent a legal risk when inevitably, someone starts exceeding the terms
of license (db size or db clones, or increase in hardware).

------
jmull
These don't seem like generally useful metrics for judging or comparing a
database.

Is this how experienced DBAs commonly see the world?

~~~
AdrianB1
Some of these things matter; they are not the main factor, but it something
you take in consideration in the bigger picture.

------
F_J_H
Meh.

We use Oracle's (newish) autonomous database offering, and haven't really
experienced any bugs at all. No worries about backups, very little DBA time,
and the on-demand licensing makes it quite economical. We just get on with it,
and couldn't be happier.

Of course, YRMV.

~~~
macmac
Have fun when Larry decides he want another yacht and his license goons come
by to exploit the lock in you gave created for yourself.

~~~
F_J_H
Yes, I was expecting this comment. A tired cliche I've been hearing for
years...

~~~
macmac
It is based on practical experience from multiple companies who ended up in
precisely this situation.

------
RivieraKid
It must be so depressing to work at Oracle developing the database - I imagine
the source code is a monstrosity.

------
th3iedkid
Is DB2 dead ?

~~~
Smeevy
My company uses it all the time. It's an absolutely rock-solid database and
I've never had any issues with it. They just released their new containerized
version a few months back and have recently simplified their licensing rather
significantly.

One of my favorite features is the "time travel" query. If you enable this
feature on one or more tables you can essentially say "give the results of
this query as it would have been at time x". I don't know if anyone else
provides that, but it's pretty great stuff.

~~~
jacques_chester
Bitemporalism a la SQL:2011 has been partly or wholly implemented by several
RDBMSes at this point. Off the top of my head SQL Server, Oracle and MariaDB
have it as well as DB2.

I'm looking forward to seeing it in PostgreSQL.

~~~
phonon
Check out
[https://github.com/arkhipov/temporal_tables](https://github.com/arkhipov/temporal_tables)
or
[https://github.com/scalegenius/pg_bitemporal](https://github.com/scalegenius/pg_bitemporal)

~~~
jacques_chester
I'm familiar with these and they are useful, but I would greatly prefer
mainline support using the SQL standard. A mainline implementation is far more
likely to lead to optimisations being made to the query planner, indices, disk
formats etc.

~~~
gurjeet
You may be pleased to know that someone is actively working on this. There was
a presentation [1] by the author Paul A. Jungwirth at this year's PGCon last
week.

[1]:
[https://www.pgcon.org/events/pgcon_2020/schedule/session/100...](https://www.pgcon.org/events/pgcon_2020/schedule/session/100-progress-
adding-sql2011-valid-time-to-postgres/)

------
lambda
I had a similar experience to this at an early programming internship while I
was in college 20 years ago.

I was working on some component and needed to add a new table to our database.
I was fairly new to SQL at the time, so I wanted to do some experimentation
and prototyping on my own, before submitting the schema changes to our DBA in
order to get them into the shared dev database.

Oracle did have a free trial version you could download for dev purposes or
learning or whatever, but like this mentions, it was slow and cumbersome to
set up that I soon decided it would be faster to spin up a PostgresQL
database, make any necessary changes to our schema and code to be compatible
with Postgres, and do my prototyping there, then submit the schema
modification request to our DBA. So that's what I did; it took a single
evening to do all of that in Postgres, even for someone who was pretty much
brand new to SQL.

After I submitted my schema chages for review, rather than emailing review
comments back, my DBA made me come down for a meeting to explain the issues.
Of course this was intimidating to me as a young itern; had I done something
so wrong that it deserved a talking to?

After all that, it turns out the issue was that I had ordered a VARCHAR column
before some other column of fixed width in the schema of the new table; and
apparently, it's preferable to order all fixed width columns before all
variable width columns in order to speed up the column accesses. I agreed with
the DBA that I could change the order of the columns, though I did have to
point out that this particular table was a table of worldwide regions like
"North America", "South America", etc, and that there would never be more than
5-10 of these, so any optimization of this particular table was likely
premature.

After all that experience; the complexity of just getting a dev environment
up, the fact that production instances cost somewhere around ~$50,000 per CPU
per year, the fact that we had a full time DBA who was spending a substantial
fraction of her job letting interns know that they needed to apply some
trivial optimization that you would expect such an expensive database to just
do for you automatically, I resolved to never touch Oracle again if I could
avoid it, and have had good luck in that I've never had to deal with Oracle in
any jobs since.

Funny thing was that the project I was working on was named "ASAP" which
officially had no expansion but unofficially stood for "Another Siebel
Avoidance Project", because we were actually using our Oracle database as a
place to dump information for which the primary store was Siebel, due to how
much more of a pain it was to interact directly with Siebel so doing a
periodic dump into Oracle and then building our API on top of Oracle was a
better choice.

------
tiffanyh
>” create stand alone database: ~30m”

Something is oddly wrong in his tests if it took him 30 minutes to create an
oracle database.

~~~
swarnie_
Go deploy a standard Oracle 19c multitenant database on windows server 2016,
time it, then come back and post results.

I bet its pretty close to 30m based on experience.

------
978e4721a
Is vacuumin postgres still basically means that you need downtime?

~~~
jojobas
Vacuuming is online, with some performance hit while it's underway.

~~~
tankenmate
The latest release has multi-threaded vacuuming so it goes much quicker these
days.

~~~
hrpnk
Aside of auto vacuuming, there is also VACUUM FULL [1] which does an exclusive
lock on the table. If you look for an alternative option for reorganizing
tables in online mode, try the pg_repack extension [2].

[1] [https://www.postgresql.org/docs/current/sql-
vacuum.html](https://www.postgresql.org/docs/current/sql-vacuum.html) [2]
[https://reorg.github.io/pg_repack/](https://reorg.github.io/pg_repack/)

------
dilandau
I'm not as familiar with Oracle, but surely it is providing significant
benefits or large organizations would be dumping it and running to more
reliable alternatives. These time estimates are also not very pertinent to the
actual running of a large database. Nor do they speak to the various technical
problems one has when running a big db that is mission critical.

Lots of the classic hn "how can they be so stupid?" comments. Give the cto's
more credit. Just because you write JavaScript and used mongodb once does not
make you an expert on Oracle or running a very large business.

~~~
philjohn
It's still used in a lot of places because either some bought in ERP system
requires it, or because internal software was developed on it WAY back when,
when either Postgres didn't exist, or didn't have as many features and no
companies providing paid support.

They now have a problem - and it would probably cost more than the yearly cost
of Oracle to migrate.

------
redis_mlc
1) FYI: Oracle Enterprise is basically dead in Silicon Valley for new projects
(because it doesn't scale financially.) Every Oracle DBA I know transitioned
to MySQL over a decade ago, and they look at you funny when you ask about
Oracle.

2) Oracle Enterprise is free to use for dev/qa, but each prod instance costs
money.

3) The contraint on publishing benchmark results is not what devs think. It's
to prevent poorly conducted bm efforts, not really to hide anything. A vendor
can't run around defending itself against non-DBAs doing benchmarks. Most of
the links to results on HN admit, "We tuned our fave database, and used the
defaults for the other database." Seriously.

Having said that, you can publish benchmark scripts, which is what MySQL did.
That script moved the whole industry forward wrt reliability and performance,
as MySQL was the only database that could pass initially. :)

Source: DBA.

------
BossingAround
We could sum up the post as:

"I don't like Oracle DB because:

\- "Takes up more space

\- "Is slower to start/stop/init

\- "Is not free

\- "Has bugs"

Umm... Sure, Oracle's slower to start/stop. Sure, it takes up more space. So
what though?

And then, "it has a lot of bugs and that causes downtime." Would be great to
list some examples. All software has bugs.

Why is this on the front page? Does it have any value what so ever other than
"someone found a free alternative to Oracle DB"..?

~~~
pstuart
You took time to criticize the post for being upvoted despite not being deep
enough / giving enough examples.

It's likely upvoted because most of us in the industry have _no_ love for
Oracle and confirmation of that bias feels good.

Turnabout is fair play:

Why don't you give some examples of why a startup doing a greenfield project
should use Oracle today?

~~~
abraae
Data point of 1 - we use Oracle in our greenfield platform (in 2018). My
reasoning:

\- our engineers already know Oracle (this is absolutely reason #1). We don't
need to get into religious wars about software, just to write good code
quickly.

\- Oracle is cheap enough for our needs. The price of an oracle RDS instance
is immaterial in the grand scheme of things. We are saas so our customers will
never be installing our software.

\- noone ever got fired for buying Oracle. When our customers security teams
grill us, running on Oracle and Java ticks one box on their spreadsheet. Same
is true if we get acquired.

\- Oracle is hugely scalable. Even if/when we get super big and successful, we
won't need to change our database - there's always a bigger Oracle instance.

\- Oracle is insanely reliable. In my career I've never seen data loss on
Oracle that was not caused by human error. I totally trust that that will be
the case going forward as well.

\- as a company, oracle's not going away.

I'm sure some of these apply to postgres as well - but your question wasn't
"which is better", which is a much harder question to answer.

~~~
vbezhenar
I can't say that I saw data loss caused by Oracle. But I saw plenty of cases
where Oracle required manual intervention to be able to start up after
something gone wrong. I never understood why Oracle does not self heal,
because those interventions were obvious. I don't have much production
experience with other databases, so I can't comment about that, but it was
sometimes as simple as power loss which caused Oracle failing to start until
you run some mumbo jumbo from sysdba.

