Vous êtes sur la page 1sur 12

AVOIDING A DATABASE REORGANIZATION

Understanding, detecting, and eliminating harmful database fragmentation

Craig A. Shallahamer
Oracle Services - System Performance Goup
02-NOV-94 V2.2

Understanding the above situation leads one


Abstract to ask questions such as: What type of
fragmentation is my database suffering
Experience indicates most databases are from? Which objects are suffering? Can I
reorganized to eliminate database obtain the same performance improvement
fragmentation thus increasing performance. by defragmenting specific objects rather
However, reorganizing a production than the entire database? The answers to
database is very expensive (labor and these questions are complex. However, by
downtime) and induces risk. These obstacles understanding how different types of
vividly manifest themselves when working fragmentation manifest themselves in a
with very large databases (VLDBs). A database, detecting the fragmentation,
VLDB site cannot afford the downtime and understanding if the fragmentation is a
risk associated with reorganizing their entire performance detriment, and precisely
database. While performance usually resolving the fragmentation, one can develop
improves, focusing on a few select objects a strategy to avoid a costly and risky full
yields similar performance gains. database reorganization.
This paper addresses five different database
This paper presents the real and perceived fragmentation types.
risks and benefits of performing a complete
database reorganization, by addressing 1. Tablespace freespace bubble
database fragmentation types, how they are fragmentation
created, how performance is impacted, how
to detect them, and how to resolve the 2. Tablespace freespace honeycomb
fragmentation. fragmentation
3. Segment fragmentation
Introduction
4. Table row fragmentation

Your database is slow because its 5. Table block fragmentation


fragmented. Defragment the database and
performance will increase. Database
Administrators (DBAs) have heard this
statement many times from reliable
sources. To solve their performance
problems most DBAs will reorganize their
entire database. Unfortunately, many DBAs
do not consider and do not understand their
reorganization options.
Reorganization and Risk
DB Size

This paper frequently mentions the word


risk. For the remainder of this paper,
references to risk refer to a combination of
human error, hardware failure, and the up-
can not reorg can reorg time requirements versus reorganizing a very
large database (VLDB).
Ability to fully reorganize
The first type of risk is human error. Anyone
Figure 1: As the size of a database grows, the who has rebuilt an Oracle database
opportunity to fully reorganize diminishes understands how easy the rebuild effort can
become complicated and lengthened by
As Oracle databases continue to grow and making a single typographical error. Human
applications become increasingly complex, error will always be with us. Avoiding a
there will come a time when it is impossible database reorganization reduces human
to perform full database reorganizations. intervention and reduces the risk of human
The combined risk and down-time will error.
nullify the opportunity to fully reorganize.
Therefore, a solution must be developed. The second type of risk is hardware failure.
The information presented in this paper will It has happened to me, so it can happen to
naturally lead one towards very you. During a database reorganization
straightforward solutions. My strategy is to reload phase, a disk drive failed. Thankfully
first explain the different types of database my tape backup was good. The larger the
fragmentation followed by solutions to avoid database the more hardware required to
a full database reorganization. support the database. The more hardware
involved, the larger the risk of a single
hardware failure.

The third type of risk involves the effect of


human error and hardware error with very
large databases (VLDBs). There is a direct
Risk

relationship between database size and the


time it takes to reorganize the database.
Recovery time significantly increases as
database size increases. Often up-time
Size of Database
system requirements and the risk associated
with rebuilding a VLDB is too great to
Figure 2: As database size increases so does the justify rebuilding the database.
risk associated with administering the database
system.
Because there are risks associated with
reorganizing a database, it behooves the
database administrator to design and
configure their database to avoid a database the segment's extents. Fifty bubbles will be
reorganization. created when a segment, consisting of fifty
non-adjacent extents, is dropped. If all
Tablespace Freespace Fragmentation extents are adjacent, a honeycomb will be
created. This paper will address both types
of tablespace freespace fragmentation.
Employee Employee

Bubble Fragmentation
FREE FREE

