Skip to main content

Why Oracle over Microsoft SQL Server?


Why Oracle over Microsoft SQL Server?

* What are the differences in terminology between MS-SQL and Oracle?  I also understand that SQL Server is far less flexible and robust than Oracle and I hope to know those features that I will not have in SQL Server?

Answer:  Oracle is the world's most popular database primarily because it runs on every platform known, from a mainframe to a Mac.  MS-SQL on the other hand, is a Windows-only offering.  Both SQL Server and Oracle are relational databases, but it is their genealogy that tells about their core differences:
  • SQL Server:  MS-SQL grew-up running tiny, departmental applications on personal computers.  Microsoft is trying to "push up" into the mainstream market, running SQL Server on super-large servers that run Windows.

  • Oracle:  Oracle is a mature database with a decade head-start on MSSQL in terms of specialized features.  While SQL Server has tried to "push up" into the Corporate database market, Oracle has made "simplified" releases of Oracle (i.e. Oracle XE) to "push down" into the realm of departmental computing to complete with MS-SQL.

Why does Oracle have to be so hard?

One of the most common questions asked by a SQL Server DBA is "Why does Oracle have to be so hard?".  Any robust and flexible database must, by definition, be complex, and Oracle is complicated because Oracle allows you to fully control every aspect of RAM and disk storage.  Unlike SQL Server, Oracle allows you to control exactly where rows are placed on the data blocks and control almost every internal machination of the RAM regions. 


The complexity of the database engine also reflects in the salaries for Oracle DBAs vs. SQL Server DBAs.  As of 2011 the average salary for an experienced Oracle DBA was over $100,000 per year, while a SQL Server DBAs earn a fraction of that salary.
Here is a visual of the differences between Oracle and SQL Server:
OracleSQL Server
Flexibility

Oracle is the Swiss Army Knife of relational databases.


SQL Server is lean and easy to use with lots of one-size-fits-all applications.

SQL Server has only a few dozen tuning knobs while Oracle has hundreds of parameters.

This makes SQL Server less robust, but far easier to use.

A comparison of SQL Server and Oracle Terminology

While both Oracle and SQL Server are ANSI compliant databases, they are vendor products and the developers have a vested interest in making their database competitive.  Some of the terminology differences between Oracle and SQL Server include:
  • Logical data storage terminology:  In many RDBMS applications, the Device Media Control Language (DMCL) layer provides the mapping between the physical data files and the logical table/index storage areas.  Oracle, DB2 and other RDBMS products call this logical storage a "tablespace", but SQL Server uses the term "page" and "file group" to refer to a unit of storage.
  • Data Blocks:  Both SQL Server and Oracle map their physical data blocks to the logical storage.  Because Oracle runs on UNIX, block sizes can range from 2K to 32K, while SQL Server, being constrained by Windows, must use 8 K blocksizes (8k "pages").
  • Listener process:  Oracle uses an independent daemon process called a "listener" to manage incoming connects to Oracle.  SQL Server has no listeners.
  • Object-data block mapping:  Both SQL Server and Oracle allow a single data block (page) to contain rows from different tables, for faster I/O.  In Oracle this is implemented via cluster tables. Clustering related rows (e.g. order rows adjacent to item rows) all items for an order can be fetched in a single I/O.
  • Special features:  As noted, both Oracle and SQL Server try to remain ANSI compliant while still making their databases "special".  Hence there are features within Oracle (CTAS, decode) that do not exist in MS-SQL.  There are also significant differences in the SQL dialects.

Comments

Popular posts from this blog

Hi! I'm Java...

Java is a computer programming language. It enables programmers to write computer instructions using English based commands, instead of having to write in numeric codes. It’s known as a “high-level” language because it can be read and written easily by humans. Like English, Java has a set of rules that determine how the instructions are written. These rules are known as its “syntax”. Once a program has been written, the high-level instructions are translated into numeric codes that computers can understand and execute. Who Created Java? In the early nineties, Java was created by a team led by James Gosling for Sun Microsystems. It was originally designed for use on digital mobile devices, such as cell phones. However, when Java 1.0 was released to the public in 1996, its main focus had shifted to use on the Internet. It provided more interactivity with users by giving developers a way to produce animated webpages . Over the years it has evolved as a successful language for

I'm the Server Operating System

Server Operating System A server operating system is software that was especially developed to serve as a platform for running multi-user computer programs, applications that are networked and programs critical to business computing. This type of operating system (OS) often comes bundled with the most common types of applications deployed in the client-server model, a term used to indicate the exchange of information between computers. For example, a hypertext transfer protocol (HTTP) or web server hosts or "holds" the text files, images files and scripts that work together to form a website. When someone connects to the Internet and types in a web address, the server that holds the files of the site delivers or "serves" the requested pages to the client computer or the machine that made the request. Frequently used applications in the client-server model handle operations for sharing files and printers across a network, hosting and serving web pages via the

A Hit Count Using Java Servlet's Session Tracking

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SessionTracker extends HttpServlet {         public void doGet(HttpServletRequest req,HttpServletResponse res)         throws ServletException,IOException         {                res.setContentType("text/html");                PrintWriter out=res.getWriter();                HttpSession session=req.getSession(true);                Integer count=(Integer)session.getValue("tracker.count");                if(count==null)                {                         count=new Integer(1);                }else{                         count=new Integer(count.intValue()+1);                }                session.putValue("tracker.count",count);                out.println("<HTML><BODY><H1>SESSION TRACKING DEMO</H1>");                out.println("You've visited this page "+count+((count.intValue()==1)?" time.":"times."