Now I know there's a thousand and one things Oracle can do that MySQL can't but MySQL is slowly getting there, and definately they are learning from Oracle.
According to eWeek, MySQL already runs as fast as Oracle ( here ).
What I think Oracle could learn though is how to make web developers love them. Web apps have slightly different requirements on databases than LAN based distributed applications and there are a number of common problems you need to solve, which MySQL is geared to but in Oracle is real pain to solve.
For example, say I want a "page result set" (like the "Page 1, Page 2 ... Next" stuff you commonly get on search engines).
In MySQL you might have a query like this;
To do the same in Oracle we're talking;
SELECT col1, col2 FROM table ORDER BY col2 LIMIT 50, 10
That means loads more coding in my script (php).
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY col2) RN, col1, col2 FROM table ORDER BY col2) WHERE RN BETWEEN 50 AND 60
Also, there seems to be some problem getting Oracle to tell you how many rows were returned in a SELECT (see OCIrowcount) which is easily done in MySQL ( see mysql_num_rows). That basically forces you to run a query twice, first as a count(*).
There's also grief with things like LONG column type is Oracle, which I've yet to entirely pin down but in MySQL you have TEXT / BLOB and never need to worry about it.
Now I'm no Oracle guru, and perhaps I'm missing the point. But things like these, combined with Oracles myriad of useless GUI tools to "help" you administrate your database (compared to phpMyAdmin and powerful command line tools) really turn me off.
I realise that Oracle is far more powerful, when you take into account pl/SQL and all the stuff like the v$tables for monitoring what's going on on the database but the point is it takes someone perhaps a few weeks to get to grips with MySQL while with Oracle - a few months / years?
I'm working with Oracle 8i btw, so may be newer versions have improved.