views:

1141

answers:

9

I'd like to know what are the differences between Access and Oracle.

+5  A: 

What are the differences between Microsoft Access and Oracle?

Difference One: Access is a small database system, which will allow you to create a small-medium sized database with minimum security features. Oracle can be integrated with NT security, which gives tight control over who can and cant get to your data.

Difference Two: Access is a lot slower over networks as all the processing is performed on the client machine, whereas with a large DBMS like Oracle (Or SQL Server), you send only a query (such as "SELECT * FROM Customers WHERE CustID=23;"), and only the required results are returned. If you ran this across a network with Access, all the records would be sent across the network, leaving the client machine to select the required record.

Difference Three: Access gets really slow if you try to connect more than 10 users (depending on the size of the DB and how it is being utilized), where are Oracle can accept hundreds/thousands of simultaneous connections (Depending upon the server it is sitting on).

The final major difference is that of triggers and stored procedures. Access can NOT store procedures which can be executed remotely. You can write functions and with a bit of "jiggery-pokery" get the server side to execute them vy setting flags or something in your database and getting the server to check at pre-defined intervals if the flag is set. With Oracle/(Other Large DBMS's) you can call the stored procedures and they will be executed on command on the server side. Triggers are like events on an Access form, such as "After-Update". When you update a record into Oracle, you can set triggers to automatically run procedures to check for pre-defined rules or whatever.

from here

rahul
". If you ran this across a network with Access, all the records would be sent across the network," This is utterly wrong. If there is an index on CustID then only the index pages and the pages containing records with CustID=23 will be returned. Not "all the records" That said a server system will be significantly more efficient in terms of data sent down the wire.
Tony Toews
"Access gets really slow if you try to connect more than 10 users " is also wrong. I have clients with 25 users happily using an Access backend. And this is with a system with 800K records in a few tables.
Tony Toews
Actually Microsoft Access object security is complex and not for the faint of heart. Given that anyone can download the data MDB/ACCDB and poke about as much as they want, unlike server based DBMSs such as SQL Server and Oracle this, it's definitely one of the poorer systems available. Not recommended.
Tony Toews
I agree with Tony on both points. This answer is technically inaccurate.
JohnFx
@Tony Toews: "object security" -- does this apply to ACCDB? User level security certainly does not.
onedaywhen
+2  A: 

Difference in what terms?

Access is a database provided by Microsoft. Oracle is a database provided by Oracle corporation.

Refer to this link for a detailed discussion for differences in how they implement SQL.

Abhay
+3  A: 

One is a heap of rubbish, and the other one is from Microsoft.

No, seriously, someone set me straight if I'm wrong. Can Oracle tell the difference between an empty string and a NULL yet? I'd really like to know.

Ah, my beloved DB2 ;-)

paxdiablo
Hey, if you're going to vote me down, at least have the guts to explain why. NULL handling is actually a real difference between them.
paxdiablo
True. I upvoted to keep the balance.
ZiG
Empty string is just a shorter way to write to_char(NULL). I find that useful. Next thing you know - people will start demanding that there should be some kind of "empty number" constant that is not 0 and not NULL either. And could you please give us some "empty date", too?
jva
It may be useful but it breaks the SQL standard, There *should* be a value representing NULL for *every* datatype that is distinct from every legal value.
paxdiablo
The first SQL standard wasn't published until 1987, eight years after Oracle was first released in 1979. The world is just playing catch-up ;)
David Aldridge
SQL Server and ACCESS also has some funny decissions. In fact. Null == '' is quite logic. Null can mean not exists or unkown. For example, if you put '' in a name field you really mean null. Appart from that, saing that this is the main difference is like saying that the difference between a Corolla and a Tomcat is mainly that the corolla has a place to put your coke. May be the Tomcat has some hard maintaing issues but there are very different tools.
borjab
Actually, when I put "" in a name field, I mean for my CHECK constraint to fire, telling me I have an invalid name. When I want NULL, I use NULL. A zero-length string is not the same thing.
John Saunders
A: 

Adding on to the previous answers, another major difference with Oracle and MS Access is concurrency. Oracle as well as MySQL and postgreSQL and some others can handle multiple 'transactions' and 'commits' Basically, if you use a database with a website, a more secure and stable database would be Oracle, likewise an application.