Employee FREE The first tablespace freespace fragmentation


type is commonly known as a "bubble."
FREE FREE Figure 3, Table 1, and Table 2 show a bubble
can be any size and must be surrounded by
Bubbling Honeycombing
other objects. For a bubble to be filled with
data, an entire extent must fit within a
Figure 3: Tablespace freespace fragmentation bubble. Bubbling ruins freespace utility.
manifests itself with single chunks of freespace,
known as bubbling, or contiguous chunks of
To understand the effect of bubbling, let's
freespace, known as honeycombing.
suppose a segment must extend. The
As the name implies, tablespace freespace segment's storage parameters require a ten
fragmentation consists of freespace chunks block extent be created. The server process2
residing within a tablespace. Swiss cheese is scans the free-extent table (Table 2) looking
a good tablespace freespace fragmentation for a ten-block or larger bubble. Since the
model. The cheese represents the data, and entire extent must fit within a bubble, a nine
each hole represents a freespace chunk. block bubble cannot be used. Tablespace
storage is less efficient and performance
Tablespace freespace fragmentation is the suffers because a tablespace containing
result of segments being created and many small bubbles wastes space, and a
dropped. If a segment is dropped, its extents server process wastes time trying to find
become free. For example, if a fifty extent suitable freespace.
table is dropped, fifty freespace chunks are
created. A common misunderstanding is to The freespace acquisition algorithm allows
believe deleted rows produce tablespace one or two free-extent table (fet$) scans.
freespace fragmentation. While deleted rows The first fet$ table pass, as mentioned
result in table block fragmentation, deleted above, is performed in hopes of finding a
rows do not result in tablespace freespace single bubble large enough to contain the
fragmentation. entire extent. If this fails, a second pass is
performed looking for adjacent bubbles that
The type of tablespace freespace can be coalesced to form a single large
fragmentation that results when an object is chunk of space in which the new extent will
dropped depends on the physical location1 of be placed. If suitable freespace is not found,
the message, "ORA-1540 Unable to allocate
1
While queries based around Oracle's data dictionary view may give
the appearance that segment extents are physically contiguous, the
x bytes in tablespace y" is returned.
operating system may have the data scattered throughout a disk(s).
2
Neither Oracle nor any vendor will guarantee data to be physically An Oracle server process is synonymous to the two-task shadow
contiguous. Data block scatter can be eliminated by physically process. The Oracle V6 two-task shadow process is synonymous to an
reordering a table's rows. Oracle7 dedicated server process.
indication of bad segment size selection or
Is tablespace freespace fragmentation a unpredictable segment growth.
performance detriment? The obvious answer Oracle7 helps reduce tablespace freespace
is yes, but the real answer is yes and no. fragmentation. Suppose a ten block extent
Most objects infrequently extend. Therefore, must be created and an eleven-block bubble
two fet$ table scans are not noticeable. is being considered. Oracle7 will create an
Suppose an application creates an interim eleven block extent. The Oracle7 designers
table and inserts rows causing the segment to realized small bubbles waste space and
extend many times. In this case, decrease future segment extension
performance will be affected. In an extreme performance.
case, such as an Oracle import, performance
may increase over 50% by eliminating Tablespace freespace fragmentation can be
tablespace freespace fragmentation.[2] To examined by constructing a simple query
summarize, in most cases tablespace based around the dba_extents data
freespace fragmentation is not a dictionary view (Table 1) or the fet$ table
performance problem, but rather an (Table 2). Figures 2 and 3 show two bubbles
and one honeycomb.

file id block id no. of blks segment name


1 1195 5 SYS.OBJ$
1 1100 1750 free A 1750 block bubble
1 2850 310 SYS.COL$
1 3160 3760 free A 3760 block bubble
1 6920 26 SYS.VIEW$
... ... ... ...
1 9307 8 SYS.COM$
1 9315 3700 free
1 13015 3 free A 5453 block honeycomb
1 13018 1750 free

Table 1: A map of the SYSTEM tablespace.

