Every time I use Oracle, I regret it.
Just this month, I tried to hook it up to a modern .NET app with the latest Oracle client and discovered that if you cancel a transaction, the connection enters a broken state and is returned to the connection pool, "infecting it". After a half a dozen of those, the whole app server just dies with endless cancellation related exceptions. This isn't even the only such bug, apparently there's a whole family of pool-corruption bugs that have workaround config settings and everything!
This was with version 23.26.301 which suggests that they've had a lot of major releases, bug fixes, etc... but basic functionality like "connect successfully to the database server every time" is totally broken and has been for many years.
The issue tracker forums have tumbleweeds rolling through them and play the sound of wolves howling in the distance to provide just the right kind of "what are you still doing here?" ambiance.
You are not forced to accept them.
Back in the late 90s, Oracle RDBMS was the "won't get fired for buying" RDBMS. It's been downhill ever since. Once Postgres got partitions, it was over.
Oracle still had a market for high availability clusters for a while, but the increasing performance of single servers and SANs and finally cloud services made that redundant.
So Oracle have spent the last 20 years being bastards about licensing, squeezing their existing customers while the customers do their best to migrate somewhere else.
That's like selling or renting you a car and disallowing you from saying bad things about it, or to tell others the horsepower or max speed.
My handle notwithstanding, I'm smart enough to not take legal advice from HN but nonetheless I cannot stop myself hence the rhetorical question: how is a EULA clause like that even enforceable? If this isn't going against freedom of speech then this surely it's against some consumer protection laws?
The cynical answer to that I guess is "a lot of money funding a legal team the size of a warlord's militia" and also "lobbying" but even then it doesn't track to me that this clause could have even that much of an effect as a scare tactic?
The EULA is enforceable because you have to agree to it to use the software, and Oracle has large and well financed legal team who will descend from a great height on you and anyone who publishes the results of you doing performance testing.
The licensing laws around copyright have been developed over the last few centuries. They can be changed.
But until they are, the limits are what they are. Currently, Oracle can put conditions on benchmarking and publishing the results in their license and its not only legal for them to do so, but they have prevailed in court when enforcing those conditions.
In the EU (and still the UK since they've not changed the law since) you have the right to benchmark software.
However, it doesn't include the right to publish the results, so you can only do it internally for Oracle and any software that has similar clauses.
It's not the government restricting your right to speak (1st amendment in the US), it's a private corporate "person".
If you don't like the conditions of the license, you can do one of three things:
1. Don't use the software
2. Use the software in violation of the license, and face the consequences if the copyright owner takes action against you.
3. Get the laws of copyright changed so that conditions about publishing benchmarks is not allowed to be removed by a license.
There's no "meeting of minds" and there's no exchange of value if I simply benchmark a piece of software and then don't use it any further.
This is a bit of a grey zone legally, and steps all over a bunch of consumer protection laws, free speech laws, etc... depending on the jurisdiction.
IMHO governments should explicitly ban these "gag clauses" because it prevents free market competition if customers are not allowed to benchmark software and publish the results.
However they haven't, so until they do, you're stuck with the license as is.
As for "meeting of minds" etc and exchange of value, that's irrelevant to the conditions of the license. It's not a contract. It usually starts off with something like "By using this software, you agree to the following terms...".
Basically ToS can't overrule the law, but the law doesn't seem to limit much what can be put in ToS, so abuse will always end up in court.
The problem is that the consequence of this is this filters significantly in favor of the company which complaints are worth taking to court, given that these companies have legions of lawyers on payroll.
Oracle isn’t the government, they have the freedom of association which means they are under no obligation to license their database to you.
NDAs are well established law, you could view this a very limited in scope NDA.
Back in 2018, a former Oracle developer explained what it was like working on Oracle DB: https://news.ycombinator.com/item?id=18442941
> Here is how the life of an Oracle Database developer is:
> - Start working on a new bug.
> - Spend two weeks trying to understand the 20 different flags that interact in mysterious ways to cause this bag.
> - Add one more flag to handle the new special scenario. Add a few more lines of code that checks this flag and works around the problematic situation and avoids the bug.
> - Submit the changes to a test farm consisting of about 100 to 200 servers that would compile the code, build a new Oracle DB, and run the millions of tests in a distributed fashion.
> - Go home. Come the next day and work on something else. The tests can take 20 hours to 30 hours to complete.
> - Go home. Come the next day and check your farm test results. On a good day, there would be about 100 failing tests. On a bad day, there would be about 1000 failing tests. Pick some of these tests randomly and try to understand what went wrong with your assumptions. Maybe there are some 10 more flags to consider to truly understand the nature of the bug.
> - Add a few more flags in an attempt to fix the issue. Submit the changes again for testing. Wait another 20 to 30 hours.
> - Rinse and repeat for another two weeks until you get the mysterious incantation of the combination of flags right.
Seems like their comment is still valid today.
https://learn.microsoft.com/en-us/sql/t-sql/database-console...
See: https://github.com/dotnet/SqlClient/issues/767#issuecomment-...
"So, let's say you created a new pooled connection and closed it, driver will pool this connection but the physical connection is already active on server side. When the driver reactivates this pooled connection, it's only done on client side by taking it out of pool stack and setting it's state Active. But when next query is executed, we ensure a "RESET" bit is set in TDS header with next command on this newly reactivated pooled connection to cleanup any stale state, as per standard behavior."
Oracle requires an opt-in(!) flag that is incomplete and configured on the server instead of the client, which is a "special" kind of nonsense that I have no patience for: https://docs.oracle.com/en/database/oracle/oracle-database/2...
But polluting the poll with unusable connections is just Oracle copying the MS-SQL's thing. The C# recommended coding practices will automatically deal with this. (Not that you would want to follow them, but you may want to look and copy this part.)
Got a reference for that?
Hard disagree. Oracle's database will always live in my mind as a complete waste of money. Some con-man, I'm sorry salesman, sold a previous (idiot) executive on it at a previous company I worked for. The exec was long gone and lots of time was wasted trying to adapt our application (that used MySQL) over to Oracle until we finally pulled the plug. But not after spending hundreds of thousands of dollars on time and equipment. We re-purposed the hardware into effectively a big NAS.
I’ve heard that at least the Oracle client is not as bad these days.
My guess would be the cause is unreasonable corporate pressure for productivity, so if this is the case the natural answer would be to give people more time to think about architecture, create incentives for group studies and laboratories and remove incentives that lead to the so called "résumé-driven development"
AFAICT the only thing Oracle has over established FOSS DBs is vendor support and the only thing Oracle has over established FOSS vendors like Percona is a ginormous marketing budget. I'm always grimused when I see Oracle product placement in the MCU.