If you use MS Access, you're likely to run into problems with a lot of web traffic, especially if the content in the database is being written and updated by multiple people.

Oracle and the like can be scaled to very large sizes....think Myspace or a Country's financial system (ERP).

calweb
+3  A: 

Again, a thread in which all the answers miss the point.

Access is a development tool for creating database front ends.

Oracle is just a database, not a development tool (though it apparently now ships with a set of development tools, that doesn't change the fact that Oracle is still a database, not a development platform).

Perhaps you think your question is about two database engines, but as written, it's like asking "what is the difference between an automobile and a restaurant?"

Of course, Access ships with a default database engine, Jet/ACE, and it's likely that's what you mean to be asking about. I certainly can't blame some people with only casual contact with Microsoft products for failing to know this, as Microsoft has obfuscated the distinction between the two, both in its documentation and in its naming of the data providers that you have to use in connect strings.

But that's no reason to remain ignorant.

Key differences between Jet/ACE and Oracle (or any database server):

A. with Jet/ACE there is no server-side process managing and martialing client data requests. All clients to a Jet/ACE database are operating directly on the file, using a locking file. This means certain things:

  • data in Jet/ACE files can never be as secure as the data stored in a server database.

  • Jet/ACE will pull more data across the wire (it needs metadata and index pages in order to request the desired data pages from the file system), although with proper indexing and query design, it's not nearly as inefficient as the anti-Access bigots would like to believe.

  • Jet/ACE has no transaction logging, and because its data file is being opened simultaneously by multiple users, is open to the risk of corruption.

B. Oracle is significantly more expensive to deploy and maintain than a simple file-based system like Jet/ACE. This means that:

  • For small businesses with small user populations and no significant security issues, a Jet/ACE back end can be perfectly suitable, assuming a properly-designed front end and proper deployment (e.g., splitting front end/back end, not sharing front end, etc.).

  • Some businesses are small enough that they don't have a dedicated server on which to run a behemoth like Oracle. No doubt Oracle has a desktop version, but it's inadvisable, in my opinion, to run a program like that on anything other than a dedicated server, since user operations could interfere with the reliability of the database back end.

  • Because of the tight integration between Access as front-end development tool and Jet/ACE, it's significantly easier for non-technical users to put together useful database applications without needing to be an expert on Oracle (or SQL Server or whatever).

So, ultimately, choosing between a server back end and a file-based solution like Jet/ACE is going to depend mostly on how valuable in terms of money the increased security, scalability and reliability of a server database is. For any number of small businesses, there is really no contest -- Jet/ACE wins hands down.

But there are a lot of applications out there that have started life with a Jet/ACE back end that really ought to be upsized to a server back end. Oracle doesn't seem to me like a very good candidate for that unless the upsizing is being done within an organization that is already an Oracle shop. SQL Server Express seems to me like the much more natural upgrade path for such an app (though it has a 4GB limit on the total size of the database, so you're not gaining all that much over Jet/ACE's 2GB limit), and one could certain consider open-source databases like MySQL and PostgreSQL that are entirely cost-free in terms of licensing.

The little old lady doesn't need a Mack truck to drive to church every Sunday morning. Likewise, the farmer shipping potatoes cross country would be wise to use something other than a Toyota Yaris. But the Yaris may be perfect for the little old lady, and the Mack truck exactly right for the farmer shipping his potatoes.

It's all a matter of picking the right tools for the job at hand.

David-W-Fenton
Actually, the latest version of Oracle comes with a built-in web based development/runtime environment called Application Express.
Gary
"Oracle is just a database" -- look at the Wikipedia page for the Oracle Corporation (http://en.wikipedia.org/wiki/Oracle_Corporation) or do some proper research into the product range that Oracle offers. No need to remain ignorant ;)
onedaywhen
"Access" = application development platform with default database engine (Jet/ACE). "Oracle" = enterprise server database with development tools bolted on. One is not like the other.
David-W-Fenton
A: 

A quick summary:

Access is cheap, simplistic, lightweight, but inflexible and historically buggy. Oracle is expensive, heavy, has no front end but sophisticated and well tested.

Jay
Access is also apparently something you have no direct experience with given your answer.
JohnFx
Oracle now ships with Application Express, a browser-based development/runtime environment.
Gary
Access is not buggy.
Seth Spearman
Access was so bad that I had to recommend to the users that they make daily backups. Approximately every third time they opened it from a network drive it would eat the database file. It could not be recovered using the provided recovery tool. Just the fact that it comes with a recovery tool built in is a clue that it crashes. Thanks for the lovely kind comments JohnFx. I hope your users treat you just like you treat others.
Jay
A: 

A.) Oracle to Access is like Unix to Windows 95. B.) Thousands of Dollars C.) Access has a database engine, and application front-end, hooks into other Office Apps and that paperclip thingy. Oracle has a command prompt and a blinking cursor with a big ass database behind it that can process more data than God and/or Larry Ellison.

