TOM KYTE is back in Zurich in September

August 28, 2006

As he had promised before he left last December, Tom Kyte will come back to Zurich on September 21st./22nd. and deliver another two days of his very advanced seminars on database architecture and programming techniques.
After the last seminar in December which was completely sold out, we have booked for a larger room this time, again at the Zurich Development Center, which is a great location to have a seminar at.
Again Tom Kyte will deliver two sets of sessions each of them about 60-90 minutes long.

Tom Kyte will cover the following topics:
“Things you “know”
Many developers and DBAs (not all, but many) approach the database with little or no understanding of how it actually works. Developers approach Oracle assuming it must work just like SQL Server or even worse with the frame of mind that says, “It doesn’t matter how it works, I’m using a layer of abstraction to protect me.” DBAs approach the server sometimes with a cursory knowledge of how things work, leading them to do things like, “We can skip backing up undo data-it isn’t our stuff, we don’t need it” or erasing archives because they ran out of space.
This presentation will present some of these foibles and explain how not understanding how the database actually works will lead to disaster. Some examples of things you just might not know about yourself will be explored. Oracle is big and it is a moving target. Understanding it is an ongoing process that we need to continually do.
Advanced analytic functions
Analytic functions are the coolest thing to happen to the SQL language since the introduction of the keyword SELECT . This session explores the use cases for analytic functions, demonstrates how and where you should use them, and explains the (nontrivial) syntax behind them.
Efficient schema design
Based entirely on chapter 7 of Tom’s book “Effective Oracle by Design”, this session takes you through the fundamentals of physical schema design. It demonstrates the various structures (hash clusters, B*-tree clusters, index-organized tables, …) and tells when and where you want to use them. The session closes with indexing and compression techniques.
PL/SQL or Java?
Is one language “better” than the other? Or maybe there is room for both? This session explores when you might want to use one over the other SQL Techniques
The presenter will describe common SQL techniques he has encountered and utilizes day to day to tune query performance. Features such as scalar subqueries, using rownum (yes, to ‘tune’), analytics, some hints and more will be demonstrated. Emphasis will be on when they work (where the ‘trick’ applies) as well as when they don’t workwhere they do not apply. Care will be taken to show these not as a “top 10 things to do” but rather techniques to keep in mind when looking at problems in general.
Building test cases
When you say “it doesn’t work”, or “it isn’t working right”, you will need to build a small, concise, yet 100% complete test case that demonstrates the issue at hand (and removes all of the irrelevant bits). This session walks through how Tom Kyte builds his own test cases — and how he many times finds his own mistakes in the development of them (such as: it wasn’t a database bug in the first place!) – or, even if it turns out to be a problem in the database, how the development of the test case often leads to finding a workable “workaround”.
Bits and bytes
This session covers some Oracle 10g features that are really “cool” but not played up in the Oracle marketing messages. Mundane features that make our day to day lives that much nicer. Presented as a top 10 for 10g Release 1 and top ten for 10g Release 2
Versioning of data
A common requirement today is to maintain a complete history of data: every change made to a row over time, for rows in a table or set of tables. This session explores the methods available to do this, from “do it yourself” versioning (via triggers/application code) to letting the database do it for you with workspace management. Key focuses of this session are time to develop, performance, and implementation


Every participant of this seminar will not only get the printed courseware for the sessions of course but also a copy of Tom Kyte’s book on Oracle 9i and 10g Database Architecture.
Also there will be the sought-after Tom Kyte-T-Shirt again.

There are still a few seats available!
If you are interested in taking part here are the detail again:
Date: September 21st., 22nd.
Time: 9:00h -16:00h

Location: Zurich Development Center
Price: CHF 1800,-
Registration: edu-buch_ch@oracle.com


Using the Cluster Verification Utility to check RAC setup

August 25, 2006

Starting with Oracle database 10g Release 2 we can use the new Cluster Verification Utility (CVU) called cluvfy to check a cluster environment before and after a RAC installation.
This comes in very handy when you want to check your hardware and software setup before making the big step of installing the cluster ready services and rdbms software for the cluster db.
The CVU is shipped with the clusterware, but you can also get it directly from Oracle Technology Network.
It is already available for the following platforms:
Linux
Solaris
HP
AIX
Windows

Under linux you must first of all install the cvuqdisk rpm .

