My company is in the process of upgrading our Oracle environment with new Sun Solaris dedicated database servers under 8.1.7. We will be using RAID.
All the Oracle documentation I have seen refers to RAID 0+1 or RAID 5. However some web sites are now talking about RAID 10 as the best solution for database applications.
Can you tell me if RAID 10 is appropriate for Oracle?
Also, can you give me any info on choosing an appropriate striping size? Is it related to db_blocksize or OS block size?
Thanks for any information you can provide.
Raid 10:
</code>
http://www.acnc.com/04_01_10.html
is just striped arrays whose segments are raid 1 arrays.
since raid 0 is stripes -- and 0+1 is striped mirrors, raid 10 is actually 0+1
See
http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:359617936136 <code>
...
Here is a support note on stripe size settings:
Article-ID: <Note:106991.1>
Folder: server.DBA.Storage
Topic: Draft Articles
Title: Understanding striping mechanism
Document-Type: BULLETIN
Impact: LOW
Skill-Level: NOVICE
Server-Version: 08.01.0X
Updated-Date: 28-APR-2000 19:44:38
References:
Shared-Refs:
Attachments: NONE
Content-Type: TEXT/PLAIN
Keywords: SIZE; STRIPE; STRIPING;
Products: 5;
Platforms: UNIX;
*************************************************************
This article is being delivered in Draft form and may contain
errors. Please use the MetaLink "Feedback" button to advise
Oracle of any issues related to this article.
*************************************************************
PURPOSE
-------
With this note you can learn some news about Striping Disks
mechanism by Operating System Software.
SCOPE & APPLICATION
-------------------
To get better performances in great systems and in multi-user
environments.
Understanding striping mechanism
---------------------------------
Striping divides a large table's data into small portions and stores
these portions in separate datafiles on separate disks. This permits
multiple processes to access different portions of the table
concurrently without disk contention.
Striping can either be performed manually, through careful data file
allocation to tablespaces, or through operating system striping
utilities.
In this note, we treat some news about Striping Disks mechanism by
Operating System Software.
This approach usually performs better than manual striping, specially
in not small systems and in multi-user environments.
With striping software, the concern is choosing the right stripe
size (it's often needed using a large stripe size of at least 64KB
with OS striping when possible).
This depends on the Oracle block size and disk access method.
In particular, the outstanding Oracle parameter is constituted by the
I/O size, which is given by
DB_BLOCK_SIZE * DB_FILE_MULTIBLOCK_READ_COUNT.
The values of these two parameters are fixed in init.ora file:
DB_BLOCK_SIZE specifies the size in bytes of Oracle database blocks
and its default value is operating-system dependent;
DB_FILE_MULTIBLOCK_READ_COUNT specifies the maximum number of blocks
read in one I/O operation during a sequential scan and its default
value is 8.
The maximum I/O size is platform-specific (for example, in a range of
64KB to 1MB).
Stripe size must be at least as large as the I/O size.
Having a large value of stripe size it allows the system to perform
more sequential operations on each disk, since it decreases the
number of seeks on disk, but it reduces the I/O parallelism so fewer
disks are simultaneously active.
However, if you have problems, it's preferible increasing the I/O size
of scan operations (going, for example, from 64KB to 128KB), instead of
changing the stripe size.
A good trade-off is to make stripe size larger than I/O size by a
factor of 2 or 4.
Striping supports multiple users running sequentially as well as single
users running in parallel, but it's particularly useful in optimizing
random access to tables with many rows.
In fact, for operations such as full table scan, it permits to reach
the maximum I/O throughput for your platform, because it increases
the number of disk seeks, but in the same time it consents to have a
large I/O size.
Also, for operations such as a nested loop join or parallel index
range scan, operating system striping enables you to avoid hot spots:
I/O is more evenly distributed across the disks.