Jeff O
FWIW only Access 2000 enabled Clippy by default.
Tony Toews
+3  A: 

I can't beleive no one has said it yet....

About $400,000.

JohnFx
Oracle has a free Express Edition, and Standard Edition is a couple of thousand dollars (and you don't need a Windows license to run it).
Gary
Made me laugh though because I'm old enough to remember when this was true :)
onedaywhen
That's good to hear. The last time I priced it (2000ish) their sales guy said they had "entry level pricing" and could get me set up for ONLY $350K, but of course that would get more expensive after we started signing up a lot of clients to use our app.
JohnFx
A: 

Turn the question around: what do Access and Oracle have in common?

  1. They both store data logically as rows, columns and tables (so-called 'relational' but not truly relational).
  2. Erm...
  3. That's it!

The Access database engine is a nifty file sharing system with a SQL-style data gateway; not truly SQL because, although some of its ANSI-92 Query Mode resembles the SQL-92 Standard, other areas are nowhere near compliant.**

Oracle is an industrial-strength server database management system with a high degree of compliance with the SQL Standards plus extensions (tiggers, procedures, etc).


** The SQL Server team wanted to make Jet SQL-92 compliant for the Jet 4.0 release in the late 1990s but were overruled by the Windows team because doing so would have broken internal Microsoft systems that had been coded on assumptions e.g. the quirky way that OUTER JOINs work where the ON and WHERE clauses are not distinguished between. It was later made Microsoft 'law' that code written against one version of Jet would be guaranteed to run against all future versions of Jet. I assume this is why from Access2007 the engine is no longer Jet but now ACE: the Access team couldn't develop Jet because of the 'law' so they started anew with their private branch of the engine code. So don't go calling ACE 'Jet', it is decidedly not Jet for very good reason! That said, most (all?) of the changes to the engine for ACE 2007 was for SharePoint integration (multivalued types, attachment type) and not qualms about ditching functionality they did not need (replication, user level security). So there's another difference: whereas Oracle arguably develop products for end users, Microsoft change (or prevent change) to the Access data engine for their own internal purposes then peddle it on (or force their decisions upon) MS Office Access users ;)

onedaywhen
Every database engine has its own SQL dialect. The older the db engine, the more likely the SQL dialect is to have weird variations. Jet/ACE predates the SQL92 specification, and even the SQL89 spec was in a state of flux at the time the first version of Access was introduced. All db engines have this kind of history. Criticizing Jet/ACE for exhibiting the exact same characteristics as other engines is simply unfair.
David-W-Fenton
I think your description of the relationship between Jet and ACE is exactly wrong. It was the Access team that wanted to fork Jet in order that they could develop it for the purposes of Access the application, as opposed to being yoked to the needs of the Windows team (which wanted Jet frozen at the 4.0 level, because of the dependencies on it in Windows).
David-W-Fenton
Calling replication and ULS useless shows that you are completely ignorant of the important uses those features have. Sharepoint is no replacement at all for replication and the database password is completely useless. While Jet replication is difficult to use and manage, it enables important applications (e.g., laptop users who need to edit data in the field disconnected from any network). While Jet ULS was breakable and complex, it as still quite useful as long as one understood it wasn't locking your data up in a way that was invulnerable to hacking.
David-W-Fenton