file id tablespace id block id length size (blks)


1 1 1100 1750 A 1750 block bubble
1 1 3160 3760 A 3760 block bubble
... ... ... ...
1 1 9315 3700
1 1 13015 3 A 5453 block honeycomb
1 1 13018 1750

Table 2: The free extent table, fet$.


While Oracle7 has taken a large step in fet$ scan. If a honeycomb has been
minimizing bubbling, a poorly configured coalesced into a bubble (manually or
application or database will foster bubbles. automatically), it could possibly be used
This is unfortunate, because a tablespace during the first fet$ scan. The honeycomb
must be rebuilt to eliminate bubbles. coalescing process is commonly called
"gluing." The Oracle7 background process
Finally, a solid database configuration is smon periodically3 coalesces honeycombs.
paramount. Nearly fifty percent of all Coalescing Oracle V6 honeycombs can be
database tuning engagements are solved by done manually[2] or by an automated
addressing configuration issues, and not by script.[6] Because Oracle7 periodically
tuning SQL statements. The Optimal coalesces freespace, an application that
Flexible Architecture (OFA)[4] presents a produces honeycombs is less likely to impact
configuration standard is currently in place performance.
at hundreds of production database
installations around the world. Minimally Folklore and myths have lead to the belief
fragmented tablespaces are one of the OFA that tablespace freespace fragmentation is a
guideline benefits. serious performance problem. As the
previous paragraphs have shown, tablespace
freespace fragmentation only affects
Honeycomb Fragmentation application performance when a segment is
frequently created, dropped, or extended.
A honeycomb is the second tablespace These operations are application specific,
freespace fragmentation type. A natural and should be isolated and controlled by
honeycomb contains honey chunks proper segment placement and sizing, and
surrounded by other honey chunks. The proper application processing.
database world is similar. A honeycomb
contains multiple freespace chunks (bubbles)
surrounded by other freespace chunks. Segment Fragmentation
Figure 3, Table 1, and Table 2 show the
difference between bubble and honeycomb The performance impact of multiple segment
fragmentation. extents is a topic that has gained much
attention from within Oracle and its
Honeycomb fragmentation is created like customers. Not only has Oracle's message
bubble fragmentation. The fet$ table been mixed and confused but third party
snapshot (Table 2) shows two bubbles and published books and articles are making
one honeycomb. The freespace acquisition conclusions based upon folklore and
algorithm encompasses both bubbles and conjecture. This section will provide
honeycombs. So just as with bubbling, the information critical to making an informed
performance impact of honeycombs is decision about the performance impact of
manifested only when a segment is multiple segment extents.[7]
frequently created, dropped, or extended.

Bubbling wastes freespace and diminishes


freespace usability. Honeycombs retard 3
A large honeycomb or multiple honeycombs are coalesced a few
space acquisition efficiency. A honeycomb bubbles at a time. For example, smon may take 30 minutes to
completely coalesce a fifty bubble honeycomb.
may only be coalesced during the second
Segment fragmentation occurs at the extent has been spread. Research clearly shows
level, and not the database block or table segment fragmentation does not impact real-
row level. When a segment grows it life production system performance. As the
naturally extends. Once extension has system load increases, the performance
occurred, the segment is technically impact of multiple segment extents
fragmented. decreases.

Segment Segment Number of Segment


Name Type Fragments Fragmentation Heavy Load
Medium Load
Light Load
benefit table 2 yes