CVU requires Java 1.4.1 installed, needs about 30Mb of diskspace on the invocation node and about 25 Mb of working direcory on every node in the nodelist. The working directory must exeist on all nodes and the invoking user must have write access there.

Let’s take a short look at what we can do with cluvfy:
[oracle@ed-olraclin1b bin]$ /stage/10gR2/rdbms/clusterware/cluvfy/runcluvfy.sh -help
USAGE:
cluvfy [ -help ]
cluvfy stage { -list -help }
cluvfy stage {-pre-post} [-verbose]cluvfy comp { -list -help }cluvfy comp [-verbose]

Let’s provoke an error in order to get more help!
[oracle@ed-olraclin1b bin]$ /stage/10gR2/rdbms/clusterware/cluvfy/runcluvfy.sh stage -pre
ERROR:Invalid command line syntax.
USAGE:
cluvfy stage {-pre-post} [-verbose]
SYNTAX (for Stages):
cluvfy stage -post hwos -n [ -s ] [-verbose]
cluvfy stage -pre cfs -n -s [-verbose]
cluvfy stage -post cfs -n -f [-verbose]
cluvfy stage -pre crsinst -n [-r { 10gR1 10gR2 } ]

[ -c ] [ -q ]

[ -osdba ]

[ -orainv ] [-verbose]

cluvfy stage -post crsinst -n [-verbose]
cluvfy stage -pre dbinst -n [-r { 10gR1 10gR2 } ]

[ -osdba ] [-verbose]

cluvfy stage -pre dbcfg -n -d [-verbose]

As we see, cluvfy uses stages, which are states of the system, either pre- or post. With the pre-stages you can check whether the requirements for an installation are met, with the post-stages you can check if everything with the installation worked well.

Here is an example for a pre-installation check before installing clusterware on a linux cluster:

[oracle@ed-olraclin1a .ssh]$ /stage/10gR2/rdbms/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n ed-olraclin1a,ed-olraclin1b
Performing pre-checks for cluster services setup
Checking node reachability
Node reachability check passed from node “ed-olraclin1a”.
Checking user equivalence…
User equivalence check passed for user “oracle”.
Checking administrative privileges…
User existence check passed for “oracle”.
Group existence check passed for “oinstall”.
Membership check for user “oracle” in group “oinstall” [as Primary] passed.
Administrative privileges check passed.
Checking node connectivity…
Node connectivity check passed for subnet “138.2.147.0″ with node(s) ed-olraclin1b,ed-olraclin1a.
Node connectivity check passed for subnet “192.168.1.0″ with node(s) ed-olraclin1b,ed-olraclin1a.
Suitable interfaces for VIP on subnet “138.2.147.0″:ed-olraclin1b eth0:138.2.147.72ed-olraclin1a eth0:138.2.147.70
Suitable interfaces for the private interconnect on subnet “192.168.1.0″:ed-olraclin1b eth1:192.168.1.12ed-olraclin1a eth1:192.168.1.11
Node connectivity check passed.

Checking system requirements for ‘crs’…
Total memory check passed.
Free disk space check passed.
Swap space check passed.
System architecture check passed.
Kernel version check passed.
Package existence check passed for “make-3.79″.
Package existence check passed for “binutils-2.14″.
Package existence check passed for “gcc-3.2″.
Package existence check passed for “glibc-2.3.2-95.27″.
Package existence check passed for “compat-db-4.0.14-5″.
Package existence check passed for “compat-gcc-7.3-2.96.128″.
Package existence check passed for “compat-gcc-c++-7.3-2.96.128″.
Package existence check passed for “compat-libstdc++-7.3-2.96.128″.
Package existence check passed for “compat-libstdc++-devel-7.3-2.96.128″.
Package existence check passed for “openmotif-2.2.3″.
Package existence check passed for “setarch-1.3-1″.

Group existence check passed for “dba”.
Group existence check passed for “oinstall”.
User existence check passed for “nobody”.
System requirement passed for ‘crs’ Pre-check for cluster services setup was successful.

This is what we want to see at the end of the test!
Only with this result you can be sure that an installation of of the cluster ready services will be successful.

There are a number of good metalink notes on CVU available.
As a first entry I would recommend Note:339939.1
Subject: Running Cluster Verification Utility to Diagnose Install Problems
Here you find detailed information about the supported platform-versions as well as how to install CVU and how it works.