Oracle vs. MS SQL Server


Published on

A paper I wrote for my data management class discussing the differences between the Oracle and Microsoft SQL Server RDMBS'es.

Published in: Data & Analytics, Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Oracle vs. MS SQL Server

  1. 1. Running Head: ORACLE DATABASE VS. MICROSOFT SQL SERVER 1 Oracle Database vs. Microsoft SQL Server Teresa J. Rothaar Wilmington University
  2. 2. ORACLE DATABASE VS. MICROSOFT SQL SERVER Oracle Database vs. Microsoft SQL Server Introduction Oracle and Microsoft SQL Server are competing relational database systems. Both are proprietary packages, as opposed to open source systems such as MySQL. Oracle’s relational database product dominates the database market, controlling more than 48% of the market as of 2010 (Hoffer, 2013, p. 246). However, Microsoft SQL Server gained 2,000 Enterprise customers between 2010 and 2012, with its overall market share growing faster than that of its competitors (Backaitis, 2014). Oracle boasts the ability to run on a wide variety of platforms, including Windows, Mac, and UNIX. Microsoft SQL Server is available only for Windows (Leiba, 2003), which limits the latter’s potential customer base, which is possibly why SQL Server ranks third in the overall database market (Hoffer, p. 246). However, unlike Oracle, Microsoft SQL Server has a large, enthusiastic community of product evangelists, which is supported by Microsoft itself (McCown, 2008). The impact of product evangelism could explain SQL Server’s exponential growth despite its vendor lock-in to the Windows OS. This paper will explore some of the differences between Oracle and SQL Server, with a focus on data types and other issues that are important for database administrators who work with both systems to understand, especially in situations where data is being migrated from one system to the other. Database Architecture An Oracle database is just that: one database, with all objects within it grouped by schemas, and with the objects shared by all users and schemas. However, the database administrator can set user privileges that allow access to some schemas and objects but not 2
  3. 3. ORACLE DATABASE VS. MICROSOFT SQL SERVER others. SQL Server contains multiple databases, with each database having its own private, unshared server file disk. All objects are assigned to a particular database, and users have individual logins that grant access to a database and its corresponding objects (Stansfield, 2014). This difference in architecture means that the concept of “logging onto the database” means different things in each system. On SQL Server, a user who is logged onto the server can execute the USE DATABASE_NAME command to switch to another database on that server, so long as the user has access privileges allowing them to do so. Because an Oracle installation contains only one database, there is no such thing as “switching databases.” There is only viewing a different schema or object. To do that, the user executes a CONNECT command under a different user name, or alternatively uses a SET ROLE command to change roles (Oracle Corporation). T-SQL vs. PL/SQL Because they use different proprietary programming languages, Oracle and SQL Server handle stored procedures quite differently. Oracle uses the PL/SQL programming language, which is based on Ada, while Microsoft uses T-SQL, or Transactional SQL, which is based on Sysbase (Burleson Consulting, 2011). In SQL Server, stored procedures are not compiled until executed, which means any errors are not discovered until a procedure is actually run. There is also is no ability to read or write from external files from a stored procedure (Leiba). Oracle also offers a “black box” of certain stored procedures and functions that share all input, output, and variables, called a “package.” Among other benefits, packages allow top- down, object oriented design and performance improvement. Most of Oracle’s built-in functions are part of a package. There is no equivalent to this in SQL Server, so when converting from Oracle to SQL Server, the packages need to be broken down into multiple processes, user- 3
  4. 4. ORACLE DATABASE VS. MICROSOFT SQL SERVER defined functions, and so on. When going from SQL Server to Oracle, the opposite occurs: multiple processes, user-defined functions, and shared variables can be combined as part of an Oracle package (Kline, 2005). Oracle and Microsoft handle updates to their proprietary languages differently. While Oracle releases new versions of PL/SQL separately from their RDBMS product—because PL/SQL is used in other Oracle software—Microsoft updates T-SQL only when issuing a new version of SQL Server. Therefore, every version of T-SQL is linked to a specific version of SQL Server (Kline). Reserved Words Many words that can be used as column headings or object names in SQL Server, such as DATE, are reserved words in Oracle, and thus these names cannot be directly transferred from SQL Server to Oracle (Oracle Corporation, n.d.). Date & Time Data Types Although both databases store point-in-time values for DATE and TIME data types, Oracle and SQL Server date and time ranges are very different. In Oracle, they range from 4712 B.C. to 4712 A.D., while the SQL Server date range is from 1753 A.D. to 9999 A.D. (Microsoft Developer Network, n.d.). Additionally, the date/time precision in Microsoft SQL Server is 1/300th of a second, while Oracle’s data type TIMESTAMP is much more exacting, measuring time in increments of 1/100000000th of a second (Oracle Corporation). A few date and time data types have no direct equivalents between the two DBMSes, such as DATE and TIME in SQL Server, which store each attribute as an individual component, and the Oracle data types INTERVAL YEAR TO MONTH or INTERVAL DAY TO SECOND, which are used for periods of time as opposed to specific dates and times (Snaidero, 2013). 4
  5. 5. ORACLE DATABASE VS. MICROSOFT SQL SERVER When migrating from Oracle to SQL Server, columns of type DATE containing values that are out of range for SQL Server are converted to type VARCHAR(19) (Microsoft Developer Network). Conversely, Oracle uses its data type TIMESTAMP for data that requires finer date and time precision than seconds, such as scientific applications, which may require values as tiny as nanoseconds. If such precision is not required, Oracle’s DATE data type, which is accurate to one second, may be used. Numeric Data Types SQL Server has several integer data types based on size: TINYINT, SMALLINT, INT and BIGINT. Oracle simplifies things with its NUMBER(x, y) data type, where x specifies the size (or precision) required, and y specifies the scale (the numbers to the right of the decimal point). For an integer, NUMBER(x, 0), should be used, with x representing the size required, with the scale set to 0 (Snaidero). SQL Server data types DECIMAL[(x,[y])] and NUMERIC[(x,[y])] are equivalent to NUMBER(x, y) in Oracle (Snaidero). However, the systems treat precision and scale of numbers very differently, which can cause issues when migrating from Oracle to SQL Server. While Oracle allows numbers to be defined with a scale greater than the precision, i.e., NUMBER(4,5), SQL Server requires that the precision be greater than or equal to the scale, and it will correct this by setting the precision and scale equal to each other during migration. Thus, NUMBER(4,5) would be mapped to NUMERIC(5,5). Additionally, when encountering a NUMBER data type with no scale or precision specified, SQL Server defaults to the maximum scale and precision, mapping to NUMERIC(8,38) (Microsoft Developer Network). Microsoft therefore recommends that, prior to the data being migrated, a specific scale and precision be specified in Oracle as to protect data integrity. 5
  6. 6. ORACLE DATABASE VS. MICROSOFT SQL SERVER SQL Server has two data types, MONEY and SMALLMONEY, specifically for currency values (Snaidero). Oracle, however, assumes an international customer base where users do not necessarily count money in U.S. Dollars, and currency values are mapped to the NUMBER data type (Oracle Corporation). Character String Data Types The Oracle equivalent of SQL Server data type VARCHAR is CLOB (Microsoft Developer Network). SQL Server data type CHAR maps directly to Oracle type CHAR, but with a caveat: it maps directly only for CHAR sizes of 1 through 2000. CHAR data types sized from 2001 to 4000 are invalid in Oracle, and Oracle will convert CHAR types in this size range to VARCHAR2 (Oracle Corporation). Conversely, an Oracle VARCHAR2 type will map to SQL Server type VARCHAR (Microsoft Developer Network). SQL Server type TEXT maps to Oracle type CLOB (Oracle Corporation), but CLOB is mapped to SQL Server type VARCHAR(MAX) (Microsoft Developer Network). Binary and XML Data Types SQL Server types BINARY and VARBINARY map to Oracle type RAW or BLOB, depending on size (Oracle Corporation). However, while Oracle can support up to 4GB of data, SQL Server can support only 2GB, and any data above that amount is truncated (Microsoft Developer Network). Both systems support XML data types. Oracle has type XMLTYPE, and the SQL Server equivalent is simply XML. However, while SQL Server can hold only 2GB of data, Oracle can hold up to 6GB (Snaidero) Boolean Values The SQL Server data type BIT, used for Boolean values, has no direct equivalent in 6
  7. 7. ORACLE DATABASE VS. MICROSOFT SQL SERVER Oracle. However, BIT can be mapped to either NUMBER(1) or CHAR, with PL/SQL functions used to query the value (Oracle Corporation). Conclusion There are many other differences between Oracle and SQL Server, such as how each RDBMS handles exceptions, the type of functions that can be called within each environment, and how SQL statements such as CREATE and INSERT are handled. Multiple resources are available online, from the manufacturers and each product’s user community, to aid database administrators as they work with both systems. 7
  8. 8. ORACLE DATABASE VS. MICROSOFT SQL SERVER References Backaitis, V. (2014, March 18). Microsoft SQL Server Wins in a Big Data World. CMSWire. Retrieved from big-data-world-024565.php Burleson Consulting. (2011, December 27). Data Type Issues with Microsoft SQL Server 2000 and Oracle 10g. Retrieved from http://www.dba- Hoffer, J. A., & Ramesh, V. (2013). Modern Database Management (11th ed.). Boston: Pearson. Kline, K. (2005, June). Translating Procedural Statements Between Oracle and SQL Server: White Paper. Retrieved from pdf Leiba, E. (May 2003). Oracle vs. SQL Server: Why Oracle wins. TechTarget. Retrieved from McCown, S. (2008, March 19). The Real Difference Between SQL Server and Oracle. InfoWorld. Retrieved from difference-between-sql-server-and-oracle-755 Microsoft Developer Network. (n.d.). Data Type Mapping for Oracle Publishers. Retrieved from Oracle Corporation. (n.d.) Oracle® Database SQL Developer Supplementary Information for Microsoft SQL Server Migrations, Release 1.2. Retrieved from BGBDEBFA 8
  9. 9. ORACLE DATABASE VS. MICROSOFT SQL SERVER Snaidero, B. (2013, April 25). Comparing SQL Server and Oracle Data Types. Retrieved from oracle-datatypes/ Stansfield, J. (2014, March 13). Microsoft SQL Server vs. Oracle: The Same, But Different? Segue Technologies Blog. Retrieved from 9
  10. 10. ORACLE DATABASE VS. MICROSOFT SQL SERVER Snaidero, B. (2013, April 25). Comparing SQL Server and Oracle Data Types. Retrieved from oracle-datatypes/ Stansfield, J. (2014, March 13). Microsoft SQL Server vs. Oracle: The Same, But Different? Segue Technologies Blog. Retrieved from 9