Query Time
benefit_n1 index 12 yes
benefit_u1 index 56 yes
bonus table 50 yes
bonus_u1 index 1 no
dept table 75 yes Number of Segment Extents
dept_n1 index 25 yes
emp table 2 yes
emp_u1 index 1 no Figure 5: The performance of multiple segment
extents. Field experience, thought experiments,
and scientific experiments clearly demonstrate as
Table 3: A view of fragmented segments. system load increases, the impact of multiple
segment extents decreases.
Occasionally a multiple extent segment is
initially created to eliminate future extension The below facts and their consequences are
time or to pre-allocate space. However, graphically shown in Figure 5.
intentional segment fragmentation is usually
done to stripe a segment across multiple disk The Facts:
drives. A striped segment usually increases
both query and update performance. Figure Oracle retrieves and writes data by the
4 shows the striped employee table residing block, not by the extent.
on three physical devices.
Oracle's I/O requests (usually less than
32 kilobytes) are queued with other user
requests, and do not have a higher
priority than other user requests.
EMPLOYEE EMPLOYEE
EMPLOYEE
BONUS DEPTARTMENT
EMP DIVISION
EXCHANGE
ITEMS
A maximum of n additional I/O request
SALARY
could be made, where n is the number of
segment extents.
DATA01.DBF DATA02.DBF DATA03.DBF
Disk 1 Disk 2 Disk 3 As the number of I/O requests increases,
Figure 4: Segments are many times intentionally the probability increases that a request
fragmented to increase read performance. This which decreases query performance for
figure shows the EMPLOYEE table (consisting of user x will increase query performance
three extents) striped across three database files.
for user y.
The segment fragmentation performance
threat has been debated, and misinformation
Neither Oracle nor most operating As mentioned above, eliminating segment
systems guarantee that segment data will fragmentation typically does not improve
be physically contiguous. performance, but induces risk and forces
system down time. There are only a handful
Only full-table scans can be affected by of valid cases for rebuilding a segment.
multiple extents.
Rebuild a segment when;
Indexed scans typically reference
scattered data4. 1. The segment is approaching the physical
maximum number of extents5.
Recursive SQL is used when working
with multiple extents. 2. The segment has reached the physical
maximum number of extents.
The data dictionary cache containing
used extents (dc_used_extents) and free 3. Disk striping will increase performance.
extents (dc_free_extents) must be larger
to accommodate more used extent 4. Defragmenting the segment will increase
information (uet$) and free extent performance. For example, when a table
information (fet$). is used in a time sensitive, I/O intensive,
single-threaded operation, placing all
data inside a single extent may increase
The Consequences: performance.
In a production system, it is extremely Row Fragmentation
unlikely a disk will service full-table scan
requests in a single continuous stream
While tablespace fragmentation has been
without interruption.
blamed for many performance problems,
In a production system, disk heads move most DBAs overlook row fragmentation. A
all over servicing competing requests. A row will become fragmented if it enlarges
few extra movements, which are and the entire row can not fit in its current
noticeable on a single user system (E.g., data block. Experts tend to agree that many
PC), are not noticeable to the user. performance problems are the result of row
fragmentation.
In a production system, the net effect of
possible (yet improbable) additional I/Os Row fragmentation, more commonly known
is negligible. as row chaining, manifests itself in two
forms. The most common form occurs when
a row enlarges during an update. If an
Segment fragmentation can be detected by enlarged row will not fit into its block, the
querying the user_segments and the entire row is migrated to another block. A
user_extents data dictionary views (Table forwarding address is left at the original
3). row's block. Unfortunately, all indexes

5
Each segment header block can hold a limited number of extent
pointers. A 2 kilobyte database block can hold 121 extent pointers. A
4
Data blocks referenced by a single index leaf block are usually 4 kilobyte database block can hold 249 extent pointers.
scattered throughout many data blocks.
referencing the row are not updated with the segment fragmentation are causing
new row address. performance problems. As a result, the
classic solution is to rebuild the entire
When a server process retrieves a row via a database. While this eliminates tablespace
full-table scan or an indexed-scan, both the freespace fragmentation and segment
row's original block and its current block fragmentation, it also eliminates row
must be read. This can be a serious fragmentation. Because performance
performance detriment. Figure 6 shows increased after a rebuild, the incorrect
when fragmented row X is retrieved, conclusion is made that tablespace freespace
additional block(s) must be referenced. fragmentation and segment fragmentation
were responsible. Performance increases
because row fragmentation is
eliminated6,rows are tightly packed into each
database block, and the high-water mark is
reset. As a result, many DBAs feel
rebuilding a database is the best solution to
RX
their performance problems.

