views:

1246

answers:

11

I've worked on a variety of systems as a programmer, some with Oracle, some with MySQL. I keep hearing people say that Oracle is more stable, more robust, and more secure. Is this the case?

If so in what ways and why?

For the purposes of this question, consider a small-medium sized production DB, perhaps 500,000 records or so.

+20  A: 

Yes. Oracle is enterprise grade software.

I'm not sure if its really any more stable that mysql, I haven't used mysql that much, but I dont ever remember having mysql crash on me. I've had oracle crash, but when it does, it gives me more information about why it crashed than I could possibly want, and Oracle support is always there to help ( for a fee ).

Its very very robust, Oracle DB will do virtually everything it can before breaking your data, I've had mysql servers do really weird things when they run out of disk space, Oracle will just halt all transactions, and eventually shutdown if it can't write the files it needs. I've never lost data in oracle, even when I do stupid things like forget the where clause and update every row rather than a single row, its very easy to get the database back to how it was before screwing up.

Not sure about security, certainly Oracle gives you lots of options for how you are going to connect to the DB and authenticate. It gives lots of options regarding which users have access to what, etc. But as with most things, if you want to take security seriously, then you need an expert to do it. Oracle certainly has a lot more to lose if they don't get security right. But, as with all things there has been exploits.

If nothing else, just consider this... When Oracle stuffs up, they have customers who are paying $40k per CPU (if they are suckers and pay list price) license + yearly maintenance fees.. This gives them a very strong intensive to make sure the customers are happy with the product.

For a small database, I'd seriously recommend Oracle XE well before mysql. It has the important features of mysql (Free), its dead easy to install, comes with a nice web interface and application framework (Application Express), if you DB will happy run on a single cpu, 1gb ram and 4gb data, then XE is the way to go IMHO.

Mysql has its uses, many many people have shown that you can build great things with it, but its far behind oracle (and SQL Server, and DB2) in terms of features... But then, its also free and very easy to learn, which for many people is the most important feature.

Matthew Watson
Plus, XE is free for commercial deployments, whereas MySQL is not free for commercial use.
MetroidFan2002
What features are missing in MySQL that are present in Oracle and the other database systems you mention? I haven't used Oracle enough to know, but a claim that MySQL is "far behind" seems a bit over the top without any concrete examples.
Randy
Off the top of my head, database links, queues, materialized views, flashback, data miner, parallel queries, snapshots, virtual private database, fine grained audit, database level triggers, table partitioning, tablespaces, and likely much more.
Matthew Watson
+1  A: 

Oracle is a lot beefier. Many of its features would only be looked for in a larger enterprise or high-performance setting. They're mainly features to do with scaling, replication and load balancing.

For small DBs, consider SQLite. For small-medium, look at MySQL or PostgreSQL. For the largest, look at MSSQL, Oracle, DB2, etc.

Edit: Having read the other answer, I'll add that if your data is really, really critical, you'll want a replicated setup and you'll probably want to look to one of the big DB providers for something like that.

If you can sacrifice potential (exceedingly rare) data losses and would prefer improved performance, look at some of the lighter-weight options.

Oli
+3  A: 

I have a project that sends data (~10M rows, 1.2GB of data) to three different databases, 2 Oracle and 1 MySQL. I haven't had problems working with either system, nor have I seen any major advantages on either side. If you're in a place that already uses Oracle for other projects, adding on one new database shouldn't be too much of a problem, but if you're thinking of setting up a new database server and don't have anything in place already, MySQL will save you the money.

Randy
+2  A: 

The answer depends entirely on how you configure each DBMS. Both are capable of handling 500,000 records many times over.

Seun Osewa
+2  A: 

Oracle Enterprise assumes that there is an Enterprise to support it, ie, a real Oracle DBA. A novice (but competent) DBA should be able to secure MySQL much more easily than Oracle, just because Oracle is inherently more complex. Of course, Oracle has the Enterprise monitoring tools beyond what MySQL currently features (as far as I've seen) but the DBA needs to be able use them to be effective.

Such a small database as you describe could be handled by most anything so I can't see that Oracle would be warranted unless the infrastructure was already in place. Both have replication, transactions and warm-backups so either would serve well.

igelkott
Yes this is certainly true, If you are running Oracle EE ,you'd likely want a real DBA managaing it, but then again, if you are using the features of Oracle EE you'd likely want someone that knows what they are doing. Oracle XE on the other hand is perfectly manageable by just about anyone.
Matthew Watson
+5  A: 

I've had Oracle create a corrupt database when the disk ran out of space. It's hard to debug, uses loads of resources and is difficult to work with without seriously skilled DBA's holding your hand. Oracle even replaced system binaries (e.g. gcc) in /usr/bin/ when I installed in on an occation.

Working with PostgreSQL, on the other hand, has been much more pleasant. It gives readable error messages and acts in a more understandable way if you're used to work with open source *nix systems. It's quite easy to set up replication, thus making your data fairly secure.

neu242
+4  A: 

A 500K record database can probably be run on your mobile phone. Seriously, it's so small that both Oracle XE and MySQL will be more than sufficient to manage it.

Andrew from NZSG
+3  A: 

Oracle is a beast that really needs DBA knowledge. I concur with those who say 500k records are nothing. It's not worth the complexity of Oracle if it's simple numeric/text data.

On the other hand, Oracle is extremely efficient with blobs. If each of your records was a 100MB binary file, you'd need a fortune to run it on Oracle (I'd recommend a 3-node RAC cluster with a good SAN).

Osama ALASSIRY
+1  A: 

One Word: YES!

Osama ALASSIRY
A: 

I'm using Oracle/SQL Server/MySql for different applications and site

No Database beat can Oracle in many different area, but it's the most database that require deep knowledge for the administration.

and if you found a problem with oracle, may spend few times to solve it even with good DBAs guys.

You can go with MySql for 500K or millions of records, it's more light than other DB, and require zero administration work, and will not take a lot of your computer resources, I always have it in my development PC, and never had faced any serious problem with it.

I would require you go with MySql or PostgreSQL if you don't need the advanced featuers of Oracle.

Mohammed Nasman
+3  A: 
  • for smallish DBs (a few million records), Oracle is overkill
  • you need an experienced DBA to properly install and manage an Oracle system
  • Oracle has a larger "base overhead", i.e. you need a beefier machine to run Oracle
  • the "out of the box" experience of Oracle used to be atrocious (i haven't installed an oracle system in years; no idea how it currently behaves), while mysql is very nice
mfx