Skip to Main Content
  • Questions
  • SQL Server 2000 DBA,...want to learn Oracle

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question.

Asked: October 09, 2005 - 10:38 pm UTC

Last updated: October 11, 2005 - 3:42 pm UTC

Version: 10

Viewed 1000+ times

You Asked

Hi,

I am a Sql Server 2000 DBA for the past 4 yrs.
Keen to learn Oracle.
Please let me know what to start with and where to start with.
I guess Oracle 10g is the latest version.


and Tom said...

I would encourage you to peek at this:

</code> http://asktom.oracle.com/pls/ask/z?p_url=download_file%3Fp_file%3D4266102912305380863&p_cat=Oracle%20inside%20cover%200703.pdf&p_company=10

sort of my documentation roadmap.  All docs are available at:
http://www.oracle.com/pls/db102/portal.portal_db?selected=1

for 10gr2.  I would also encourage you to download and then play with the database:
http://www.oracle.com/technology/software/index.html


Also - participate.  Here are some links to "participate" in, get your feet wet, ask questions and eventually you'll be answering them as well:

http://asktom.oracle.com/Misc/success.html <code>

Rating

  (5 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

Locking and concurrency

Duke Ganote, October 10, 2005 - 10:59 am UTC

Tom often emphasizes the difference between Oracle's locking / concurrency architecture and that used by other "big market share" DBMSs: DB2 and SQL Server. I was researching this topic weekend, and unimpressed with the scalability of the approach used by DB2 and SS2000.

Beginning with version 7, Oracle incorporated the idea of Multi Version Concurrency Control (MVCC), see for example Tom's book or
</code> http://firebird.sourceforge.net/doc/whitepapers/fb_vs_ibm_vs_oracle.htm http://www.dbazine.com/db2/db2-disarticles/gulutzan6 <code>
MVCC has some strong implications for DBAs in earlier versions of Oracle, but I think that's mitigated in 10g.

I'm not sure if MVCC is a big factor for OLAP (read-only) development, but I'm impressed in OLTP environments.

Tom Kyte
October 10, 2005 - 11:27 am UTC

And that paper *got it slightly wrong*

Beginning with Oracle version 4 (before firebird - aka interbase) Oracle incorporated the idea of MVCC.

</code> http://asktom.oracle.com/Misc/something-different-part-i-of-iii.html#c112584079541388964 <code>


The implementation is pretty much the "same", 9ir1 added automatic undo management to curtail the chance of a 1555, but that is the "biggest" change in a long time.

Oracle Version 4

Duke Ganote, October 10, 2005 - 1:13 pm UTC

Looking further: Ken Jacob's article on the history of the Oracle DBMS refers to MVCC as "read consistency":
</code> https://asktom.oracle.com/Misc/oramag/on-measuring-distance-and-aging.html <code>
and dates it to October 1984.

Tom Kyte
October 10, 2005 - 1:24 pm UTC

read consistency in Oracle has been achieved via Multi-Versioning.

Others do it via shared or exclusive locks.

Oracle Version 3

Duke Ganote, October 10, 2005 - 1:33 pm UTC

Actually, Ken writes:

<quote> Oracle version 3 also introduced nonblocking queries, using data saved in a "before image file" for both queries and transaction rollback, thus avoiding the use of read locks (even though its throughput was limited by use of table-level locking). </quote>

How did this differ from Version 4's "read consistency—the assurance that a query will see a set of data that remains consistent during execution"? Perhaps in Oracle 3 writers wouldn't block readers, but the readers could get inconsistent results, say during the select of a ACCOUNTS table?

Tom Kyte
October 10, 2005 - 2:06 pm UTC

I cannot remember that far back ;)

I'll ask him!

and he said...

We indeed had multiversioning in V3. We had a separate Before Image (BI) file that had old block copies. It was used to provide non-blocking reads, and avoid read-write contention. However, for some reason I don't recall exactly, we didn't apply read consistency to indexes, or properly stop a scan or something. I would have to think harder to recall the precise details (and maybe I'm too old to ever remember precisely!).

A statement would see its own changes in a funny way. Thus, a statement like this

insert into emp
select * from emp

would in fact read the very rows it was inserting and with 14 rows in EMP you might end up with either an infinite loop (I don't recall that ever happening) or some "random" (unpredictable) number of rows!

Oracle expert's perspective of SQLServer

Mark J. Bobak, October 10, 2005 - 2:39 pm UTC

Here: </code> http://www.naturaljoin.nl/SQLserverland.pdf <code>is an article written by Lex DeHaan, noted Oracle expert and author, on his perspecitive of SQLServer's deisgn features and flaws.

SQL Server 2005 - new locking mechanisms for multi-version concurrency

Andy Mackie, October 11, 2005 - 11:46 am UTC

SQL Server 2005 introduces new locking mechanisms for multi-version concurrency, where readers and writers don't block, so I guess this argument will no longer be valid.

Here's an article that includes comparison with Oracle's locking:

</code> http://msdn.microsoft.com/SQL/2005/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5snapshotisol.asp <code>

Tom Kyte
October 11, 2005 - 3:42 pm UTC

it is all in the implementation - we'll have to wait and see how their implementation, which works like our workspace manager (they version rows, in the table - sort of like a flag delete) holds up.

I've a feeling it'll still be valid.