Have you ever packed for a camping trip


using an itemized list? Imagine if you looked
RX1 Table Data Blocks RX2 up an item on your list and spent time
looking for the item. But instead of finding
the item, you discover a piece of paper
directing you to another location. Your
Figure 6: Chained row X decreases read and write packing speed would be dramatically
performance during both index scans and full-table reduced.
scans. During an index scan the server process
reads index blocks and then reads both row pieces
RX1 and RX2. During a full-table scan, when the The same situation occurs with row
block containing row piece RX1 is read, the server fragmentation. The server process expects to
process jumps and reads the block containing find a particular row in a data block only to
RX2 and then returns to reading blocks after the discover another block must be accessed.
block containing RX1.
While row fragmentation does impact
If a row is too large to fit into a single empty performance, it occurs in very characteristic
database block the row is broken up into situations. Since row fragmentation only
"row pieces" and placed in multiple blocks. occurs when a row enlarges, an application
Row migration can be eliminated but row that only inserts rows will never be affected.
pieces can never be placed into a single
database block. For the remainder of this Batch applications (manually or
paper, references to row fragmentation only automatically) or information repository
refer to row migration. applications will not typically suffer from
row fragmentation. Applications that
It's really quite simple why row frequently update information (E.g., free-
fragmentation has been overlooked for so
long. Many DBAs have concluded that 6
Row fragmentation is eliminated regardless of whether segments are
tablespace freespace fragmentation and exported with "compress=y".
form text entry applications, warehouse A forceful way to prevent row fragmentation
application) may suffer from row is to define a fix length column (char)
fragmentation. instead of the more common variable length
column (varchar).
It is important to check for row
fragmentation because it can sneak up on Variable length columns provide space
you when you do not suspect it. For savings while reducing row fragmentation.
example, a general ledger journal entry Setting the correct column format and the
application generally only inserts rows correct storage parameters minimizes both
causing no row fragmentation. But in this row fragmentation and space wastage. The
actual case, because users did not want to result is efficient database block space usage
forget to enter journal entries at month end, and speedy data retrieval.
at the beginning of each month each journal
entry was entered with a zero amount. At Identifying row fragmentation in Oracle V6
month end the actual figures where entered is centered on the v$waitstat virtual data
and each row's length increased resulting in dictionary view. Oracle7 has made the task
severe row fragmentation and poor financial of identifying row chains very simple.
posting and report performance. Simply analyzing a table and querying the
user_tables view will reveal the number of
Many new Oracle DBAs are appalled Oracle row chains.
does not supply an automatic database
rebuild utility. On the bases of their If a segment containing fragmented rows has
experience with other "database" products, been detected there are two basic ways to
they incorrectly assume rows will naturally solve the problem. If rows are not likely to
fragment resulting in horrendous continue growing, rebuild the table. For
performance. What these neophytes do not example, suppose during a project
recognize is the RDBMS provides a very implementation help text was constantly
powerful weapon to thwart row being updated causing row fragmentation.
fragmentation. Once the project was in production and the
help text was no longer being modified, row
This weapon is the proper use of segment fragmentation no longer occurred. To solve
storage parameters pctfree and pctused.[3] this problem, the help text table must only
The pctfree parameter restricts the amount be rebuilt. Suppose the help text was
of data a block holds during inserts. A larger modifiable by users who sometimes typed in
pctfree setting reserves more space in each freeform notes. In this case, it may be wise
block for row growth. While space is to increase pctfree to reduce the likelihood
wasted during inserts, space can be used of future row fragmentation.
when rows enlarge. The pctused parameter
kicks in after rows have been inserted up to To summarize, row fragmentation
the pctfree level. The pctused setting halts significantly affects database performance
row insertion (by keeping a block off a free during index scans and full-table scans.
list) until pctused percentage data block Performance decreases because two data
space exists. Therefore, to reduce the blocks must be retrieved to access a single
likelihood of row fragmentation, set pctfree row. By understanding column format
high and pctused low. options, segment characteristics, selecting
appropriate storage parameters, identifying
offending segments, and fixing them, the containing 600 rows instead of 150 data
likelihood of row fragmentation can be blocks containing the same 600 rows. Since
virtually eliminated. Oracle retrieves data by the data block and
not by the row, the more tightly packed a
data block, the more "bang for the I/O" you
Table Block Fragmentation receive during retrieval.

