Click Here to subscribe to the Quest Pipelines Newsletter.
Please Note: Some Newsletter articles, particularly in earlier
editions, were pulled from content found in the Oracle DBA Archives or the
Quest Experts page and
are not duplicated here. Also, not all editions of the Newsletter
contained Oracle DBA articles whereas some editions contained more than one.
Volume I (2000)
Volume II (2001)
Volume III (2002)
Volume IV (2003)
Volume V (2004)
Volume VI (2005)
Oracle's Log Miner, Part I (March
2000)
By Darryl Hurley, MDSI, ImpleStrat Solutions
Introduced in version 8.1.5 of Oracle
(the database) Log Miner provides a PL/SQL API directly into the
labyrinth of Redo Logs. Finally all transactions performed in a database
can easily be viewed, recreated, audited or undone. Building custom
auditing, logging or undo facilities which often proved to be an
applications Achille's heel is no longer required because one can now
find out exactly what was done, when it was done and who did it.
Click Here to view the
article.
Oracle's Log Miner, Part II (April
2000)
By Darryl Hurley, MDSI, ImpleStrat Solutions
Oracle8i introduced Log Miner, a PL/SQL
API that allows for all transactions performed in a database to be
easily viewed, recreated, audited or undone. In Part
I, we covered the overall concept of how Log Miner works as well as
how to begin a mining session. We made it as far as actually viewing the
contents of redo logs. Now in part II we will delve deeper into those
contents to see what they contain and how they can be used.
Click Here to view the
article.
The Oracle Library Cache (May 2000)
By John Beresniewicz, Savant Corporation
The Oracle Library Cache is a mechanism
that allows users to share and reuse SQL statements and PL/SQL objects,
as well as other less common objects. This article, written by John
Beresniewicz, technical product manager of Savant Corporation and
frequent Pipeline contributor, helps clarify the essential purpose of
the Oracle library cache, and provides insights for DBAs from a tuning
perspective.
Click Here to view the
article.
Distribution of Disk I/O Across Datafiles
(June 2000)
By John Beresniewicz, Savant Corporation
Physical disk I/O is by far the slowest of the
three core components found in all computing devices (CPU, memory, and disk).
For that reason, minimizing the volume of disk I/O and spreading disk I/O out
over multiple physical devices are key elements in the system performance tuning
process. Savant’s Diagnostic Center for Oracle includes a Data
File I/O List. This list display is effective at isolating datafiles and
tablespaces experiencing the most I/O and determining if there are opportunities
to spread the load out more evenly.
Click Here to view the
article.
Oracle Real-Life Recovery (August 2000)
By Daniel Fink, 7S Consulting
In an anonymous office building downtown, an
Oracle database administrator checks the log files to verify that the backup
processes ran properly last night. Then he grabs a 2nd cup of coffee and
moves on to the day's tasks, emergencies and assorted events. Users,
managers and developers are concerned with data accuracy, proper security and
blinding performance, not in the mundane task of testing recovery. Little
does he or the company know that the past month's backups are useless.
Since the recent operating system update, the tape drive, the only tape drive on
site, writes without error, but cannot read a single bit that is on the tape.
Click Here to view the
article.
Oracle HTML Database Information Reports
(September 2000)
By Jody Wisecup, Butler Manufacturing
The ability to quickly and easily lookup
information about databases can save a DBA a lot of time throughout the day.
Information on items such as database versions, data files, tablespaces, SGA
size, rollback segments, options, database links, and parameter values are
things that a DBA use quite frequently in their day-to-day operations.
This type of information can also be invaluabe to the DBA in disaster recovery
scenarios.
In order to eliminate the need for the DBA to run
SQL scripts each time this type of information is required, a web based
reporting solution was developed. The following paper outlines this
process and provides the code necessary to set up an automated Database
Information Reporting procedure in a web based format.
Click Here to view the
article.
Putting Methods to Work in Oracle 8 (October
2000)
By David A Anstley, Galderma Laboratories, Mike Ault, TUSC
By this time, most of us have been introduced to
the object-oriented features included in Oracle8. While many may be
conversationally familiar with the new functionality that the object extensions
to Oracle8 have introduced, far fewer have taken advantage of this exciting
departure from conventional relational design. While it is recognized that
the first deployment of object-oriented methodology, most of the key elements
are covered. One of the most exciting of these key elements is the support
for methods.
Click Here to view the
article.
Oracle Transactions and Rollback Segments
(November 2000)
By K. Gopalakrishnan
Rollback segments are one of the least understood
areas in database tuning for many DBAs. Most DBAs pay very little
attention to tuning rollback segments. Tuning Rollback segments requires a
greater understanding of the internal workings of Oracle and are difficult to
tune by normal means. This note gives a brief introduction to transactions
and rollback segments and goes beyond the basics of 'rollback segment is used
for transaction rollback', so the reader is familiar with what is going on
inside a rollback segment.
Click Here to view the
article.
Oracle Database Cloning Using Hot Backups
(December 2000)
By Shankar Govindan
Most sites running Oracle databases need the
latest production databases to be cloned for the development and test teams to
work on. This is especially true when you are working on an Oracle
Applications site where patches have to be applied and tested first before
applying the same on the Development box.
This document gives you a detailed flow of how to
backup the database in a 24x7 operation and use it for cloning a Development or
Test database. By using the System switching of Log files option, it
reduces the amount of archive logs to be applied and therefore reduces the time
of recovery (the goal).
Click Here to view the
article.
Knowing
When to Rebuild Oracle Indexes (January 2001)
By Brian Peasland, USGS - EROS Data Center
Indexes provide a fast and efficient method of
retrieving selected data from a table. By pointing to the blocks that
contain the selected data, the entire table does not have to read in order to
extract the required information. Most indexes in Oracle databases are
built using the B-tree data structure. Contrary to some widely accepted
beliefs, indexes in Oracle are not self-balancing. After a table
experiences a large number of inserts, updates, and deletes, the index can
become unbalanced and fragmented and can hinder query performance. Knowing
when to rebuild the indexes is a topic of some confusion.
Click Here to view the
article.
Managing
Oracle 8i Temporary Tables (February 2001)
By Vijays, Datacons
A temporary table has a definition or structure
that persists like that of a regular table, but the data it contains exists only
for the duration of a transaction or session. Oracle8i allows you to
create temporary tables to hold session-private data. You specify whether
the data is specific to a session or to a transaction.
Click Here to view the
article.
Getting
a Random Sample of Records (March 2001)
By Bob Mycroft, Info-com
One common requirement that crops up from time to
time is that someone will want a random sample of records from your
database. A common example of this is where a marketing department makes
what at first may seem like a simple request. "Could we have a list
of 1000 potential customer addresses matching criteria x and y and z.
Oh, and if there are more than 1000 people matching the criteria then can we
choose those people randomly from the total set of people." This paper contains
three approaches to randomizing records: the good, the
bad, and the ugly!
Click Here to view the
paper.
Oracle
8i Partitioning Methods (April 2001)
By Vijayabaskar Srinivasan, Datacons
Partitioning addresses the key problem of
supporting very large tables and indexes by allowing you to decompose them into
smaller and more manageable pieces called partitions. Once partitions are
defined, SQL statements can access and manipulate the partitions rather than
entire tables or indexes. Partitions are especially useful in data
warehouse applications, which commonly store and analyze large amounts of
historical data.
Click Here to view the
paper.
Introduction
to Oracle Parallel Server (May 2001)
Topic extracted from Knowledge Xpert for
Oracle Administration
Oracle's parallel server option (PSO) allows
multiple instances, each operating a separate node, to share a single database.
Each instance has its own set of shared memory segment (SGA), background
processes, online redo logs, and rollback segments. The data file and
control files are shared by both instances. Online redo logs and rollback
segments acquired by an instance at the startup are written to by that instance
only, however, read access is available to other instances as well.
Click Here to view the topic.
Managing
Row Level Security in Oracle 8i (June 2001)
By Michael R. Ault, TUSC
New in Oracle8i is the concept of row level
access restriction. For years DBAs have requested some form of conditional
grant where access to specific rows can be easily restricted or granted based on
user or group membership. Oracle has finally given DBAs the functionality
of conditional grants in the form of row level security. The DBMS_RLS
package is only available with the Enterprise edition of Oracle8i.
Click Here to view the article.
High
Water Mark Scripts for Oracle 7 & 8 (July 2001)
By John Dixon
John uploaded these scripts to the
"Script Exchange" conference on the DBA
Pipeline. Log on to "Pipe Talk" and share your scripts
with others.
Here are a couple of scripts (one for Oracle7,
one for Oracle8), that list tables with large high water marks (relative to the
size of the table). Parameters are schema name and percentage larger (i.e.
how much bigger than the actual table can the high water mark be?). It
does this without running an analyze on the schema.
Click Here to download the
scripts.
More Oracle High
Water Mark Scripts (August 2001)
By David Kowalczyk
The article above features
2 High Water Mark Scripts submitted by John Dixon. In this article, David
Kowalczyk has submitted scripts for Oracle 7 and 8 that he uses for databases
with partitioned tables.
Click Here to download the
scripts.
Configuration
Standards for Oracle on Windows NT (August 2001)
By Sean O'Neill
This 19-page document serves as a consolidated
reference document for standardizing the configuration of Oracle Databases in a
Windows NT environment. It includes handy checklists for documenting
configuration setup and deviations.
Click Here to view the
paper.
Installing Oracle 9i on Linux (September 2001)
By Tom Scott and Michael J. Ross, San
Diego Oracle Users Group
SDOUG is
working with the Mission Bay High School on creating projects using databases
that will be accessed through Oracle Portal. In addition, we want to
create an Oracle Portal site for SDOUG. The prerequisite of all this is
setting up a reliable server that is secure and can house the test
databases. This paper outlines all the steps the authors took to install
Oracle9i on the server.
Click Here to view the
paper.
Tablespace Map Script (October 2001)
By Brian Peasland, Pipeline SYSOP
This script shows a "map" of database
block allocations for a tablespace. This script can be used to examine
free space fragmentation among other issues.
Click Here to view the
script.
Oracle_SID "Switch" Script (November 2001)
By Gert de Boer
Real programmers are lazy, and typing in anything
longer than two characters twice should be avoided. The same holds for
DBAs.
So, I wrote a script to switch database instance on
UNIX (works on bash and HP's Posix shell). I made a small adaptation for Oracle
8.1.7 on HP: the oratab entries did not end with ':Y' but with ':Y:'. I
located it in /usr/local/bin.
Click Here to view the
script.
Efficiency of Outer Joins (November 2001)
By Dave Wotton
This paper discusses the usage of outer joins, the
conditions under which they can be used and the efficiency implications of outer
joins. This paper also points out performance issues associated with outer
joins and views, as well as other potential problems.
Click Here to view the
paper.
Print_CSV Procedure (February 2002)
By Barbara Boehmer
In response to a recent post asking for a "procedure
to print any cursor passed to it via DBMS_OUTPUT and, write out a
comma-delimited file", I suggested an alternative print_csv procedure. This
procedure would do the same thing for any query passed to it, rather than any
cursor passed to it.
The initial version of the print_csv procedure was a
modification of a dump_csv function by Tom Kyte that uses utl_fle to actually
output the results of any query to a file. I simply modified it to use
DBMS_OUTPUT instead of UTL_FILE and changed it from a function to a
procedure.
Following some suggestions from James Padfield and
Solomon Yakobson (Pipeline SYSOPs), I made some additional modifications
regarding the handling of the date format and exception section.
Click Here to view the
procedure.
Space Check Before Data LOAD (DW) (April 2002)
By Shankar
Govindan
Running a script like this before loading
millions of records will help the person loading get a fair idea of how
much space is required to sustain the load and not fail. This also
helps the person loading estimate and inform the DBA that a load is to
happen and space does not seem to be sufficient in a tablespace where the
loading table exists.
Basically, the script gives us the approximate
space required for the load based upon the size of the records existing in
the table multiplied by the number of records. So, the table needs to
have some data in order to get this information and calculate. This will not work for a
table that is empty.
To get the exact values, we need to
analyze the table. Once this is done, the DBA_TABLE views get
populated with the AVG_ROW_LENGTH and then we calculate from there.
The analyze for a table of DW size would run for hours and that would also
upset the query plans.
Click Here for the script.
Migrating to Oracle9i (April 2002)
By Michael R. Ault, TUSC
The long awaited moment approaches. The
long heralded release of Oracle9i into production has/is happening. So, what do we as DBAs and application developers do? We migrate. Of
course we should take the proper steps to ensure that we migrate like graceful
geese flying across a sunset rather than lemmings dashing forward over a
cliff. At TUSC we prefer the graceful flight across the sunset.
Click Here to view the paper.
Truncate Tables in Schema Script (May 2002)
By Brian Peasland, Pipeline SYSOP
This script can be used to go into a schema
and truncate tables that have ANY rows. The
owner of the table doesn't need any specific privileges to truncate their
own tables. But if you want someone else to be able to truncate another
user's table, then they will need delete privileges on that table.
Click Here to view the script.
The SPFILE (May 2002)
By Venu Gopal, ORAMASTERS,
Inc.
For quite some time, Oracle has been maintaining a text
file called the pfile to store the database initialization parameters, which
would be read at the time of instance startup to get the characteristics of the
instance that has to be created by Oracle for the specified database. Any
changes made to this pfile would only take effect when you restart the database;
however, parameters that were dynamically alterable could be changed using the
appropriate ALTER SYSTEM or ALTER SESSION statement, which would take effect
immediately. Nevertheless, it should be mentioned that these parameters would
need to be set every time you restarted the instance, because parameters altered
in this process would be lasting for the lifetime of the instance or the session
depending on the type of the statement issued. To overcome this limitation, Oracle
has come up with a new feature called the spfile (server parameter file). The
spfile can be thought of as a control file that is used by Oracle to store the
initialization parameters.
Click Here to view the paper.
Interpreting Wait Events to Boost System Performance (May 2002)
By Roger Schrag, Database
Specialists, Inc.
A few years back, cache hit ratios were thought
by some to be the ultimate indicator of database performance. "You cannot
survive in an e-commerce environment with a buffer cache hit ratio of less than
99.9%!" exclaimed some. More recently, the wait event interface has come
into vogue. Many DBAs have heard about wait events, and many know which v$ views
to look at, but few resources are available that discuss techniques for using
the wait event interface and even fewer walk through concrete examples of how to
use wait event information in order to boost system performance.
In this paper we will first define what wait
events are and how to collect wait event information. Then we'll move on to
examples of how wait event information paved the way to solving real-world
performance problems. The material in this paper is based on my real-life
experience. I've been working with Oracle databases for over twelve years, and
tuning problem systems is what I do for a living (and what I enjoy most about
being a DBA).
Click Here to view the paper.
Oracle Database Block Size Rebuilds in Oracle9i (June 2002)
By Kevin Loney, TUSC
Oracle9i offers support for multiple database
block sizes in the same tablespace. DBAs can use this feature to support
rebuilding their databases to a higher database block size while the database
remains online. This article will provide a demonstration of the steps required
to increase the database block size for almost all tablespaces in an Oracle9i
environment. Topics covered include database quiescing, supporting multiple
block caches, using the Oracle-managed files feature, and online object
reorganization.
Click Here to view the paper.
Transferring Alerts in Oracle Application (July 2002)
By Shankar
Govindan
Oracle Application has so many
modules that each module that you have licensed needs to be setup at the
functional level for it to work and then tested for the functionality. The setup
then goes in for a User Acceptance test. Once accepted it moves to production.
Since the setups need to be done each time manually and is error prone, there
are Object Migration tools that are available to migrate the required setups
from one Application database to another. For Oracle Alerts though, oracle has
its own transfer utility with which you can setup and test the Alerts in a test
database and transfer the same to a QNA database and from there transfer to
production.
I have broken this document into two
sections. One that shows how to transfer Oracle Alerts and the other that talks
about the basics and setting up a separate manager to run these Oracle Alerts to
reduce the request clogs.
Click Here to view the paper.
Freelist Internals - An Overview (August/September 2002)
Topic Extracted from Knowledge Xpert for
Oracle Administration
A freelist is a list of free blocks associated with a segment, which are eligible for accepting data when a new insert request comes. This normally speeds up the insert process since Oracle does not need to look at the entire block to put that row inside a table. The freelist structure is managed by a chain structure called a linked list. A singly linked list is the data structure used in managing
freelists.
In a singly linked list the current element will hold the address of the next element. The last element will hold the null pointer as the next element's address. The header will hold the address of the starting point, which is nothing but the first element.
Click Here to view the topic.
Installing & Configuring Oracle 9i on the Solaris Platform (October 2002)
By Roger Schrag, Database Specialists, Inc
This paper will walk you through the steps of installing Oracle9i
release 2 (Oracle version 9.2.0) in a Sun Solaris SPARC environment. About 90% of the material
presented here applies to other platforms as well. Everything you read in this paper is hands on,
roll-up-your-sleeves-and-get-busy material for Oracle users who want to get an Oracle database
up and running quickly without reading hundreds of pages of documentation and “readme” files.
These steps are meant to get you up and running as fast as possible, while leveraging best
practices in order to set up a scalable, robust database environment that offers high
performance. In order to keep the steps reasonably simple this paper does not cover Real
Application Clusters (RAC), nor does it cover Oracle Internet Directory or Oracle Management
Server installation.
Click Here to view the paper.
Calculating the Buffer Cache Hit Ratio for Accurate Results (November 2002)
Extracted from the Quest Pipelines PL/SQL Pipetalk
This script is a PL/SQL procedure that can be used to
periodically load hit ratio, usage, and number of users into a table for later review. This
will provide valuable information about peak usage times and hit ratio at those peak times.
This procedure/table can be used to store entire database hit ratio or per user hit ratios.
Click Here to see the script.
Oracle 9i New Features for Oracle8i DBAs (November 2002)
By Roger Schrag, Database Specialists, Inc
This paper offers a brief overview of the new features in the
Oracle9i database of most interest to database administrators. It is written for DBAs
experienced with Oracle8i who are looking for a quick-read roadmap to what has changed and
what is new in Oracle9i. For each item we'll just look at a few of the highlights so that we
can keep this paper short. This should be enough to whet your appetite and give you an idea
of which features and areas you want to learn more about.
Click Here to view the paper.
Offensive Runaways: Defensive DBA (November 2002)
By Shankar Govindan
Oracle Application concurrent programs normally run for long
hours and it becomes difficult to identify and monitor periodically which processes are actually
running and which are run away processes. If a runaway process is identified as a forms
executable then it is easy to check for the runaway and kill the process. Most Oracle sites
will have scripts that either checks the dynamic view V$Session for forms programs or sniped
processes and kills them. Some sites also check the CPU time of the shadow process and in
cases where the shadow process exceeds a threshold set say 30 minutes, then it is a bad
process and consumes CPU time more than it is supposed too.
In this paper we would talk about how a runaway brought the database to its knees and
derailed our Auto Invoice program run and what we put in place to check and identify that
a process is captured periodically and monitored by both the DBA’s and the developers.
Click Here to view the paper.
Using LDAP as an Oracle Professional - Part I (December 2002)
By Bill Coulam
It often seems that new Oracle releases include features you’re
not likely to use in the near future, like AQ, Oracle Wallet, iFS, analytics, etc. You make a
mental note and move on. One new feature, LDAP integration, should not be dismissed so
quickly.
In this paper, we will look at how LDAP began, its best qualities, basic terminology,
LDAP URLs, searches and filters, as well as where Oracle is headed with LDAP. In Part II,
which will be featured in January, a case study is presented where the author converted a
custom, table-based, web security framework to one using an LDAP directory server.
Click Here to view Part I of the paper.
Using LDAP as an Oracle Professional - Part II (January 2003)
By Bill Coulam
It often seems that new Oracle releases include features you’re not
likely to use in the near future, like AQ, Oracle Wallet, iFS, analytics, etc. You make a mental
note and move on. One new feature, LDAP integration, should not be dismissed so quickly. In Part I
of this paper, we looked at how LDAP began, its best qualities, basic terminology, LDAP URLs,
searches and filters, as well as where Oracle is headed with LDAP.
In Part II, a case study is presented where the author converts a custom, table-based, web security
framework to one using an LDAP directory server.
Click Here to view Part II of the paper.
All About Data Block Corruption in Oracle (January 2003)
By Vijaya R. Dumpa
Oracle allocates logical database space for all data in a database.
The units of database space allocation are data blocks (also called logical blocks, Oracle
blocks, or pages), extents, and segments. The next level of logical database space is an extent.
An extent is a specific number of contiguous data blocks allocated for storing a specific type
of information. The level of logical database storage above an extent is called a segment. The
high water mark is the boundary between used and unused space in a segment.
Click Here to view the paper.
Oracle 8i Row Chaining and Migration (February 2003)
By Gaurav Sharan Gupta
In Oracle we sometimes come across poor performance in databases.
Though there may be several reasons for low performance, you can prevent some of them by properly
designing and/or diagnosing the database.
Row Migration (RM) & Row Chaining (RC) are two potential problems that can be prevented. By
suitably diagnosing RM/RC, you can improve database performance.
Click Here to view the paper.
Creating a Hot Backup Script (March 2003)
By Munish Kumar
This PL/SQL code can be used to create the hot backup script for any
windows database. This query asks for inputs for certain OS/Database related parameters.
Click Here to view the script.
The Art & Science of Oracle Performance Tuning (sample chapters) (March 2003)
By Christopher Lawson
Solving or planning for performance issues is a core part of the
database professional's toolkit. The Oracle database is very flexible, making it suitable for a wide
range of applications but presenting a bewildering set of tuning choices to the inexperienced.
Tuning Oracle is as much about approach as understanding the technology. It is more than tweaking
parameters, or following a set prescription - it involves matching application-specific knowledge
with what's happening inside the database.
Based on the author's long experience working with Oracle, the book uses a five-step model to help
identify, isolate, and fix the causes of non-performance. This book shows you how to approach
problems, get the information you need from Oracle, and follow the process through to success.
Click Here to view Chapter 1.
Click Here to view Chapter 7.
Click Here for more information on the book.
Create Many Tables, Constraints and Data (April 2003)
By Daniel Norwood
This function allows users to create 4,000 tables, 32,000 foreign key
constraints, and 16 million rows of data for testing purposes.
Click Here to view the script.
Killing the Oracle DBMS_JOB (April 2003)
By James F. Koopmann
Take control of Oracle's queue with a step by step approach to getting
rid of those pesky DBMS_JOBs.
Let's face it, Oracle's job scheduling facility is a wonderful tool for scheduling Oracle related
jobs without having to maintain a cron job on Unix or an AT job in windows. It is also very robust
and reliable. It is that very reliability and robustness that gives many of us our problems.
If you have any form of jobs running on your system, you will at one time or another come across the
issue of a run-away job that just doesn't seem to want to end. Or maybe you will try and shutdown
the database only to find out that it is waiting to complete a job. I would like to offer some help
in the management of those job queues when they just don't seem to want to end or go away.
Click Here to view the article.
Create DDL for all Profiles in a Database (May 2003)
By Anand Subramaniam
This utility is a script to generate DDL for all profiles in a
database as well as their underlying functions. This script uses the UTL_FILE feature of PL/SQL. To
run this script, users should have the "UTL_FILE_DIR" parameter configured in the init.ora file.
Click Here to view the script.
Click Here to view the output script.
Offensive Runaways - Defensive DBAs - II (May 2003)
By Shankar Govindan
In my first paper, I
discussed what prompted me to write a script to track long running programs that were consuming CPU
in an Oracle Application environment. In this paper we will look at what happens when a session
process becomes a runaway in a Data warehouse environment and wrecks your parallel queries.
Click Here to view the paper.
More Examples of Interpreting Wait Events to Boost System Performance
Part 1: What are Wait Events? (May 2003)
By Roger Schrag & Terry Sutton
In early 2002 Roger Schrag published a paper entitled, "Interpreting
Wait Events to Boost System Performance." That paper began with a definition of wait events and
techniques for collecting wait event information, and then went on to discuss four examples of how
wait event data had been used to solve real-life performance problems. The impetus for writing that
paper had been that, while many resources were available that listed the wait event v$ views, we
were not aware of any publication that actually explained how to use the wait event interface to
solve problems or boost system performance.
As we write this paper in early 2003, we still are not aware of any such publications. Now Roger
Schrag has teamed up with fellow Oracle DBA Terry Sutton to document more examples of how Oracle's
wait event interface can be used to solve real-world problems. In essence, this paper is a sequel
to last year's paper. If you haven't read the first one, you may view it at
http://www.dbspecialists.com/presentations.html.
You can read the two papers in either order.
In part one of this paper, we will define what wait events are. If you have read the previous paper
or are already familiar with the wait event interface, we still encourage you to read this section as
we've added some enhancements and new details regarding Oracle 9i.
Click Here to view the paper.
Displaying Tablespace Usage with a Graph (June 2003)
By Andrew Simkovsky
The ts_used.sql displays the total space and allocated space
for all of the tablespaces in a database. The output includes a bar graph representing the
percentage full for each tablespace, and also displays which tablespaces are offline.
Click Here to view the script.
More Examples of Interpreting Wait Events to Boost System Performance
Part 2: Collecting Wait Event Information (June 2003)
By Roger Schrag & Terry Sutton
In part one of this paper, (found in the May 2003 issue), we
defined wait events. In part two of this paper, we will explain how to collect wait event
information. If you have read the previous paper or are already familiar with the wait event
interface, we still encourage you to read this section as we've added some enhancements and
new details regarding Oracle 9i.
Click Here to view the paper.
Sharing Oracle 9iAS Experiences!!! (June 2003)
By Pradeep Navalkar
This paper aims to provide a background of our systems, and
share some of our experiences with the Oracle 9iAS product. Note that this paper is not
intended to fully describe the Oracle 9iAS product.
Click Here to view the paper.
More Examples of Interpreting Wait Events to Boost System Performance
Part 3: How Wait Event Information Can be Used to Boost System Performance (July 2003)
By Roger Schrag & Terry Sutton
In part one of this paper, (found in the May
2003 issue), we defined wait events. In part two of this paper (found in the
June 2003 issue), we explained how to collect wait event information. If
you have read the previous paper or are already familiar with the wait event interface, we
still encourage you to read this section as we've added some enhancements and new details
regarding Oracle 9i. In part three of this paper we'll move on to new examples of how wait
event information paved the way to solving real-world performance problems. Our feeling is
that the more examples of wait event usage you are exposed to, the better position you'll be
in to put the wait event interface to work for you when you most need it.
Click Here to view the paper.
Encryption and DBMS_OBFUSCATION_TOOLKIT (July 2003)
By Bob Mycroft
There are times when data in your system is highly sensitive
and it is required that the data is encrypted. Oracle supplies a package called
DBMS_OBFUSCATION_TOOLKIT, which allows us to encrypt and decrypt data by applying one of
two encryption algorithms and an encryption key. This article should be of interest to both
the DBA and developer, especially when designing a new schema where some data is seen to be
particularly sensitive.
Click Here to view the paper.
Create a Data Mart or Data Warehouse Time Dimension (August 2003)
By Steven Hauser
A datamart or data warehouse will usually need a time
dimension to use for date queries that look at periods, weeks, etc. Here is an example of
how to generate one from the basic date entry and the Oracle date functions. The same idea
can be used in DB2, Informix, Postgresql, etc.
Click Here to view the script.
So You Want to Use Oracle's SPFILE (August 2003)
By James F. Koopmann
Oracle's traditional method of storing parameters in the
INIT.ORA file has given way to a more robust method - the server parameter file (SPFILE).
Learn what truly works in converting and maintaining your parameters without ever having to
use an editor again.
Click Here to view the article.
Script to Query on Current Transactions and Table Locks (September 2003)
By Jeff Hunter
This script will query on current transactions and all table
locks. The script is split into two parts: (1) A summary of all table locks and (2) the
transactions (along with I/O stats) that are happening.
Click Here to view the script.
Microstate Response-time Performance Profiling, Part 1 (September 2003)
By Danisment Gazi Unal
Getting optimum performance for mission-critical Oracle systems
is an extremely complex task. For senior Oracle DBAs, measuring internal services waits within
an Oracle database is a critical aspect of advanced response-time profiling. The accuracy of
measurements is an important factor in all types of research. However, there are no 100-percent
accurate measurements in Nature; there are always some distortions in the measurements. How can
a method be accepted as an accurate method? The answer depends on the impact of measurement
errors.
The goal of this article is to adapt microstate accounting, which is a more accurate measurement
technique provided by OS (operating system) vendors, to database management systems (DBMSs).
Part 1 of the article outlines the current measurement techniques available and the errors
that can occur with them. Part 2 will discuss how to correct these errors and introduces the
theoretical approach of Microstate Response-time Performance Profiling.
Click Here to view the paper.
End Backup Script (October 2003)
From Think-Forward.com
IF a hot backup script fails for some reason, the tablespaces
will still be in hot backup mode until an ALTER TABLESACE END BACKUP command is issued.
This script generates and runs an END BACKUP script based upon those database which are
currently flagged as ACTIVE in the v$backup table.
Click Here to view the script.
Helper Tables (October 2003)
By Kevin Meade
Helper tables remind me of Calculus class. Remember Calculus (I
applaud anyone who truly understood this stuff cause I just didn't get it). But I do remember
one thing vividly that I did get and that I use all the time these days (even though it applied
to a different venue). I remember those Calculus problems that were either very difficult to
solve or not solvable at all. Then I remember the idea of transformation where in, the professor
did something seemingly useless that in turn changed the whole problem into something way
simple. For example, he would add 0 or divide by 1 (maybe both), neither operation of which
could possibly change the answer (hey the identity matrix). But he would do it in two steps in
order to introduce two canceling but very real and opposing values to different parts of an
equation. In the end he was just adding "non-relevant" information to the process. But doing
so let him play with the pieces of the puzzle in order to solve his problem.
Using helper tables in SQL is like adding 0 or dividing by 1 in math. The table in and of
itself looks pretty useless (some might even say stupid). Using one won't change what you
want to do, but it will change the way you can do it, by giving you access to data you didn't
have readily available at first. Let us take an example in point.
Click Here to view the article.
Microstate Response-time Performance Profiling, Part 2 (November 2003)
By Danisment Gazi Unal
Getting optimum performance for mission-critical Oracle systems
is an extremely complex task. For senior Oracle DBAs, measuring internal services waits within
an Oracle database is a critical aspect of advanced response-time profiling. The accuracy of
measurements is an important factor in all types of research. However, there are no 100-percent
accurate measurements in Nature; there are always some distortions in the measurements. How can
a method be accepted as an accurate method? The answer depends on the impact of measurement
errors.
The goal of this article is to adapt microstate accounting, which is a more accurate
measurement technique provided by OS (operating system) vendors, to database management
systems (DBMSs). Part 1 of the article outlined the current measurement techniques available
and the errors that can occur with them. Part 2 discusses how to correct these errors and
introduces the theoretical approach of Microstate Response-time Performance Profiling.
Click Here to view the paper.
Script to Dump Contents of a BLOB Column (December 2003)
By Jeff Hunter
This script can be used to dump the contents of a BLOB column.
The user will be prompted for the OWNER, TABLE_NAME, and COLUMN_NAME for the BLOB column to
read from. The anonymous PL/SQL block will write the contents of the BLOB to a file named
using the format:
OWNER_TABLE_COLUMN_<counter>.out
Click Here to view the script.
Tuning Database Buffer Cache (December 2003)
By Vikash Varma
Buffer pool or buffer cache is a memory structure within Oracle
SGA that is used for caching data blocks in the memory. Accessing data from the memory is
significantly faster than accessing data from disk. The goal of block buffer tuning is to
efficiently cache frequently used data blocks in the buffer cache (SGA) and provide faster
access to data.
Find out how to tune oracle database buffer cache beyond buffer hit ratio. This article
presents a step-by-step guide for tuning and efficiently utilizing database block buffer.
Click Here to view the article.
Script to Show SGA Pools (January 2004)
By Philippe de Saint Aignan
This script shows the different SGA POOLS, then sums up the UGAs & PGA. The percent of the
shared_pool represents the percent of the allocations / total shared pool memory. For UGA &
PGA pools, the latter column tries to evaluate the UGA & PGA sizes with the largest number of
sessions on.
Click Here to view the script.
Optimizing Oracle 10g on Linux using Automated Storage Management (January 2004)
By Bert Scalzo
I often react to new Oracle releases like Steve Martin
acted in the movie "The Jerk" when the new phone books arrive. I cannot help but
to get excited about all the new technology that Oracle routinely delivers. But
with the release of Oracle 10g, that enthusiasm cannot be overstated. And while
this Oracle version delivers numerous nifty new features, we’ll examine just
one, Automated Storage Management (ASM), which makes Linux database disk space
management a snap.
Click Here to view the article.
9i RAC: Manual Backup and Recovery (January 2004)
By Shankar Govindan
When we plan to move a large database or a heavily used OLTP database to a cluster setup, to
get enough mileage from the horizontal scaling of 9i RAC, we normally have lots of questions
about how we are going to handle the various database maintenance issues that are traditionally
done and how we are going to set up the same as well as what changes or tools need to be in
place to handle RAC.
In this paper we are going to look at one of the important administration jobs, the backing up
of a 9i RAC. We will also look at how we can recover from a simple data file loss or from the
other extreme, a disaster recovery.
Click Here to view the article.
Script to Catch Sample Wait Parameters (February 2004)
By Steve Adams
It is difficult to catch buffer busy waits and in particular the wait parameters, when
querying V$SESSION_WAIT because the waits are sometimes transient despite being very frequent.
One approach is to query V$SESSION_WAIT multiple times within a single query. This prolongs the
query execution time and greatly increases your chances of catching sample wait parameters
without resorting to tracing. The following script illustrates this technique, which is of
general usefulness in quite a number of situations.
Click Here to view the script.
Writing Better SQL Using Regular Expressions (February 2004)
By Alice Rischert
A new feature of Oracle Database 10g vastly improves your ability to search and manipulate
character data. This feature, regular expressions, is a notation for describing textual patterns.
It has long been available in many programming languages and a number of UNIX utilities.
Oracle's implementation of regular expressions comes in the form of various SQL functions and a
WHERE clause operator. If you are unfamiliar with regular expressions, this article can give
you a glimpse into this new and extremely powerful yet seemingly cryptic capability. Readers
already familiar with regular expressions can gain an understanding of how to apply this
functionality within the context of the Oracle SQL language.
Click Here to view the article.
Database & User Connection Information (March 2004)
By Michael Selvaggio
The attached anonymous PL/SQL block is useful to determine information about the connected
user and to which database they are connected to. It makes use of the UTL_INADDR package which
can return the IP address of any machine name or the name for a given IP address. This avoids
having to start a host session to run a ping or nslookup. The first call to UTL_INADDR uses the
IP address retrieved from SYS_CONTEXT for the connected user and returns the machine name. The
next 2 calls pass no parameters and get the Database Server name and IP address.
set serveroutput on
set verify off
declare
v_gname varchar2(256);
begin
select global_name into v_gname from global_name;
dbms_output.put_line('User: '||user);
dbms_output.put_line('Database: '||v_gname);
dbms_output.put_line('Client IP: '||
sys_context('USERENV','IP_ADDRESS'));
dbms_output.put_line('Client Name: '||
utl_inaddr.get_host_name(sys_context('USERENV','IP_ADDRESS')));
dbms_output.put_line('DB Server IP: '||utl_inaddr.get_host_address);
dbms_output.put_line('DB Server Name: '||utl_inaddr.get_host_name);
end;
/
Click Here to view the sample output.
Tuning PGA_AGGREGATE_TARGET in Oracle 9i (March 2004)
By Brian Peasland
Oracle 9i introduced the PGA_AGGREGATE_TARGET parameter to help better manage session
working areas in a session’s Program Global Area (PGA). This paper discusses available methods
to help tune this new Oracle 9i parameter.
Click Here to view the article.
Check Password (April 2004)
By Dieter Oberkofler
This function allows to check if a user/password combination is valid on a given server.
This is usually not possible from within PL/SQL and Oracle does not offer any build-in mechanism
or workaround to do so.
Click Here to view the script.
High Availability Using Transparent Application Failover On Oracle Real Application Clusters (April 2004)
By Murali Vallath
94% availability of a football player indicates that the player has missed one game of a
season. However, 99.97% availability of a system indicates a downtime of 2.5 hours in a year.
Today’s business requirements are to meet 99.99% or 99.999% availability, which indicates .5
hours or no downtime. To meet these high availability requirements with no downtime in a year,
the factor critical for success is for systems to provide for auto failover when one
participating system fails. If this does not occur, when a system or a participating node
fails from a cluster, then a considerable amount of time will be used in migrating the user
from the failed node to another, (reestablishing the database connection, re-executing the
query, user having to browse through the screen to his/her last view etc).
Click Here to view the article.
BUGBUSTER - V$SQL_PLAN causes ORA-07445 (May 2004)
By Garry Robinson
Affects Versions: 9.2.0.1.0, 9.2.0.2.0, 9.2.0.3.0
Fixed in: 9.2.0.4.0
Symptoms:
Using a WHERE clause on queries against the V$SQL_PLAN table causes sessions to disconnect.
SQL> select * from v$sql_plan where address='000000038DAEB370';
select * from v$sql_plan where address='000000038DAEB370'
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
A glance in the alert.log shows an ORA-07445 error and a trace file left in user_dump_dest.
Here is an extract from the trace file:
*** 2003-09-16 11:35:57.019
*** SESSION ID:(25.3760) 2003-09-16 11:35:57.010
Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object),
addr: 0x1f8, PC: [0x101648efc, 0000000101648EFC]
*** 2003-09-16 11:35:57.024
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [0000000101648EFC] [SIGSEGV]
[Address not mapped to object] [0x0000001F8] [] []
Current SQL statement for this session:
select * from v$sql_plan where address='000000038DAEB370'
Workaround
You can workaround this problem by creating a temporary version of the V$SQL_PLAN table and
excluding the FILTER_PREDICATES column which is a VARCHAR2(4000). Cut and paste the code
provided and use the temporary table SQL_PLAN_FIX in place of V$SQL_PLAN.
Click Here to view the script.
9i RAC: Cloning to a Single Instance (May 2004)
By Shankar Govindan
Cloning is a process that most DBAs are aware of that needs to be done often to keep the
production database from being vandalized by then developers and UAT’s. A production database
needs to be cloned to test or development or training databases, so that the Application
development and any customization can be tested and validated, before porting to production.
User acceptance tests are not done and signed off after you go production, but by testing on
a copy or clone of production at a point in time. Some sites need to clone often where data
integrity and validation is important, whereas others need to be cloned once in few weeks.
Either way, cloning is done to test upgrades or when patches are tested on a production copy
before applying it to production. So, knowledge of cloning process is a must in any DBA’s job
profile.
In this paper we are going to look at one of the important administration jobs, the cloning of
a 9i RAC. We will look at how we could clone a 9iRAC database which can have any number of
nodes (4 is the limit I think on Solaris and depends on the OS and cluster volume managers)
to a single instance. When I say a single instance, it is still going to be a single 9iRAC
instance for a RAC database and not a non-RAC database. To down grade after a clone, look
up the downgrade document in Metalink.
Click Here to view the article.
Fine-Grained Auditing for Real-World Problems (May 2004)
By Arup Nanda
Traditional Oracle Database auditing options let you track the actions users perform on
objects at the macro level—for example, if you audit for SELECT statements on a table, you
can track who selected data from the table. However, you don't know what they selected. With
data-manipulating statements— such as INSERT, UPDATE, or DELETE—you can capture any changes
by using triggers or by using the Oracle LogMiner utility to analyze the archived logs. Because
simple SELECT statements are non-data-manipulating, they neither fire a trigger nor go into
archived logs that you can mine later, so these two techniques fall short where SELECT statements
are concerned.
Oracle9i Database introduced a new feature called fine-grained auditing (FGA), which changed
all that. This feature lets you audit individual SELECT statements along with exact statements
issued by users. In addition to simply tracking statements, FGA provides a way to simulate a
trigger for SELECT statements by executing a code whenever a user selects a particular set of
data. In this three-part series of articles, I'll explain how you can use FGA for solving
real-life problems. This first installment focuses on building a basic FGA system.
Note: This article was previously published on OTN. Copyright 2004 Oracle Corporation. All
rights reserved.
Click Here to view the article.
Fine-Grained Auditing for Real-World Problems, Part 2 (June 2004)
By Arup Nanda
In the Part
1 of this series, I described how to build a Fine-Grained Auditing (FGA)
system to audit select statements, capturing the statements depending on certain
conditions—a task impossible in regular auditing or though the use of DML
triggers and the Log Miner tool. In addition to creating an audit trail, we also
saw how we can make it execute a user-defined procedure when the conditions for
audit are met.
In this installment, we will explore advanced FGA
concepts such as application user models and the reconstruction of data viewed
by the user.
Note: This article was previously published on OTN. Copyright 2004 Oracle Corporation. All
rights reserved.
Click Here to view the article.
Transparent Clustered Database Failover Using JAVA (June 2004)
By Sudhir Movva & Murali Vallath
The best failover is the one that no one notices.
Unfortunately, even though Oracle has been architected to recover very quickly,
failures can severely disrupt users by dropping connections to the
database. There various kinds of user
operations against the database, INSERT, UPDATES, DELETS and SELECTS. Off these various
types of operations, by
implementing TAF with out making any application changes, only SELECT statements are
failed over. Well this is good for a data warehouse
operations, were most of the operations are SELECT queries. However in the real world,
operations against
the database are not limited to just SELECT queries, DML operations (INSERT,
UPDATE and DELETE) are critical and failover without moving such operations
transparently does not provide a true user friendly environment.
Click Here to view the article.
Fine-Grained Auditing for Real-World Problems, Part 3 (July 2004)
By Arup Nanda
In the previous two installments of
this series, I introduced you to the concept of Fine-Grained Auditing (FGA) used
to track select statements in Oracle9i Database and up. I also explained how to
use the feature in complex environments such as within a web application via
application contexts and client identifiers. These two articles have enough
information for you to build a FGA setup for almost all types of database
systems, however complex. In this third and final installment, I will explain
the FGA enhancements Oracle Database 10g brings to the table.
Note: This article was previously published on OTN. Copyright 2004 Oracle Corporation. All
rights reserved.
Click Here to view the article.
Supercharging the Pump (August 2004)
By Jonathan Gennick
New import and export features
introduced in Oracle Database 10g, called Oracle Data Pump, represent a radical
departure from the client/server approach to which database users have grown
accustomed over the past several generations of Oracle Database. The server now
runs export and import jobs. You can load or unload massive amounts of data
quickly using parallelization, and you can adjust the degree of parallelism on
the fly. Export and import jobs are now restartable, so a failure doesn't
necessarily mean starting over. The API is exposed and easy to use; it's simple
to create an import or export job from PL/SQL. And once started, such jobs run
in the background, but you can check status and make modifications, from
anywhere, using the client utilities.
Note: This article was previously published on OTN. Copyright 2004 Oracle Corporation. All
rights reserved.
Click Here to view the article.
Resolving Oracle Latch Contention (September 2004)
By Guy Harrison
This white paper presents an
overview of how the Oracle RDBMS uses latches to protect shared memory, the
typical causes of and solutions to latch contention, and summarizes some
research conducted at Quest Software that suggests that manipulating the (now)
undocumented parameter “_spin_count” can be effective in relieving otherwise
intractable latch contention problems.
Click Here to view the article.
Skip Scan Index Access (October 2004)
By Jeff Hunter
In Oracle, releases before Oracle9i, the Cost Based Optimizer (CBO) would only use a composite
index (sometimes referred to as a concatenated index) if you referenced the index prefix column in
the WHERE clause of the SQL statement. If the SQL statement omitted the index prefix column of the
composite index, the CBO would not use the index.
One solution would be to simply create another index on the non-prefixed index columns in order
for Oracle to use an index for faster access to the data. This method, however, may add considerable
overhead when Oracle had to update several indexes during DML operations. A new feature included
with Oracle9i called Skip Scan Index Access allows the Oracle CBO to use a composite index even when
the index prefix column in a SQL statement has been omitted. Using this new feature, you will not
have to create an additional index to provide faster access to your data. This article provides a
brief introduction to Skip Scan Index Access and how it can improve the response time of your
queries.
Click Here to view the article.
Tablespace Usage Script (November 2004)
By Andrew Simkovsky
This script will help determine tablespace usage in a database.
Click Here to view the script.
Resumable Import Sessions (November 2004)
By Andrew Simkovsky
It is very tough for a DBA to determine the size of the data that would get populated into
each tablespace of the database when he/she imports the data from the dump file(s) given by
another DBA. While importing from export dump files, DBAs used to be un sure if the import would
succeed without any “lack of space issue” in the respective tablespaces, prior to the release of
oracle 9i. To get rid of this issue, Oracle has introduced a method that enables the Import session
to withstand for a stipulated time without terminating the session as such. This way, the DBA can
skip the space related problems during the Import session.
Click Here to view the article.
Creating A Cascade Update Set of Tables (December 2004)
By Mike Ault
Many times we have the situation where a master table may be updated and dependent tables are
left without a link back to the master. In this situation a cascade update option would be a nice
one to have. Unfortunately Oracle Corp. doesn't provide this capability in a native manner so a
PL/SQL option must be developed.
An example of a need for a cascade update would be in the situation where a dependent table
could be dependent on one or more tables. For example, there may be two types of customer, one
who has bought from us and we have marketing information for and another that is new to us, may
buy from us, but may go with another vendor. If there are dependent tables (such as an interaction
log that tracks phone calls to and from customers) it would be nice to be able to switch the
dependencies from our new customer table to our established customer table.
Click Here to view the article.
Procedure to Identify SQL Statement (January 2005)
Extracted from the DBA Job Responsibilities Conference, Quest Oracle Pipetalk Forum
Assume the following scenario: The production database is in India. One user is accessing an
application from the US. The query he used to execute everyday in 2/3 seconds, is now taking more
than a hour since this morning. You, as a DBA, can not get a screenshot of that user's machine. The
user is unable to tell you which application he is running, or which SQL query is creating the
problem.
Solution: From V$SESSION, you can use his machine name to find his session ID (sid). Using that
sid, you can use the attached procedure to pull out the SQL statement.
Click Here to view the script.
Data Loading with External Tables (January 2005)
By Brian Peasland
This paper shows how Oracle 9i’s new External Tables can significantly improve data loading time
for large amounts of data. This paper can be used by Database Administrators, Application Developers,
and Project Leaders.
Currently, I am working on a project that needs to load a large number of rows on a daily basis.
Many on this project want to write an application that performs this load. I am of the opinion that
one would be better served to use Oracle’s tools specifically designed to load large amounts of data,
rather than write our own application. This paper was written to show the differences between an
application loading data from a file compared to Oracle’s built in tools to accomplish the same
thing. As we will see, the applications to load the data do not compare to the speed of Oracle’s
utilities.
Click Here to view the paper.
Report on Redo Log Contention (February 2005)
By Jeffrey Hunter
This script is used to report on overall redo log contention for the instance since the instance was last started.
Click Here to view the script.
Creating CSV Files from Tables (March 2005)
By Mike Selvaggio
This script is a low cost utility for creating a CSV file from an Oracle Table. It creates a
compressed CSV file, the DDL needed to create the table and a sample SQL*Loader control file. It
handles most character, number and date datatypes and can easily be modified if needed.
Click Here to view the script.
Compressed Composites (Oracle 10g Compression) Explained (March 2005)
By Mark Rittman
If you've an interest in the OLAP Option and you've read some of my recent articles on the new
features in Oracle 10g OLAP, you've probably seen a feature called "compression" mentioned. In this
DBAZine article I described compression as "a novel form of cube compression, which promises to both
enhance query performance (by retrieving fewer blocks of data for a given logical amount of data)
and drastically reduce batch loading and aggregation times, saving disk space on the way. Compression
in Oracle 10g OLAP is more about improving performance and scalability than saving disk space
(although that’s a nice side effect). The net result of this is that, in a given batch window,
Oracle 10g OLAP can now load and aggregate more data than before, and for a given amount of disk,
can store more information than before. This, plus big advances in scalability internally around
areas such as very big composites, makes Oracle 10g OLAP potentially a very effective platform when
building particularly large cubes." So how does this compression feature actually work?
Click Here to view the paper.
Compiling Triggers (April 2005)
By Material Dreams
This procedure compiles all triggers in the specified schema. This process only takes place in
the server and therefore is usually is much faster then other spooling based scripts.
Click Here to view the script.
Average Write Time to Online Redo Logs (May 2005)
By Tim Gorman
This SQL*Plus script is a query to show average write time to online redo logs on a day-by-day
as well as an hour-by-hour basis over time, using data in the STATSPACK repository.
Click Here to view the script.
Graceful Failover and Failback Procedures, in Non-Dataguard Environments (May 2005)
By Brian Keating
This document describes the procedures to run “graceful” failovers and failbacks of hot
standby databases, in environments that are not using Dataguard. A “graceful” failover is one
that does not require databases to be opened with the “resetlogs” option – and as a result,
graceful failbacks do not require the primary database to be rebuilt (i.e., they do not require
the standby database’s datafiles to be copied to the primary server.) Graceful failovers and
failbacks are also known as “switchovers” and “switchbacks”.
Click Here to view the paper.
Setting the OPTIMIZER_INDEX_COST_ADJ Parameter (June 2005)
By Tim Gorman
This SQL*Plus script is used to provide more usable information when deciding how to set the
parameter OPTIMIZER_INDEX_COST_ADJ parameter.
Click Here to view the script.
Protect from Prying Eyes: Encryption in Oracle 10g, Part 1 (June 2005)
By Arup Nanda
Simply put, encryption is the art of disguising data. Suppose the combination to my wall
safe is 37529. Because I am not very good at remembering numbers, I keep on forgetting it. So
I come up an idea — I write it down on a piece of paper and tape it on the safe! There it is —
it’s there when I need it, and I don’t have to worry about forgetting it. What a great idea!
But, there is a slight problem. If a burglar happens to see it, there is no need for him
to try to crack the code — it’s all there in plain sight! So, I change the strategy a little
bit — I decided to disguise the combination or alter it in such a way that only I know how it
was altered. For instance, I may decide to reverse the digits; the number becomes 92573, which
is on the piece of paper. The burglar will see the number 92573, which is not the safe
combination. He will not be able to guess the correct one since he does not know how it was
altered in the first place.
Click Here to view the article.
Protect from Prying Eyes: Encryption in Oracle 10g, Part 2 (July 2005)
By Arup Nanda
In Part 1 of this article, we discussed some of the basics of data encryption, including
what is encryption, encryption algorithms, what type of encryption scheme to use when, and more.
Now, let’s take a look at the other side of encryption: decryption and its elements.
The DECRYPT function in the Crypto package provides the reverse of the encryption. Let’s
decrypt the value we encrypted in part 1 of this article. Since the encryption value is in
RAW, we can write the encryption and decryption in one session and pass the encrypted value.
For this, we have defined a SQL*Plus variable named enc_val, as shown in line 3 in the following
code. Lines 4 through 21 show the piece of code used to perform encryption of an input value
called “ConfidentialData” and the rest of lines show the decryption of the encrypted value in
the variable enc_val.
Click Here to view the article.
Case Study: Using “On Servererror” Triggers to Work Around ORA-4031s (August 2005)
By Brian Keating
One of the new features in Oracle 10g is “automated shared memory management”, or “ASMM”.
When this feature is enabled, the instance, itself, will dynamically increase and decrease four
of the SGA structures, in response to the current workload in the instance. One of main benefits
of this feature is that it will (hopefully) minimize the possibility of ORA-4031 errors in the
instance – because this feature will presumably increase the memory available to the shared pool
automatically, before the onset of an ORA-4031.
Click Here to view the article.
Optimize Oracle 10g on Linux: non-RAC ASM vs. LVM (September 2005)
By Bert Scalzo
It's been over a year since my first and very enthusiastic ASM article titled
"Optimizing Oracle 10g on Linux Using Automated Storage Management", still
currently available at:
Since then, quite a lot has changed in terms of the software technologies now
available. The software technology landscape has so extensively changed
as to reopen the entire ASM debate. In my first ASM paper I simply assumed
either people would be utilizing ASM or not – without considering RAC usage
ramifications. What numerous people have told me this past year at shows,
conferences and on-site visits is that while ASM makes obvious sense for RAC
environments, they also desired to know whether ASM was in fact a viable
alternative for non-RAC environments. Specifically, does ASM perform as well as
Linux file systems using a Logical Volume Manager?
Of course that's a challenge far too enticing to pass up – especially when
there are tools like Quest's Benchmark Factory that make such tests trivial. So
on to the races!
Click Here to view the article.
Internal Implementation of Oracle Locks (Enqueue) (September 2005)
By Harish Kalra
Oracle server uses locks to provide concurrent access to shared resources whereas it uses
latches to provide exclusive and short-term access to memory structures inside the SGA. Latches
also prevent more than one process to execute the same piece of code, which other process might
be executing. Latch is also a simple lock, which provides serialize and only exclusive access to
the memory area in SGA. Oracle doesn’t use latches to provide shared access to resources because
it will increase CPU usage. Latches are used for big memory structure and allow operations
required for locking the sub structures. Shared resources can be tables, transactions, redo
threads, etc. Enqueue can be local or global. If it is a single instance then enqueues will
be local to that instance. There are global enqueus also like ST enqueue, which is held before
any space transaction can be occurred on any tablespace in RAC. ST enqueues are held only for
dictionary-managed tablespaces. These oracle locks are generally known as Enqueue, because
whenever there is a session request for a lock on any shared resource structure, it's lock
data structure is queued to one of the linked list attached to that resource structure (Resource
structure is discussed later).
Click Here to view the article.
For questions
or comments on this site: webmaster@quest-pipelines.com
All content Copyright
© Quest Software, Inc. All rights reserved.
|