- Shared-something database clustering - true scale-out database clustering without writing sharding logic into your application, worrying about hot spots, or sacrificing significant performance due to overhead
- query offload to storage for bulk reads
- Flashback - someone wrote a bad update that might have messed with some data? You can tell the database to set your view of the database back to before that update to verify, and then decide if you want to move the whole database back, or just extract the records that were changed by that query
- fine-grained permissioning - have a table with credit card numbers in it? Give everyone access to it, but the credit card numbers are all obfuscated
- replication - block-level? statement-level? real-time? real-time with delay? Whatever you want. In fact, you can say "Hey, replicate this database to another datacenter, don't make it synchronous, but don't let it get more than 10 minutes out of sync"
- also, btw, when you need to failover that database, if you're feeling really brave, oracle can do the whole thing for you automatically, because their database client will notify a watcher that a majority of them have lost the necessary access to the database, but can talk to the standby, and the watcher handles the failover
I could go on and on. There's just so much intelligence in the Oracle database platform. Would I ever pay for it? No, it's better to build applications that don't need that level of sophistication. But if you're a big company who doesn't want to write software to be smart about data storage and recovery, Oracle does an amazing job at just guaranteeing your data won't go away.
On the business apps side of things, I think their software is mostly terrible, but I also think that they do focus on problems that OSS typically has not. If you are a manufacturer of satellites, there is probably not an OSS ERP solution that will work for you. If you need to store 300,000 personnel records, there's probably not an OSS HCM solution for you.
None of this means that they're not eventually doomed nor that they're not shitty, but it is very fair to say that their software deals with hard problems that OSS has not typically focused on.
I think you can add to this the fact that Oracle has been hardening the platform and building/fixing edge cases for 30 years. This goes a long way to preventing procurement departments from moving away from the "no-one got fired for buying <dinosaur-x>" model.
I heard a crazy stat that 99% of Oracle's business ($36B revenue, $9B profit) comes from the top 0.01% of customers (basically the US Govt and the Fortune 10). The average OSS start up is not going to materially affect this.
The real problem (solvable with tech? maybe?) is changing the culture in which big orgs evaluate and procure IT. Otherwise Oracle will just be an attractive exit for startups rather than competition that can be threatened...
That's almost certainly not true, given my experience with Oracle's business. I think it's fine to say that 90% of Oracle's business comes from the Global 1000, but I know what some F500 bills from Oracle were, and they were in the $100m-$200m/year range, so you need a much broader spread to get to 36b
I have moved a bunch of companies from MySQL/Oracle to scalable key-value stores having much better operational characteristics than the SQL ones. Was it hard? Hell yes, we had to educate developers about not having transactions, network partitions, order of operations and a bunch of things that solutions like OracleDB hides from you. Was it worth it? Absolutely, we had 99.99% yearly uptime while the previous SQL based solution was somewhere in the 90.00 - 95.00 range. Did we save money? Absolutely, the licensing cost and the fact that we do not need beefy boxes around payed off. Is this relevant to the subject as Oracle is in trouble or not? I am not sure. If the most of money coming from the government and fortune 100 than probably not.
I am in the same boat like other here on HN, I prefer to build systems myself that I understand 100%, and trying to avoid using technology like Oracle as much as I can based on the experience with support and the pricing. Again, I mostly work with startups and companies where the budget cannot be blown on SQL licenses.
The biggest caveat for oracle and other proprietary solutions is the /dynamic/ licensing/pricing models having an effect on architecture based on disk, cpu and other paremeters.
With OSS solutions, postgres/mariadb etc I have the flexibility of deploying as many nodes, disks, cpu, machines as I want without thinking of how will effect the price, and without worrying of a sales organization tracking my use. That's why I don't worry about clustering, partitioning, linking and many other features lacking.
If I'm going to plan for 100M to 2B monthly active users for a growing organization Oracle/Ms SQL aren't an option at all. For small scale of up to 10K users, they seem to have a use case for "legacy" organizations.
#1: Training. Oracle does training very well. If need new DBAs in-house (for security reasons etc), they got huge array of options available. The most effective options are also insanely expensive. Once paid 400k€ to get two new DBAs. They became very good at it.
#2: Clustering. Postgres is nowhere near what Oracle offers. Even with the newest releases. What Oracle offers is real multi-master synchronized replication with proper distributed locks, low latency, and it's maintainable and easy to setup. Postgres has still 5-10 years to do before they will reach feature parity on today's Oracle.
In addition to your list above I would also like to mention partitioning. it is available now in Postgres but it is much weaker than what Oracle offers, although it does improve with every release. I would love to see row movement in Postgres.
Coming from an Oracle environment and now working primarily with Postgres I notice that Postgres is much nicer to developers where Oracle seems much more oriented to DBAs. Oracle has nice tools around things like partitioning and sharding but it doesn't even have a boolean datatype! Postgres has a full selection of datatypes, indexes and handy functions like row_to_json().
I've heard things about their business apps division (business problems) and I can't say I particularly believe in their future there versus smaller focused companies.