Although table block fragmentation is Just as with row fragmentation, table blocks
common, it is difficult to detect. As with do not become fragmented by applications
other forms of database fragmentation, that only insert rows. Unlike row
because table block fragmentation is difficult fragmentation, only when a row is deleted
to detect, it is often overlooked. This is does a table block become fragmented. A
unfortunate. Fragmented table blocks reduce deleted chained row compounds the problem
both full table and index scan performance, since two data blocks will become
and waste space. fragmented when a single fragmented row is
deleted.
A fragmented table block looks like a pile of
"pick up sticks" near the end of the game. The application types that suffer from table
There are plenty of sticks but also plenty of block fragmentation may involve process
space where the sticks used to reside. Just as flow (where data moves from one table to
when a player removes a stick, which another) or time life data. "Interim"
fragments the pile, when a server process segments commonly store information for a
deletes a row from a table it fragments a limited duration. If an interim object is not
table's block. Obviously space is wasted truncated (dropped in V6) before or after
unless another row is inserted into the table's each run, table rows are usually deleted.
block. Deleting interim table rows results in severe
table block fragmentation.
Picture yourself scanning the cheese
department at your favorite grocery store. If Row deletion is under application control.
maximum cheese poundage per block is your The block fragmentation effect can be
goal, you would grab cheese blocks with no minimized by carefully setting pctfree and
holes. If you wanted to retrieve ten pounds pctused. By setting pctused high, each
of cheese (assuming the cheese blocks have block will be placed on the free list after a
the same physical dimensions), the job few rows are deleted. Because free list
would be completed quicker and with less manipulation causes recursive SQL, a
effort if you grabbed cheddar cheese instead balance must be maintained between a high
of Swiss cheese7. Picking up the Swiss pctused and minimal recursive SQL.
cheese forces you to perform more work to
retrieve the same amount of cheese. Oracle's data dictionary, performance
utilities, and sophisticated tool sets[6]
An Oracle server process works much the provide the raw tools to detect table block
same way. It makes more sense to have a fragmentation. Table block fragmentation
server process retrieve 100 data blocks can be measured by finding out how much
space a table can possibly hold and
7
In addition to retrieval efficiency, cheddar tastes better than Swiss comparing this to how much data is
cheese.
currently being held. Once the offending
tables have been detected they can be Developing Powerful Tools
individually rebuilt.
Any DBA worth his salt understands once
the items discussed in this paper are
The Solution understood, an automated process can be
engineered to periodically detect and resolve
Once one has a thorough grasp of database fragmentation. However, writing these tools
fragmentation, a straightforward method to is not as simple as one might first expect.
eliminate and prevent future harmful
fragmentation becomes evident. Some of There are two challenges a worthwhile
the steps, outlined below, have been toolset must conquer. A trustworthy toolset
discussed in detail, while some steps require will use multiple detection algorithms since
architecting or purchasing powerful tools. each detection method has strengths and
weaknesses. A DBA needs fragmentation
1. Understand your risks. Chapter five severity information from a variety of
discusses how risk can manifest itself in viewpoints clearly presented. Only then can
a growing complex database system. one begin to assess the benefits of rebuilding
2. Understand fragmentation. Chapters an object.
six through nine detail five different
database fragmentation types. Once an algorithm has been developed, the
3. Object level detection. The absolute second and equally difficult hurdle must be
key to avoiding a full database met. The various flavors of fragmentation
reorganization is detecting which specific discussed impact nearly all database
objects are suffering from harmful systems. The fragmentation and the
fragmentation and specifically defragmentation process effect are
addressing them. intensified in a VLDB environment.
4. Prevent reoccurrence. Once an object Therefore, the second challenge for any
is discovered to be suffering from toolset requires problem identification within
harmful database fragmentation, changes acceptable time constraints. This is a serious
must be made to prevent the object from obstacle when working with millions of rows
fragmenting after the object is rebuilt. If tables in a twenty-four by seven shop.
changes are not made, performance will
taper off after the object is rebuilt8.
5. Rebuild object. To eliminate
fragmentation, the object must be rebuilt.
There are a number of ways to rebuild a
table. For example, the export and
import utilities, the create table as
select SQL command, or the copy SQL
command can be used.

8
When an table is rebuilt performance may increase because data
blocks are fully packed (block fragmentation is eliminated), row
fragmentation is eliminated, and the high-water mark is set the lowest
possible value.
The goal of this paper is to help DBAs entitled, The Art and Science of
understand database fragmentation issues Performance Management. Proceedings
and their impact. Only then can one hope to of the 1994 Oracle Applications User
make intelligent decisions regarding Group (OAUG) Conference, Paper #49
defragmenting database objects. Put another 9. Millsap, Cary V. (1994). Storage
way, the next time someone suggests you Management for Oracle Version 7. Cary
rebuild a database because of fragmentation V. Millsap, Oracle Corporation White
problems, I hope you can ask them Paper 1995
specifically what type of fragmentation they
are referring to. Then if they are able to Acknowledgments
intelligently respond, you can proudly claim This work was supported by Oracle
that based upon your analysis and automated Corporation and was conducted while the
tools the different fragmentation types are author was working for (and still is) Oracle
constantly being monitored and efficiently Corporation. A special thanks to Ravi
administered. Balwada, Mike Brouillette, Steve Herrerias,
Brian Kush, Cary Millsap, Rick Minutella,
References and Bill Slocumb for their continual criticism
1. Millsap, Cary V., Shallahamer, Craig A., and stimulating discussions.
Adler, Micah (1993). Predicting the
Utility of the Nonunique Index. Oracle About the Author
Magazine, Spring 1993, Volume VII Craig Shallahamer is a Practice Manager of
Number 2 Oracles System Performance Group, a part
2. "Blowing Out The Walls." Oracle of the Oracle Services. The team is
Corporation White Paper 1991, responsible for building new tools and
Revision: February 1994 capabilities like the ones described in this
3. Oracle Corporation (1993). Oracle7 paper for Oracle and its customers. The
Server Concepts Manual. Oracle Part System Performance Group provides system
No. A12713-1, August 10, 1993 design, capacity planning, and performance
4. Millsap, Cary V. (1994). The OFA management services to customers
Standard, Oracle7 for Open Systems. worldwide.
Oracle Part No. A19308-1, May 1994
5. "Core Clinic" Class Notes (1994). Since joining Oracle in 1989, Mr.
Oracle Consulting Core Technologies Shallahamer has worked at hundreds of
Team, Revision: 3.1-7.0.15 January 2, clients around the world. His specialization
1994 is performance management and capacity
6. Oracle Consulting Core Technologies planning related research and on-site
Team (1994). Administrative and engagements that have resulted in a number
Performance Suite (APS). Curator: of published papers at EOUG, OAUG,
Craig A. Shallahamer IOUW, Asia Pacific OUG, and Oracle
Email:cshallah@us.oracle.com Magazine. Craig is based in Portland,
7. Shallahamer, Craig A. (1994). The Oregon and can be reached at 503/220-5122
Performance Impact of Segment or on the internet at
Fragmentation. Oracle Corporation cshallah@us.oracle.com. Craigs papers
White Paper 1994 are available via the Word-Wide Web at
8. Shallahamer, Craig A. (1994). Total http://www.europa.com/~orapub.
Performance Management. Originally

Vous aimerez peut-être aussi