Oracle Exadata Best Practices
Oracle Exadata Best Practices
1)
Do
c
ID
Oracle Exadata Database Machine
Setup/Configuration Best Practices (Doc ID
1274318.1)
APPLIES TO:
PURPOSE
The goal of this document is to present the best practices for the deployment of
Oracle Exadata Database Machine in the area of Setup and Configuration.
SCOPE
DETAILS
Primary and standby databases should NOT reside on the same IB Fabric
Use hostname and domain name in lower case
Verify ILOM Power Up Configuration
Verify Hardware and Firmware on Database and Storage Servers
Verify InfiniBand Cable Connection Quality
Verify Ethernet Cable Connection Quality
Verify InfiniBand Fabric Topology (verify-topology)
Verify key InfiniBand fabric error counters are not present
Verify InfiniBand switch software version is 1.3.3-2 or higher
Verify InfiniBand subnet manager is running on an InfiniBand switch
Disable Infiniband subnet manager service where subnet manager master should never
run
Verify key parameters in the InfiniBand switch /etc/opensm/opensm.conf file
Verify There Are No Memory (ECC) Errors
Verify celldisk configuration on disk drives
Verify celldisk configuration on flash memory devices
Verify there are no griddisks configured on flash memory devices
Verify griddisk count matches across all storage servers where a given prefix name
exists
Verify griddisk ASM status
Verify that griddisks are distributed as expected across celldisks
Verify the percent of available celldisk space used by the griddisks
Verify Database Server ZFS RAID Configuration
Verify InfiniBand is the Private Network for Oracle Clusterware Communication
Verify InfiniBand Address Resolution Protocol (ARP) Configuration on Database Servers
Verify Oracle RAC Databases use RDS Protocol over InfiniBand Network.
Verify Database and ASM instances use same SPFILE
Verify Berkeley Database location for Cloned GI homes
Configure Storage Server alerts to be sent via email
Configure NTP and Timezone on the InfiniBand switches
Configure NTP slew_always settings as SMF property for Solaris
Verify NUMA Configuration
Enable Xeon Turbo Boost
Verify Exadata Smart Flash Log is Created
Verify Exadata Smart Flash Cache is Created
Verify Exadata Smart Flash Cache status is "normal"
Verify Master (Rack) Serial Number is Set
Verify Management Network Interface (eth0) is on a Separate Subnet
Verify RAID disk controller CacheVault capacitor condition
Verify RAID Disk Controller Battery Condition
Verify Ambient Air Temperature
Verify MaxStartups 100 in /etc/ssh/sshd_config on all database servers
Verify all datafiles have AUTOEXTEND attribute ON
Verify all BIGFILE tablespaces have non-default MAXBYTES values set
Ensure Temporary Tablespace is correctly defined
Enable portmap service if app requires it
Enable proper services on database nodes to use NFS
Be Careful when Combining the InfiniBand Network across Clusters and Database
Machines
Enable auditd on database servers
Verify AUD$ and FGA_LOG$ tables use Automatic Segment Space Management
Use dbca templates provided for current best practices
Updating database node OEL packages to match the cell
Disable cell level flash caching for grid disks that don't need it when using Write Back
Flash Cache
Gather system statistics in Exadata mode if needed
Verify Hidden Database Initialization Parameter Usage
Verify BDB location for Cloned GI homes
Verify Shared Servers do not perform serial full table scans
Verify Write Back Flash Cache minimum version requirements
Verify bundle patch version installed matches bundle patch version registered in
database
Verify database server file systems have "Maximum mount count" = "-1"
Verify database server file system have "Check interval" = "0"
Verify Automated Service Request (ASR) configuration
Verify ZFS File System User and Group Quotas are configured
Verify the file /.updfrm_exact does not exist
Verify the vm.min_free_kbytes configuration
Validate key sysctl.conf parameters on database servers
Remove "fix_control=32" from dbfs mount options
Set Linux kernel log buffer size to 1MB
Verify IP routing configuration on DB nodes
Set SQLNET.EXPIRE_TIME=10 in DB Home
Verify there are no .fuse_hidden files under the dbfs mount
Verify that the SDP over IB option "sdp_apm_enable(d)" is set to "0"
Verify /etc/oratab
Verify consistent software and configuration across nodes
Verify all database and storage servers time server configuration
Verify Sar files have read permissions for non-root user
Verify that the patch for bug 16618055 is applied
Verify kernels and initrd in /boot/grub/grub.conf are available on the system
Verify basic Logical Volume(LVM) system devices configuration
Ensure db_unique_name is unique across the enterprise
Verify average ping times to DNS nameserver
Verify Running-config and Startup-config are the same on the Cisco switch
Validate SSH is installed and configured on Cisco management switch
Verify Database Memory Allocation is not Greater than Physical Memory Installed on
Database node
Verify Cluster Verification Utility(CVU) Output Directory Contents Consume < 500MB of
Disk Space
Verify active system values match those defined in configuration file "cell.conf"
Verify that CRS_LIMIT_NPROC is greater than 65535 and not "UNLIMITED"
Verify TCP Segmentation Offload (TSO) is set to off
Check alerthistory for stateful alerts not cleared
Check alerthistory for non-test open stateless alerts
Verify clusterware state is "Normal"
Verify the grid Infrastructure management database (MGMTDB) does not use
hugepages
Verify the "localhost" alias is pingable
Verify bundle patch version installed matches bundle patch version registered in
database
Verify database is not in DST upgrade state
Verify there are no failed diskgroup rebalance operations
Verify the CRS_HOME is properly locked
Verify storage server data (non-system) disks have no partitions
Verify db_unique_name is used in I/O Resource Management (IORM) interdatabase
plans
Verify Datafiles are Placed on Diskgroups consisting of griddisks with cachingPolicy =
DEFAULT
Verify all datafiles are placed on griddisks that are cached on flash disks
Validate key sysctl.conf parameters on database servers
Detect duplicate files in /etc/*init* directories
Verify Database Server Quorum Disks configuration
Verify Oracle Clusterware files are placed appropriately
Verify "_reconnect_to_cell_attempts=9" on database servers which access X6 storage
servers
Verify passwordless SSH connectivity for Enterpise Manager (EM) agent owner userid
to target component userids
Check /EXAVMIMAGES on dom0s for possible over allocation by sparse files
Verify active kernel version matches expected version for installed Exadata Image
Verify Storage Server user "CELLDIAG" exists
Verify installed rpm(s) kernel type match the active kernel version
Verify Flex ASM Cardinality is set to "ALL"
Verify "downdelay" is set correctly for bonded client interfaces
Verify ExaWatcher is executing
Verify non-Default services are created for all Pluggable Databases
Verify Grid Infrastructure Management Database (MGMTDB) configuration
Verify Automatic Storage Management Cluster File System (ACFS) file systems do not
contain critical database files
Verify the ownership and permissions of the "oradism" file
Verify the SYSTEM, SYSAUX, USERS and TEMP tablespaces are of type bigfile
Verify the storage servers in use configuration matches across the cluster
Verify "asm_power_limit" is greater than zero
Verify the recommended patches for Adaptive features are installed
Verify initialization parameter cluster_database_instances is at the default value
Verify the database server NVME device configuration
Verify that Automatic Storage Management Cluster File System (ACFS) uses 4K
metadata block size
Evaluate Automated Maintenance Tasks configuration
Verify proper ACFS drivers are installed for Spectre v2 mitigation
Verify Exafusion Memory Lock Configuration
Verify there are no unhealthy InfiniBand switch sensors
Refer to MOS 1682501.1 if non-Exadata components are in use on the InfiniBand fabric
Verify the ib_sdp module is not loaded into the kernel
Verify all voting disks are online
Verify available ksplice fixes are installed
Verify the currently active image status
Verify that critical files reside on high redundancy disk groups
Verify that persistent memory (PMEM) is properly configured
Review Cluster Verification Utility (CVU) output
Verify diskgroup attributes are set to enable Hardware Assisted Resilient Data (HARD)
capability
Verify there are no unused Automatic Storage Management Cluster File System (ACFS)
file systems
Primary and standby databases should NOT reside on the same IB Fabric
Benefit / Impact:
To properly protect the primary databases residing on the "primary" Exadata Database
Machine, the physical standby database requires fault isolation from IB switch
maintenance issues,
IB switch failures and software issues, RDS bugs and timeouts or any issue resulting
from a complete IB fabric failure. To protect the standby from these failures that
impact the primary's
availability, we highly recommend that at least one viable standby database resides on
a separate IB fabric.
Risk:
If the primary and standby resides on the same IB fabric, both primary and standby
systems can be unavailable due a bug causing an IB fabric failure.
Action / Repair:
The primary and at least one viable standby database must not reside on the same
inter-racked Exadata Database Machine. The communication between the primary and
standby
Exadata Database Machines must use GigE or 10GigE. The trade-off is lower network
bandwidth. The higher network bandwidth is desirable for standby database
instantiation
(should only be done first time) but that requirement is eliminated for post-failover
operations when flashback database is enabled.
Benefit / Impact:
Risk:
OneCommand deployment will fail in step 16 if this is not done. This will abort the
installation with:
"ERROR: unable to locate file to check for string 'Configure Oracle Grid Infrastructure
for a Cluster ... succeeded' #Step 16#"
Action / Repair:
As a best practice, user lower case for hostnames and domain names
Verify ILOM Power Up Configuration
Verifying the ILOM power up configuration helps to ensure that a server (or more) are
booted up after a power interruption as quickly as possible.
Risk:
Not verifying the ILOM power up configuration may result in unexpected server boot
behavior after a power interruption.
Action / Repair:
To verify the ILOM power up configuration, as the root userid enter the following
command on each database and storage server:
if [ -x /usr/bin/ipmitool ]
then
#Linux
ipmitool sunoem cli force "show /SP/policy" | grep -i power
else
#Solaris
/opt/ipmitool/bin/ipmitool sunoem cli force "show /SP/policy" | grep -i power
fi;
The output varies by Exadata software version and should be similar to:
HOST_AUTO_POWER_ON=disabled
HOST_LAST_POWER_STATE=enabled
HOST_AUTO_POWER_ON=enabled
HOST_LAST_POWER_STATE=disabled
If the output is not as expected, as the root userid use the ipmitool "set /SP/policy"
command. For example:
The Oracle Exadata Database Machine is tightly integrated, and verifying the hardware
and firmware before the Oracle Exadata Database Machine is placed into or returned to
Risk:
If the hardware and firmware are not validated, inconsistencies between database and
storage servers can lead to problems and outages.
Action / Repair:
To verify the hardware and firmware configuration for a database server, execute the
following command as the "root" userid:
/opt/oracle.SupportTools/CheckHWnFWProfile
If any result other than "SUCCESS" is returned, investigate and correct the condition.
To verify the hardware and firmware configuration for a storage server, execute the
following "cellcli" command as the "cellmonitor" userid:
If any result other than "successfully altered" is returned, investigate and correct the
condition.
NOTE: "alter cell validate configuration" is also executed once a day on a storage
server by the MS process and the result is written into the storage server alert history.
InfiniBand cables require proper connections for optimal efficiency. Verifying the
InfiniBand cable connection quality helps to ensure that the InfiniBand network
operates at optimal efficiency.
Risk:
InfiniBand cables that are not properly connected may negotiate to a lower speed,
work intermittently, or fail.
Action / Repair:
Execute the following command on all database and storage servers:
ib0: 1
ib1: 1
Linux
Execute the following command as the "root" userid on all database and storage
servers:
ib0: 1 ib1: 1
Solaris
Execute the following command as the "root" userid on all database servers:
dladm show-ib | grep -v LINK | sed -e 's/ */ /g' -e 's/ *//' | awk '{print
$1":", $5}'| sort
ib0: up
ib1: up
NOTE: Storage servers should report 2 connections. X2-2(4170) and X2-2 database
servers should report 2 connections. X2-8 database servers should report 8
connections.
Ethernet cables require proper connections for optimal efficiency. Verifying the
Ethernet cable connection quality helps to ensure that the Ethernet network operates
at optimal efficiency.
Risk:
Ethernet cables that are not properly connected may negotiate to a lower speed, work
intermittently, or fail.
Action / Repair:
Execute the following command as the root userid on all database and storage servers:
for cable in `ls /sys/class/net | grep ^eth`; do printf "$cable: "; cat
/sys/class/net/$cable/carrier; done
eth0: 1
eth1: cat: /sys/class/net/eth1/carrier: Invalid argument
eth2: cat: /sys/class/net/eth2/carrier: Invalid argument
eth3: cat: /sys/class/net/eth3/carrier: Invalid argument
eth4: 1
eth5: 1
"Invalid argument" usually indicates the device has not been configured and is not in
use. If a device reports "0", investigate that cable connection.
NOTE: Within machine types, the output of this command will vary by customer
depending on how the customer chooses to configure the available ethernet cards.
Verifying that the InfiniBand network is configured with the correct topology for an
Oracle Exadata Database Machine helps to ensure that the InfiniBand network
operates at maximum efficiency.
Risk:
Action / Repair:
To verify the InfiniBand Fabric Topology, execute the following code set as the "root"
userid on one database server in the Exadata environment:
unset VT_ERRORS
unset VT_WARNINGS
VT_OUTPUT=$(/opt/oracle.SupportTools/ibdiagtools/verify-topology)
VT_WARNINGS=$(echo "$VT_OUTPUT" | egrep WARNING)
VT_ERRORS=$(echo "$VT_OUTPUT" | egrep ERROR)
if [ -n "$VT_ERRORS" ]
then
echo -e "FAILURE: verify-topology returned one or more errors (and perhaps
warnings).\nDETAILS:\n$VT_OUTPUT"
elif [ -n "$VT_WARNINGS" ]
then
echo -e "WARNING: verify-topology returned one or more
warnings.\nDETAILS:\n$VT_OUTPUT"
else
echo -e "SUCCESS: verify-topology returned no errors or warnings."
fi
Looking at 1 rack(s).....
<output truncated>
If anything other than "SUCCESS:" is reported, investigate and correct the underlying
fault(s).
Verifying key InfiniBand fabric error counters are not present helps to maintain the
InfiniBand fabric at peak efficiency.
The impact of verifying key InfiniBand fabric error counters are not present is minimal.
The impact of correcting key InfiniBand fabric error counters varies depending upon
the root cause of the specific error counter present, and cannot be estimated here.
Risk:
If key InfiniBand fabric error counters are present, the fabric may be running in
degraded condition or lack redundancy.
NOTE: Uncorrected symbol errors increase the risk of node evictions and
application outages.
Action / Repair:
To verify key InfiniBand fabric error counters are not present, execute the following
command set as the "root" userid on one database server:
NOTE: This will not work in the user domain of a virtualized environment.
- OR -
This check will not run in a user domain of a virtualized environment. Execute this
check in the management domain.
Counters found:
CRITICAL DATA:
WARNING DATA:
CRITICAL DATA:
WARNING DATA:
In general, if the output is not "SUCCESS...", follow the diagnostic guidance in the
following documents:
Symbol errors create a much higher risk of node evictions if the error rate is too high.
On the InfiniBand switches, there is a mechanism that will automatically down a port if
the error rate becomes too high. On the database and storage servers, there is no
such mechanism at this time, so it is recommended to examine the Symbol error rate
manually, using ExaWatcher data.
NOTE: In the following example, all data pertaining to InfiniBand switches has been
filtered out for brevity.
As the "root" userid, the following example demonstrates how to examine the Symbol
error rate using ExaWatcher.
1) From the manual output, make note of the GUIDs with SymbolErrorCounter present:
Counters found:
<output turncated>
2) Use the following command to identify the server with the symbol errors present:
3) Log onto the database server identified in the command above, randomadm02.
4) Change to the ExaWatcher directory for IB hca information (the default is in use
here):
# cd /opt/oracle.ExaWatcher/archive/IBCardInfo.ExaWatcher
5) Using the port identification provided in 1), use the following output to condense
(removes "0" entries) all relevant available ExaWatcher data:
<output truncated>
<output truncated>
6) Calculate the symbol error rate per minute. By default, ExaWatcher data intervals
are 5 minutes, but that can be changed. Using these two lines:
The delta between 17:28 and 17:39 is "23". The time interval is 10 minutes, so
23 / 10 is 2.3 symbol errors per minute.
NOTE: The InfiniBand fabric error counters should be cleared and validated after any
maintenance activity.
NOTE: The InfiniBand fabric error counters are cumulative and the errors may have
occurred at any time in the past. This check is the result at one point in time, and
cannot advise anything about history or an error rate.
NOTE: This check should not be considered complete validation of the InfiniBand
fabric. Even if this check indicates success, there may still be issues on the InfiniBand
fabric caused by other, more rare Infiinband fabric error counters being present. If
there are or appear to be issues with the InfiniBand fabric while this check passes,
perform a full evaluation of the "ibqueryerrors" command output and the output of
other commands such as "ibdiagnet".
NOTE: Depending upon the Exadata version, the key InfiniBand fabric error
counters have different names. In the following list, the older version of the
counter name is shown in square brackets.
Benefit / Impact:
The Impact of verifying that the InfiniBand switch software is at version 1.3.3-2 or
higher is minimal. The impact of upgrading the InfiniBand switch(s) to 1.3.3-2 varies
depending upon the upgrade method
chosen and your current InfiniBand switch software level.
Risk:
InfiniBand switch software version 1.3.3-2 fixes several potential InfiniBand fabric
stability issues. Remaining on an InfiniBand switch software version below 1.3.3-2
raises the risk of experiencing a potential outage.
Action / Repair:
To verify the InfiniBand switch software version, log onto the InfiniBand switch and
execute the following command as the "root" userid:
version | head -1 | cut -d" " -f5
1.3.3-2
If the output is not 1.3.3-2 or higher, upgrade the InfiniBand switch software to at
least version 1.3.3-2.
NOTE: Patch 12373676 provides InfiniBand software version 1.3.3-2 and instructions.
NOTE: If your InfiniBand switch is at software version 1.0.1-1, it will need to first be
upgraded to 1.1.3-1 or 1.1.3-2 before it can be upgraded to 1.3.3-2. The InfiniBand
switch software cannot be upgraded
directly from 1.0.1-1 to 1.3.3-2.
Having the Master Subnet Manager reside in the correct location improves the stability,
availability and performance of the InifiniBand fabric. The Impact of verifying the
Master Subnet Manager is running on an InfiniBand switch is minimal. The impact of
moving the Master Subnet Manager varies depending upon where it is currently
executing and to where it will be relocated.
Risk:
If the Master Subnet Manager is not running on an InfiniBand switch, the InfiniBand
fabric may crash during certain fabric management transitions.
Action / Repair:
To verify the Master Subnet Manager is located on an InfiniBand switch, execute the
following command set as the "root" userid on a database server:
SUBNET_MGR_MSTR_OUTPUT=$(sminfo)
IBSWITCHES_OUTPUT=$(ibswitches)
SUBNET_MGR_MSTR_GID=$(echo "$SUBNET_MGR_MSTR_OUTPUT" | cut -d" " -f7 | cut
-c3-16)
SUBNET_MGR_MSTR_LOC_RESULT=1
for IB_NODE_GID in $(echo "$IBSWITCHES_OUTPUT" | cut -c14-27)
do
if [ $SUBNET_MGR_MSTR_GID = $IB_NODE_GID ]
then
SUBNET_MGR_MSTR_LOC_RESULT=0
SUBNET_MGR_MSTR_LOC_SWITCH=$(echo "$IBSWITCHES_OUTPUT" | grep
$IB_NODE_GID)
fi
done
if [ $SUBNET_MGR_MSTR_LOC_RESULT -eq 0 ]
then
echo -e "SUCCESS: the Master Subnet Manager is executing on InfiniBand
switch:\n$(echo "$SUBNET_MGR_MSTR_LOC_SWITCH")"
else
echo -e "FAILURE: the Master Subnet Manager does not appear to be executing
on an InfiniBand switch:\n$(echo "$SUBNET_MGR_MSTR_OUTPUT")"
fi
If the result is "FAILURE", investigate the guid provided, relocate the Master
Subnet Manager to a correct InfiniBand switch, and prevent the Subnet
Manager from starting on the component where the Master Subnet Manager
was found to be executing.
NOTES:
1. The InfiniBand network can have more than one Subnet Manager, but
only one Subnet Manager is active at a time. The active Subnet Manager
is the Master Subnet Manager. The other Subnet Managers are the
Standby Subnet Managers. If a Master Subnet Manager is shut down or
fails, then a Standby Subnet Manager automatically becomes the Master
Subnet Manager.
2. There are typically several Standby Subnet Managers waiting to take over
should the current Master Subnet Manager either fail or is manually
moved to some other component with an available Standby Subnet
Manager. Only run Subnet Managers on the InfiniBand switches specified
for use in Oracle Exadata Database Machine, Oracle Exalogic Elastic
Cloud, Oracle Big Data Appliance, and Oracle SuperCluster. Running
Subnet Manager on any other device is not supported.
3. For pure multirack Exadata deployments with less than 4 racks, the
Subnet Manager should run on all spine and leaf InfiniBand switches. For
deployments with 4 or more Exadata racks, the Subnet Manager should
run only on spine InfiniBand switches. For additional configuration
information, please see section "4.6.7 Understanding the Network Subnet
Manager Master" of the "Exadata Database Machine Maintenance Guide".
4. For InfiniBand fabric configurations that involve a mix of different Oracle
Engineered Systems, please refer to: MOS note 1682501.1
5. Moving the Master Subnet Manager is sometimes required during
maintenance and patching operations. For additional guidance on
maintaining the Master Subnet Manager, please see section "4.6
Maintaining the InfiniBand Network" of the "Exadata Database Machine
Maintenance Guide".
NOTE: The Subnet Manager should only execute on InfiniBand switches. It should be
disabled on any other component attached to an InfiniBand fabric.
Having the Subnet Manager executing in the correct locations improves the
stability, availability and performance of the InifiniBand fabric. The Impact of
verifying the Subnet Manager is disabled on components where the Master
Subnet Manager should never reside is minimal. The impact of disabling the
Subnet Manager varies depending upon the component type where it is found
to be incorrectly executing, and whether or not the Master Subnet Manager is
incorrectly executing on that component.
Risk:
Action / Repair:
To Verify the Subnet Manager is disabled on components where the Master Subnet
Manager should never reside, execute the following command set as the "root" userid
on all database and storage servers:
unset COMMAND_OUTPUT
COMMAND_OUTPUT=$(ps -ef | grep -i [o]pensm)
if [ -n "$COMMAND_OUTPUT" ]
then
echo -e "FAILURE: the Subnet Manager is
executing.\nDETAILS:\n$COMMAND_OUTPUT"
else
echo -e "SUCCESS: the Subnet Manager is not executing."
fi
The expected output is:
NOTES:
Memory modules that have corrected Memory Errors (ECC) can show degraded
performance, IPMI driver timeouts, and BMC error messages in /var/log/messages file.
The impact of checking for memory ECC errors is slight. Correction will likely require
node downtime for hardware diagnostics or repair.
Risk:
If not corrected, the faulty memory will lead to performance degradation and other
errors.
Action / Repair:
To verify there are no memory (ECC) errors, run the following commands as the "root"
userid on all database and storage servers:
if [ -x /usr/bin/ipmitool ]
then
#Linux
IPMI_COMMAND=ipmitool;
else
#Solaris
IPMI_COMMAND=/opt/ipmitool/bin/ipmitool
fi;
if [ -z "$ECC_OUTPUT" ]
then
else
fi
FAILURE: Memory ECC errors were found. ECC list: 24f | 09/16/2016 | 09:32:59 |
Memory #0x53 | Correctable ECC | Asserted
If any errors are reported, take the following corrective actions in order:
1) Reseat the DIMM.
2) Open an SR for hardware replacement.
The definition and maintenance of storage server celldisks is critical for optimal
performance and outage avoidance.
The impact of verifying the basic storage server celldisk configuration is minimal.
Correcting any abnormalities is dependent upon the reason for the anomaly, so the
impact cannot be estimated here.
Risk:
If the basic storage server celldisk configuration is not verified, poor performance or
unexpected outages may occur.
Action / Repair:
To verify the basic storage server celldisk configuration on disk drives, execute the
following command as the "celladmin" user on each storage server:
12
If the output is not as expected, investigate the condition and take corrective
action based upon the root cause of the unexpected result.
NOTE: On a storage server configured according to Oracle best practices, there should
be 12 celldisks on disk drives with a status of "normal".
Benefit / Impact:
The definition and maintenance of storage server celldisks is critical for optimal
performance and outage avoidance. The number of celldisks configured on flash
memory devices varies by hardware version. Each celldisk configured on flash memory
devices should have a status of "normal".
The impact of verifying the celldisk configuration on flash memory devices is minimal.
The impact of correcting any anomalies is dependent upon the reason for the anomaly
and cannot be estimated here.
Risk:
If the celldisk configuration on flash memory devices is not verified, poor performance
or unexpected outages may occur.
Action / Repair:
To verify the celldisk configuration on flash memory devices, execute the following
command as the "root" userid on each storage server:
The output should be similar to the following and match one of the rows in the
"Celldisk on Flash Memory Devices Mapping Table":
16
If the output is not as expected, execute the following command as the "root" userid:
Perform your root cause analysis and corrective actions based upon the key words
returned in the "status" field. For additional information, please reference the
following:
The "Maintaining Flash Disks" section of "Oracle® Exadata Database Machine, Owner's
Guide 11g Release 2 (11.2), E13874-24"
The definition and maintenance of storage server griddisks is critical for optimal
performance and outage avoidance.
The impact of verifying the storage server griddisk configuration is minimal. Correcting
any abnormalities is dependent upon the reason for the anomaly, so the impact cannot
be estimated here.
Risk:
Action / Repair:
To verify there are no storage server griddisks configured on flash memory devices,
execute the following command as the "celladmin" user on each storage server:
If the output is not as expected, investigate the condition and take corrective action
based upon the root cause of the unexpected result.
In some very rare cases for certain highly write-intensive applications, there may be
some performance benefit to configuring grid disks onto the flash devices for datafile
writes only. With the release of the Smart Flash Log feature in 11.2.2.4, redo
logs should never be placed on flash grid disks. Smart Flash Log leverages
both hard disks and flash devices with intelligent caching to achieve the
fastest possible redo write performance, optimizations which are lost if redo
logs are simply placed on flash grid disks.
The space available to Smart Flash Cache and Smart Flash Log is reduced by the
amount of space allocated to the grid disks deployed on flash devices. The usable
space in the flash grid disk group is either half or one-third of the space allocated for
grid disks on flash devices, depending on whether the flash grid disks are configured
with ASM normal or high redundancy.
If after thorough performance and recovery testing, a customer chooses to deploy grid
disks on flash devices, it would be a supported, but not Best Practice, configuration.
Verify griddisk count matches across all storage servers where a given prefix
name exists
The definition and maintenance of storage server griddisks is critical for optimal
performance and outage avoidance.
The impact of verifying the basic storage server griddisk configuration is minimal.
Correcting any abnormalities is dependent upon the reason for the anomaly, so the
impact cannot be estimated here.
Risk:
Action / Repair:
To verify the storage server griddisk count matches across all storage server where a
given prefix name exists, execute the following command as the "root" userid on the
database server from which the
onecommand script was executed during initial deployment:
DATA_SLCC16: SUCCESS
DBFS_DG: SUCCESS
RECO_SLCC16: SUCCESS
If the output is not as expected, investigate the condition and take corrective
action based upon the root cause of the unexpected result.
NOTE: On a storage server configured according to Oracle best practices, the total
number of griddisks per storage server for a given prefix name (e.g: DATA) should
match across all storage servers
where the given prefix name exists.
NOTE: Not all storage servers are required to have all prefix names in use. This is
possible where for security reasons a customer has segregated the storage servers, is
using a data lifecycle management methodology,
or an Oracle Storage Expansion Rack is in use. For example, when an Oracle Storage
Expansion Rack is in use for data lifecycle management, those storage servers will
likely have griddisks with unique names that
differ from the griddisk names used on the storage servers that contain real time data,
yet all griddisks are visible to the same cluster.
NOTE: This command requires that SSH equivalence exists for the "root" userid from
the database server upon which it is executed to all storage servers in use by the
cluster.
The definition and maintenance of storage server griddisks is critical for optimal
performance and outage avoidance.
The impact of verifying the storage server griddisk configuration is minimal. Correcting
any abnormalities is dependent upon the reason for the anomaly, so the impact cannot
be estimated here.
Risk:
Action / Repair:
To verify the storage server griddisk ASM status, execute the following command as
the "celladmin" user on each storage server:
The output should be:
SUCCESS
If the output is not as expected, investigate the condition and take corrective
action based upon the root cause of the unexpected result.
NOTE: On a storage server configured according to Oracle best practices, all griddisks
should have "status" of "active", "asmmodestatus" of "online" and
"asmdeactivationoutcome" of "yes".
Benefit / Impact:
The definition and maintenance of storage server griddisks is critical for optimal
performance and outage avoidance.
The impact of verifying the storage server griddisk configuration is minimal. Correcting
any abnormalities is dependent upon the reason for the anomaly, so the impact cannot
be estimated here.
Risk:
Action / Repair:
NOTE: The recommended best practice is to have each griddisk distributed across all
celldisks. For older versions of Exadata storage server software and hardware, the
griddisks "SYSTEM" or "DBFS_DG" had a slightly different distribution, and the code
below correctly accounts for those cases.
To verify that griddisks are distributed as expected across celldisks, execute the
following command as the "root" userid on each storage server:
If the output is not as expected, investigate the condition and take corrective action
based upon the root cause of the unexpected result.
The impact of verifying the percent of available celldisk space used by the griddisks is
minimal.
Risk:
If the percent of available celldisk space used by the griddisks is not verified, an
unexpected configuration change may be missed.
Action / Repair:
To verify the percent of available celldisk space used by the griddisks, execute the
following command set as the "root" userid on each storage server:
ALLFLASHCELL=$(cellcli -e "list cell attributes makemodel"|egrep -ic
'ALLFLASH|EXTREME_FLASH');
RAW_GRIDDISK_SIZE=$(cellcli -e "list griddisk attributes size");
TOTAL_GRIDDISK_SIZE=$(echo "$RAW_GRIDDISK_SIZE" | sed 's/\s//g'|awk '/G$/
{ print $0 } /T$/ { size=substr($0, 0, length($0)-1); size=size*1024; print
size "" "G";}'|awk '{ SUM += $1} END { print SUM}');
if [ $ALLFLASHCELL -eq 0 ]
then
RAW_CELLDISK_SIZE=$(cellcli -e "list celldisk attributes size where
disktype=harddisk");
else
RAW_CELLDISK_SIZE=$(cellcli -e "list celldisk attributes size where
disktype=flashdisk");
fi;
TOTAL_CELLDISK_SIZE=$(echo "$RAW_CELLDISK_SIZE" | sed 's/\s//g'|awk '/G$/
{ print $0 } /T$/ { size=substr($0, 0, length($0)-1); size=size*1024; print
size "" "G";}'| awk '{ SUM += $1} END { print SUM}');
GRIDDISK_CELLDISK_PCT=$(echo $TOTAL_GRIDDISK_SIZE $TOTAL_CELLDISK_SIZE | awk
'{ printf("%d", ($1/$2)*100) }');
echo -e "INFO: The percent of available celldisk space used by the griddisks
is: $GRIDDISK_CELLDISK_PCT\nThe total griddisk size found is:
$TOTAL_GRIDDISK_SIZE\nThe total celldisk size found is:
$TOTAL_CELLDISK_SIZE";
INFO: The percent of available celldisk space used by the griddisks is: 99
The total griddisk size found is: 87818.7
The total celldisk size found is: 87819.3
If the output is not as expected for a given known configuration, investigate and take
corrective action based upon the root cause of the unexpected result.
NOTE: In an Oracle Virtual Machine environment, it is not unusual for the percentage
of available celldisk space used by the griddisks to be in the middle 60 range. This is
due in part to the fact the DBFS griddisk is not created by default, and user
requirements to reserve free space for future use. For example:
INFO: The percent of available celldisk space used by the griddisks is: 63
The total griddisk size found is: 4236
The total celldisk size found is: 6636.06
Verify Database Server ZFS RAID Configuration
For a database server running Solaris deployed according to Oracle standards, there
will be two ZFS RAID-1 pools, named "rpool" and "data". Each mirror in the pool
contains two disk drives. For an X2-2,
there is one mirror for each name. For an X2-8, there is one mirror for "rpool" and 3
for "data". Verifying the database server ZFS RAID configuration helps to avoid a
possible performance impact, or an outage.
The impact of validating the ZFS RAID configuration is minimal. The impact of
corrective actions will vary depending on the specific issue uncovered, and may range
from simple reconfiguration to an outage.
Risk:
Not verifying the ZFS RAID configuration increases the chance of a performance
degradation or an outage.
Action / Repair:
To verify the database server ZFS RAID configuration, execute the following command
as the "root" userid:
For an X2-2, the expected output is one pool named "rpool", and one named "data",
each comprised of 1 mirror with 2 disk drives.
For an X2-8, the expected output is one pool named "rpool", comprised of 1 mirror
with 2 disk drives, and one pool named "data" comprised of 3 mirrors each with 2 disk
drives.
Risk:
Action / Repair:
The InfiniBand network is preconfigured on the storage servers. Perform the following
on the database servers:
Verify the InfiniBand network is the private network used for Oracle Clusterware
communication with the following command:
If the InfiniBand network is not the private network used for Oracle Clusterware
communication, configure it following the instructions in MOS Note 283684.1,
"How to Modify Private Network Interface in 11.2 Grid Infrastructure".
NOTE: It is important to ensure that your public interface is properly marked as public
and not private. This can be checked with the oifcfg getif command. If it is
inadvertantly marked private,
you can get errors such as "OS system dependent operation:bind failed with status"
and "OS failure message: Cannot assign requested address".
It can be corrected with a command like oifcfg setif -global eth0/<public IP
address>:public
In each database verify that it is using the private IB interconnect withe following
query :
SQL> select name,ip_address from v$cluster_interconnects;
NAME IP_ADDRESS
--------------- ----------------
bondib0 192.xxx.40.25
Or in the database alert log you can look for the following message:
Cluster communication is configured to use the following interface(s) for this instance
192.xxx.40.26
For an active/passive configuration, the settings for all IB interfaces should be:
accept_local = 1
rp_filter = 0
For an active/active configuration, the settings for all IB interfaces should be:
accept_local = 1
rp_filter = 0
arp_announce = 2 (8 socket only!)
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.accept_local = 1
Risk:
Incorrect ARP configurations may prevent RAC from starting, or result in dropped
packets and inconsistent RAC operation.
Action / Repair:
To verify the InfiniBand interface ARP settings for a database server, use the following
command as the "root" userid:
RAW_OUTPUT=$(sysctl -a)
RF_OUTPUT=$(echo "$RAW_OUTPUT" | egrep -i "\.ib|bondib" | egrep -i
"\.rp_filter")
AL_OUTPUT=$(echo "$RAW_OUTPUT" | egrep -i "\.ib|bondib" | egrep -i
"\.accept_local")
if [ `echo "$RAW_OUTPUT" | grep -i bondib | wc -l` -ge 1 ]
then #active/passive case
if [[ `echo "$AL_OUTPUT" | cut -d" " -f3 | sort -u | wc -l` -eq 1 &&
`echo "$AL_OUTPUT" | cut -d" " -f3 | sort -u | head -1` -eq 1 ]]
then
AL_RSLT=0 #all AL same value and value is 1
else
AL_RSLT=1
fi;
if [[ `echo "$RF_OUTPUT" | cut -d" " -f3 | sort -u | wc -l` -eq 1 &&
`echo "$RF_OUTPUT" | cut -d" " -f3 | sort -u | head -1` -eq 0 ]]
then
RF_RSLT=0 #all RF same value and value is 0
else
RF_RSLT=1
fi;
if [[ $AL_RSLT -eq 0 && $RF_RSLT -eq 0 ]]
then
echo -e "Success: The active/passive ARP configuration is as
recommended:\n"
else
echo -e "Failure: The active/passive ARP configuration is not as
recommended:\n"
fi;
echo -e "$AL_OUTPUT\n\n$RF_OUTPUT"
else #active/active case
NICARF_OUTPUT=$(echo "$RAW_OUTPUT" | egrep -i
"net.ipv4.conf.all.rp_filter")
NICDRF_OUTPUT=$(echo "$RAW_OUTPUT" | egrep -i
"net.ipv4.conf.default.rp_filter")
NICAAL_OUTPUT=$(echo "$RAW_OUTPUT" | egrep -i
"net.ipv4.conf.all.accept_local")
NICARF_RSLT=$(echo "$NICARF_OUTPUT" | cut -d" " -f3)
NICDRF_RSLT=$(echo "$NICDRF_OUTPUT" | cut -d" " -f3)
NICAAL_RSLT=$(echo "$NICAAL_OUTPUT" | cut -d" " -f3)
IB_INTRFCE_CNT=$(echo "$RAW_OUTPUT" | egrep "\.ib.\." | cut -d"." -f4 |
sort -u | wc -l)
if [[ `echo "$AL_OUTPUT" | cut -d" " -f3 | sort -u | wc -l` -eq 1 &&
`echo "$AL_OUTPUT" | cut -d" " -f3 | sort -u | head -1` -eq 1 ]]
then
AL_RSLT=0 #all AL same value and value is 1
else
AL_RSLT=1
fi;
if [[ `echo "$RF_OUTPUT" | cut -d" " -f3 | sort -u | wc -l` -eq 1 &&
`echo "$RF_OUTPUT" | cut -d" " -f3 | sort -u | head -1` -eq 0 ]]
then
RF_RSLT=0 #all RF same value and value is 0
else
RF_RSLT=1
fi;
if [ $IB_INTRFCE_CNT -eq 2 ] # 2 socket case
then
if [[ $AL_RSLT -eq 0 && $RF_RSLT -eq 0 && $NICARF_RSLT -eq 0 &&
$NICDRF_RSLT -eq 0 && $NICAAL_RSLT -eq 1 ]]
then
echo -e "Success: The active/active ARP configuration is as
recommended:\n"
else
echo -e "Failure: The active/active ARP configuration is not as
recommended:\n"
fi;
echo -e
"$AL_OUTPUT\n\n$RF_OUTPUT\n\n$NICARF_OUTPUT\n$NICDRF_OUTPUT\n$NICAAL_OUTP
UT"
else # 8 socket case
NICIAA_OUTPUT=$(echo "$RAW_OUTPUT" | egrep "\.ib.\." | egrep
arp_announce)
if [[ `echo "$NICIAA_OUTPUT" | cut -d" " -f3 | sort -u | wc -l` -eq 1
&& `echo "$NICIAA_OUTPUT" | cut -d" " -f3 | sort -u | head -1` -eq 2 ]]
then
NICIAA_RSLT=0 #all arp_announce same value and value is 2
else
NICIAA_RSLT=1
fi;
if [[ $AL_RSLT -eq 0 && $RF_RSLT -eq 0 && $NICIAA_RSLT -eq 0 &&
$NICARF_RSLT -eq 0 && $NICDRF_RSLT -eq 0 && $NICAAL_RSLT -eq 1 ]]
then
echo -e "Success: The active/active ARP configuration is as
recommended:\n"
else
echo -e "Failure: The active/active ARP configuration is not as
recommended:\n"
fi;
echo -e
"$AL_OUTPUT\n\n$RF_OUTPUT\n\n$NICIAA_OUTPUT\n\n$NICARF_OUTPUT\n$NICDRF_OU
TPUT\n$NICAAL_OUTPUT"
fi;
fi;
net.ipv4.conf.ib0.accept_local = 1
net.ipv4.conf.ib1.accept_local = 1
net.ipv4.conf.bondib0.accept_local = 1
net.ipv4.conf.ib0.rp_filter = 0
net.ipv4.conf.ib1.rp_filter = 0
net.ipv4.conf.bondib0.rp_filter = 0
- OR -
net.ipv4.conf.ib0.accept_local = 1
net.ipv4.conf.ib1.accept_local = 1
net.ipv4.conf.ib0.rp_filter = 0
net.ipv4.conf.ib1.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.accept_local = 1
- OR -
net.ipv4.conf.ib0.accept_local = 1
<outpout truncated>
net.ipv4.conf.ib7.accept_local = 1
net.ipv4.conf.ib0.rp_filter = 0
<output truncated>
net.ipv4.conf.ib7.rp_filter = 0
net.ipv4.conf.ib0.arp_announce = 2
<output turncated>
net.ipv4.conf.ib7.arp_announce = 2
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.accept_local = 1
If a "FAILURE: ..." message appears, investigate for root cause, make the necessary
edits to "/etc/sysctl.conf", and restart the interface(s).
NOTE: These recommendations are for the InfiniBand interfaces on database servers
only! They do not apply to the Ethernet interfaces on the database servers. No
changes are permitted on the storage servers.
Verify Oracle RAC Databases use RDS Protocol over InfiniBand Network.
The RDS protocol over InfiniBand provides superior performance because it avoids
additional memory buffering operations when moving data from process memory to
the network interface for IO operations.
This includes both IO operations between the Oracle instance and the storage servers,
as well as instance to instance block transfers via Cache Fusion.
There is minimal impact to verify that the RDS protocol is in use. Implementing the
RDS protocol over InfiniBand requires an outage to relink the Oracle software.
Risk:
If the Oracle RAC databases do not use RDS protocol over the InfiniBand network, IO
operations will be sub-optimal.
Action / Repair:
To verify the RDS protocol is in use by a given Oracle instance, set the ORACLE_HOME
and LD_LIBRARY_PATH variables properly for the instance and execute the following
command as the oracle userid
on each database server where the instance is running:
$ORACLE_HOME/bin/skgxpinfo
rds
Note: For Oracle software versions below 11.2.0.2, the skgxpinfo command is not
present. For 11.2.0.1, you can copy over skgxpinfo to the proper path in your 11.2.0.1
environment from an
available 11.2.0.2 environment and execute it against the 11.2.0.1 database home(s)
using the provided command.
If the instance is not using the RDS protocol over InfiniBand, relink the Oracle binary
using the following commands (with variables properly defined for each home being
linked):
Note: Avoid using the relink all command due to various issues. Use the make
commands provided.
All instances for a particular database or ASM cluster should be using the same spfile.
Making changes to databases and ASM instances needs to be done in a reliable and
consistent way across all instances.
Risk:
Multiple 'sources of truth' can cause confusion and possibly unintended values being
set.
Action / Repair:
Verify what spfile is used across all instances of one particular ASM or database cluster.
If multiple spfiles for one database are found, provide a recommendation to
consolidate them into one.
NAME VALUE
------------------------------
------------------------------------------------------------
spfile +DATA/racone/spfileracone.ora
PURPOSE
Initialization Parameters and Diskgroup Attributes Best Practices for Oracle Database
Machine
SCOPE
DETAILS
The default ASM power limit, ie the asm_power_limit parameter in the ASM instance,
should be set to ensure the application performance is not impacted while rebalance is
running. The default 12.1.0.2 deployment sets asm_power_limit=4 for all Exadata
racks. Here are some other considerations for ASM rebalance and the setting of
asm_power_limit
* The default power of 4 was chosen after an internal MAA assessment showed it did
not impact the application. Also the following bug fixes should exist to ensure efficient
performance with minimal application impact
All known ASM related fixes from MOS Exadata critical issues note 1270094.1
Fixes for bugs 16087033 & 21218243 (GI side) and 13967870 (cell side)
* All MAA Exadata best practice attributes should be used to ensure an efficient
rebalance. Amongst other things, these attributes ensure the compaction phase is
disabled and appliance mode is set properly.
* Fixed extents will be allocated using Exadata and Grid Infrastructure 12.1.0.2 if the
compatible.rdbms diskgroup attribute is set to 11.2.0.4 or higher at allocation time.
Note this means no databases using versions < 11.2.0.4 can mount the diskgroup.
* During a rebalance that occurs after a failure where extent copies are lost, the most
critical files are rebalanced first, and evidence of this can be found in the ASM alert log.
For more information on priority rebalance, see MOS note 1968607.1.
* To determine the amount of work that a rebalance needs to do ahead of time, run
the 'EXPLAIN WORK...' command and then query v$asm_estimate. Explain work is
documented here.
Risk:
Not following MAA Exadata best practices with respect to asm_power_limit can cause
application impact during rebalance and/or cause excessive rebalance runtimes.
Action / Repair:
Customers should evaluate the performance impact of different ASM power limit
settings to their application while conducting an ASM rebalance operation under full
application workload in a non-production environment and choose their
ASM_POWER_LIMIT setting based on the results of the testing and the business
requirements for the application performance and availability.
Benefit / Impact: Experience and testing has shown that certain ASM initialization
parameters should be set at specific values. These are the best practice values set at
deployment time. By setting these ASM initialization parameters as recommended,
known problems may be avoided and performance maximized. The parameters are
specific to the ASM instances. Unless otherwise specified, the value is for both 2 socket
and 8 socket Database Machines. The impact of setting these parameters is minimal.
Risk: If the ASM initialization parameters are not set as recommended, a variety of
issues may be encountered, depending upon which initialization parameter is not set as
recommended, and the actual set value.
Action / Repair: To verify the ASM initialization parameters, compare the values in
your environment against the table below (* = default value):
Recommended Value
Parameter
cluster_interconnect Colon delimited IB IP addresses
s
memory_target 0
memory_max_target 0
For >= 10 instances per node,set processes using the following formula
MAX((50*MIN(db_instances_per_node+1,11))
+(10*MAX(db_instances_per_node-10,0)),1024)
audit_sys_operations TRUE
audit_syslog_level local0.info
Correct any Priority 1 parameter that is not set as recommended. Evaluate and correct
any Priority 2 parameter that is not set as recommended.
The proper way to implement the memory related parameters is as follows. This is
important as it works around an issue where memory_target remains set despite
setting it to 0.
Benefit / Impact: Experience and MAA testing has shown that certain diskgroup
attributes should be set at specific values. These are the best practice values set at
deployment time. By setting these diskgroup attributes as recommended, known
problems may be avoided and performance maximized. The attributes are specific to
ASM diskgroups. The impact of setting these parameters is minimal.
Risk: If the diskgroup attributes are not set as recommended, performance and or
availability issues can be encountered.
Action / Repair: To verify the diskgroup attributes, compare the values in your ASM
diskgroups against the table below.
Verify ASM Instance Initialization Parameters for 12.2.0.1
Benefit / Impact: Experience and testing has shown that certain ASM initialization
parameters should be set at specific values. These are the best practice values set at
deployment time. By setting these ASM initialization parameters as recommended,
known problems may be avoided and performance maximized. The parameters are
specific to the ASM instances. Unless otherwise specified, the value is for both 2 socket
and 8 socket Database Machines. The impact of setting these parameters is minimal.
Risk: If the ASM initialization parameters are not set as recommended, a variety of
issues may be encountered, depending upon which initialization parameter is not set as
recommended, and the actual set value.
Action / Repair: To verify the ASM initialization parameters, compare the values in
your environment against the table below (* = default value):
Recommended Value
Parameter
cluster_interconnect Colon delimited IB IP addresses
s
4
ASM storage partnership exists at both the disk and fail group level, and is designed to
reduce the possibility of data loss if multiple failures occur using a large storage
configuration with many disks. Partnering also ensures that a given ASM extent set is
sufficiently spread across storage to avoid single points of failure. For example, using
ASM high redundancy on Exadata, every extent (primary, secondary and tertiary) in a
given extent set is guaranteed to be on different Exadata cells, since every cell is a
failure group. The content.type diskgroup attribute is available to minimize or eliminate
partnership intersections across different diskgroups. One example of this with Exadata
is having different content.type for the DATAC1 and RECOC1 diskgroups created at
deployment time. With enough disks and cells to support it, this configuration ensures a
single catastrophic full partner failure does not forcibly dismount both diskgroups thus
losing both data and recovery files.
Here is an example query run in the ASM instance showing a case where not all
disks are online:
MODE_ST
-------------
OFFLINE
ONLINE
Here is an example query run in the ASM instance showing a case where all disks
are online:
MODE_ST
-------------
ONLINE
Follow MAA Exadata ASM best practices using Grid Infrastructure 12.1.0.2
The following represent the consolidated list of MAA Exadata best practices for ASM.
They supersede all previous best practices for any prior Grid Infrastructure versions.
One discernible example from this table is having an Exadata storage cell offline for
planned maintenance while encountering an IO error or corruption reading a secondary
extent on a partner disk [1].
High redundancy is an MAA best practice for all Exadata configurations. The only MAA
compliant alternative to high redundancy is normal redundancy with a DataGuard
standby database that is ready to take over the production workload. This includes
application support and fully tested operational procedures that have proven failover
will work seamlessly. More information can be found on this MAA page.
An ASM rebalance is run when storage is dropped or added to an ASM disk group, most
commonly when a disk fails or when adding storage servers to the configuration. The
ASM power limit [2] defines the number of outstanding asynchronous IOs the ASM
Rebalance Process (ARB0) process will issue during the rebalance. The Exadata MAA
best practice default for ASM power limit is 4, and set at deployment time. The Exadata
MAA best practice maximum for ASM power limit is 64. A higher power limit such as 64
enables rebalance to run faster, but the extra IOs can impact the application service
level. The aforementioned best practice default of 4 has been tested in MAA labs and
shown to have minimal impact on several different application service levels [3].
Internal tests have also shown that there is no IO throughput or rebalance runtime
benefit beyond a power limit of 64.
At this point, it should be clear that redundancy restoration is the most critical task of
rebalance, and it is only necessary when storage is lost. It should also be clear why
high redundancy is an Exadata MAA best practice that protects your application RTO
(recovery time objective) and RPO (recovery point objective). Now let’s look at what
factors into rebalance runtime.
Two primary factors influencing rebalance runtime are the amount of allocated space
on the storage that caused the reconfiguration (ex: allocated space on disk for disk
failure), and the ASM power limit. For example, using the same ASM power limit, the
rebalance resulting from the failure of a fully allocated 8TB disk will take twice as long
as if that disk was only half allocated. Increasing the ASM power limit (up to the
Exadata MAA best practice maximum of 64) yields higher IO throughput and lower
rebalance runtimes, and scales, though less so at the higher power limits.
The diskgroup’s redundancy type can also affect rebalance runtime. With the same
amount of allocated storage, the rebalance of a high redundancy diskgroup moves up
to twice the number of extents compared to a normal redundancy diskgroup. The extra
extent movement is required to maintain disk partnerships and diskgroup balance for
non primary extents. While the pure cost of rebalancing a high redundancy diskgroup is
more expensive, the aforementioned benefits far outweigh this cost.
To understand how many extents need to move for a given rebalance, the EXPLAIN
WORK FOR ALTER DISKGROUP statement [6], which populates the V$ASM_ESTIMATE
view, may be used. It is not possible to use this technique to estimate the amount of
time a rebalance will take, because it does not have IO timings to take into
consideration.
To understand how many extents have been processed and how much time remains for
a running rebalance, the V$ASM_OPERATION view may be used. This view tracks the
effective rate of rebalance and can fluctuate with the IOs coming from application
workloads.
The following table compares rebalance times using normal and high redundancy after
the loss of a single hard disk in an Exadata HC quarter rack with fully populated 8TB
disks [7]
For 4TB disks, the database space allocated and rebalance timings are simply half of
the values provided in this table, and all other columns are the same.
Exadata MAA best practices exist to enable our most demanding customers to meet
their most stringent application service level RTOs and RPOs. High Redundancy is an
Exadata MAA best practice because it protects from the crashes and data loss
associated with every type of partner storage loss, and it enables the repair from disk
failure to run at a power limit that minimizes application service level impact.
[1] Exadata scrubbing runs on an intelligent, adaptive schedule to mitigate the risk of
encountering latent bad sectors, but it cannot prevent it in all cases.
[2] The default ASM power limit is defined by the ASM instance’s asm_power_limit
parameter. Alternate ASM power settings can be specified using the alter diskgroup
command.
[4] 15% of allocated diskgroup space should be reserved to ensure ASM rebalance
completes without an out of space error such as ORA-15041. This number is factored
into the allocated space section of the Exadata data sheets.
[5] When the storage failure is small and isolated, such as a single bad sector or set of
bad disk sectors, ASM ensures that only the data affected by the failure is lost, not any
of the other valid data on the disk. ASM also helps the Administrator to identify the
affected storage by writing a well known string to a new extent location, and this well
known string can be used to facilitate other methods of repair such as RMAN BMR
(block media recovery).
[7] For high redundancy, an assumption is made that no pathological condition exists
that affects all three disk partners
[8] Rebalance times were generated in MAA labs with no competing application IOs to
document expectations without a workload profile variable (which changes from
customer to customer), and enable a pure comparison between normal and high
redundancy
[9] This may be done in certain cases where the rebalance completion is a priority, for
example if there is no application workload or one where service level impact doesn’t
matter
Benefit / Impact:
Aligning with MAA best practice parameters for the ASM instance improves stability,
security, and performance of ASM operations. Check the ASM documentation for
instructions and impact of changing specfic parameters.
Risk:
The risk of not using MAA best practice parameters for the ASM instances is security
vulnerability, performance issues, and possible data loss.
Action / Repair:
To verify important ASM instance parameters, run the following script with the
environment configured for the ASM instance. Note this script cannot check for all best
practice parameters because some are customer specific. Please refer to the 12.1.0.2
ASM instance best practice parameter and attribute reference for a complete list as well
as more details on why these parameters are best practices.
Benefit / Impact:
The default ASM power limit, ie the asm_power_limit parameter in the ASM instance,
should be set to ensure the application performance is not impacted while rebalance is
running. The default 12.1.0.2 deployment sets asm_power_limit=4 for all Exadata
racks. Here are some other considerations for ASM rebalance and the setting of
asm_power_limit
The default power of 4 was chosen after an internal MAA assessment showed it did not
impact the application. Also the following bug fixes should exist to ensure efficient
performance with minimal application impact
All known ASM related fixes from MOS Exadata critical issues note
1270094.1
Fixes for bugs 16087033 & 21218243 (GI side) and 13967870 (cell
side)
For OVM deployments :
Risk:
Not following MAA Exadata best practices with respect to asm_power_limit can cause
application impact during rebalance and/or cause excessive rebalance runtimes.
Action / Repair:
Customers should evaluate the performance impact of different ASM power limit
settings to their application while conducting an ASM rebalance operation under full
application workload in a non-production environment and choose their
ASM_POWER_LIMIT setting based on the results of the testing and the business
requirements for the application performance and availability.
Follow MAA Exadata ASM best practices using Grid Infrastructure 11.2.0.x
The following represent the consolidated list of MAA Exadata best practices for ASM
using Grid Infrastructure 11.2.0.x. They supersede all previous best practices for any
prior Grid Infrastructure versions.
The Impact of verifying that there is enough diskgroup freespace available for a
rebalance operation is minimal. The impact of correcting a lack of freespace will vary
depending upon the reason for the lack of freespace, and cannot be estimated here.
Risk:
If there is not enough diskgroup freespace available for a rebalance operation, there is
an increased risk of an outage or loss of data with an additional disk failure.
Action / Repair:
The following table displays the required free space for a complete rebalance operation
after one disk failure:
set serveroutput on
set linesize 160
declare
FGnum number;
gnum number;
gname varchar2(20);
freespace number;
totmb number;
freemb number;
usedmb number;
reqfmb number;
pctfree number;
reqpctfree number;
version varchar2(40);
cursor c1 is select x.group_number,count(x.numfg)
from ( select group_number,count(failgroup) numfg from v$asm_disk where
failgroup_type='REGULAR' and group_number > 0 group by group_number,failgroup
) x
group by x.group_number;
begin
dbms_output.enable(500000);
open c1;
loop
fetch c1 into gnum,FGnum;
exit when c1%notfound;
select name into gname from v$asm_diskgroup where group_number=gnum;
select version into version from v$instance;
select to_number(substr(regexp_replace(version,'\.'),1,3)) into version
from v$instance;
SELECT dg.name, dg.total_mb, dg.free_mb, dg.total_mb-dg.free_mb
INTO gname,totmb,freemb,usedmb
FROM v$asm_diskgroup dg WHERE dg.group_number= gnum;
if (version >= 122) then
if (FGnum < 5) then
reqpctfree := 0.15;
else
reqpctfree := 0.09;
end if;
else
reqpctfree := 0.15;
end if;
pctfree := round(freemb/totmb,3);
if (pctfree < reqpctfree) then
dbms_output.put_line('FAILURE: Diskgroup '||gname||' has '||
pctfree*100||'% free space which is lower than the '||reqpctfree*100||'% free
space threshold. A rebalance may fail with ORA-15041'); dbms_output.new_line;
else
dbms_output.put_line('SUCCESS: Diskgroup '||gname||' has '||
pctfree*100||'% free space which is enough to complete the rebalance');
dbms_output.new_line;
end if;
end loop;
close c1;
end;
/
FAILURE: Diskgroup DATAC1 has 13% free space which is lower than the 15% free
space threshold. A rebalance may fail with ORA-15041
SUCCESS: Diskgroup DBFS_DG has 100% free space which is enough to complete the
rebalance
SUCCESS: Diskgroup RECOC1 has 99% free space which is enough to complete the
rebalance
SUCCESS: Diskgroup TEST has 50% free space which is enough to complete the
rebalance
SUCCESS: Diskgroup DATAC1 has 99% free space which is enough to complete the
rebalance
FAILURE: Diskgroup DBFS_DG has 6% free space which is lower than the 9% free
space threshold. A rebalance may fail with ORA-15041
SUCCESS: Diskgroup RECOC1 has 100% free space which is enough to complete the
rebalance
If a diskgroup does not have sufficient free space, you should do one of the following:
evaluate the space usage within the diskgroup and free up space by removing
tablespaces that are no longer needed
move datafiles to another diskgroup that has enough space (datafile moves can
be done on-line as of Oracle 12.1 )
increase the size of the diskgroup, assuming that some other diskgroup can be
shrunk or, there is unallocated freespace on celldisks
NOTE: Although it is not a recommended best practice, some customers may want to
reserve enough space to tolerate a double disk failure in a high redundancy diskgroup.
For those cases, we have the following free space requirements:
Exception 2: A diskgroup having failgroups with less than 8 disks (ex: eighth rack
configuration) requires 18% free space
The default ASM power limit, ie the asm_power_limit parameter in the ASM instance,
should be set to ensure the application performance is not impacted while rebalance is
running. The default deployment sets asm_power_limit=1 for a eighth/quarter rack and
asm_power_limit=2 for all other rack types. Here are some other considerations for
ASM rebalance and the setting of asm_power_limit
Risk:
Action / Repair:
* The following PL/SQL can be run against an ASM instance ahead of time to give a
very rough estimate for rebalance time both with the current default power and the
recommended DBM max power of 32. Note it assumes the diskgroup is already
balanced. There are MOS notes available with scripts to check diskgroup balance, but
imbalance should be an uncommon case.
set serveroutput on
declare
diskspace number;
cellspace number;
disk_rebal_time number;
cell_rebal_time number;
default_power_limit number;
max_rate_diff_cell number;
max_rate_diff_disk number;
failgroup_name varchar2(30);
diskgroup_name varchar2(30);
begin
dbms_output.put_line('--------------------------------------------------------
-------');
dbms_output.put_line('Estimates are provided for both the current default
power ');
dbms_output.put_line('(asm_power_limit) and the recommended DBM max of 32');
dbms_output.put_line('The current recommended default power limit for a DBM is
4');
dbms_output.put_line(chr(10));
dbms_output.put_line('Note these estimates are for a DBM with High Performance
drives');
dbms_output.put_line('and do not include the compaction phase of rebalance.
The ');
dbms_output.put_line('compaction phase is not required for redundancy
restoration');
dbms_output.put_line('--------------------------------------------------------
-------');
select value into default_power_limit from v$parameter where
name='asm_power_limit';
max_rate_diff_cell:=32/default_power_limit;
max_rate_diff_disk:=16/default_power_limit;
for dg in (select group_number from v$asm_Diskgroup where group_number>0 and
state='MOUNTED') loop
select failgroup into failgroup_name from v$asm_disk where
group_number=dg.group_number and rownum=1;
select name into diskgroup_name from v$asm_diskgroup where
group_number=dg.group_number;
select round(sum(total_mb-free_mb)/1024,0) into diskspace from v$asm_disk
where disk_number=1 and group_number=dg.group_number;
select round(sum(total_mb-free_mb)/1024,0) into cellspace from v$asm_disk
where failgroup=failgroup_name and group_number=dg.group_number;
disk_rebal_time:=round((diskspace/280)*60,0);
cell_rebal_time:=round((cellspace/1024)*60,0);
dbms_output.put_line(chr(10));
dbms_output.put_line('********************************************************
********');
dbms_output.put_line('Rough time estimates for rebalance of diskgroup '||
diskgroup_name||':');
dbms_output.put_line('DISK based rebalance at the default power of '||
default_power_limit||': '||disk_rebal_time*max_rate_diff_disk||' minutes');
dbms_output.put_line('CELL based rebalance at the default power of '||
default_power_limit||': '||cell_rebal_time*max_rate_diff_cell||' minutes');
dbms_output.put_line('DISK based rebalance at the maximum recommended power of
32: '||disk_rebal_time||' minutes');
dbms_output.put_line('CELL based rebalance at the maximum recommended power of
32: '||cell_rebal_time||' minutes');
dbms_output.put_line('********************************************************
********');
end loop;
end;
/
It is also important to understand that, typically, disks and cells have different failure
and repair characteristics. Typically, a disk failure is permanent (ex: disk dies), and a
cell failure is transient (ex: cell reboot). Starting with release 11.2.1.3, a feature was
added to proactively drop disks that are predictive failure or failed. This allows the
setting of disk_repair_time to be geared almost exclusively toward cell failure, thus
easing the current aforementioned trade-off. In other words, you can set
disk_repair_time primarily for cell failure.
This check can be used when one has a long running rebalance and want to ensure it is
making forward progress. We have estimates in v$asm_operation but they can be
misleading, especially when an IO intensive application is running alongside the
rebalance.
Risk:
Action / Repair:
Set the environment for ASM, and run the script below on the node running the
rebalance. The considerations and requirements should be read before execution.
Script:
#!/bin/bash
# Goal
# 1. Provide assurance that rebalance is making progress by reporting the
# current file (Phase 1) or disk (Phase 2) being processed.
# Considerations
# 1. Works file by file so bigger files will be reported longer
# 2. Only works for diskgroups with compatible.asm=11.2.0.2 or higher
# 3. Only works with a running rebalance
# 4. Does not account for files added while the script is running
# Requirements to run:
# 1. Set environment for ASM instance before running
# 2. Execute with "./rebalance_file_progress.sh <optional check interval
time where default is 10 minutes>"
function check_env {
if [[ $ORACLE_SID != +ASM* ]]; then
echo "Environment not set for ASM."
exit 1
fi
}
function check_running {
arbpid=`ps -ef | grep asm_arb0 | grep -v grep | awk '{print $2}'`
if [ -z "$arbpid" ]; then
echo "Rebalance is not running (no ARB0 ospid)"
exit 1
fi
}
function goto_trace_directory {
td=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
select value from v\\$parameter
where name='background_dump_dest';
exit;
eof`
read -rd '' td <<< "$td"
cd $td
}
function check_trace_file {
tfile=${ORACLE_SID}_arb0_${arbpid}.trc
if [ ! -f $tfile ]
then
echo "The ARB0 trace file $tfile doesn't exist."
exit 1
fi
}
function collect_static_data {
dg=`grep 'relocating file' $tfile | tail -1 | awk -F "+" '{print $2}' | awk -F
"." '{print $1}'`;
maxfile=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
select max(file_number) from v\\$asm_file
where GROUP_NUMBER = (select group_number from v\\$asm_Diskgroup where
name='$dg');
exit;
eof`
read -rd '' maxfile <<< "$maxfile"
disklistall=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
set feedback off
select DSKNUM_KFDDD from x\\$kfddd
where GRPNUM_KFDDD = (select group_number from v\\$asm_Diskgroup where
name='$dg');
exit;
eof`
disklist=`echo $disklistall | tr ' ' '\012' | uniq`
i=1
for disk in ${disklist[@]}
do
dla[${disk}]=$i
let "i++"
done
}
function get_current_disk_compact {
currentdisk=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
select disk_kfgmg from x\\$kfgmg
where NUMBER_KFGMG = (select group_number from v\\$asm_Diskgroup where
name='$dg');
exit;
eof`
read -rd '' currentdisk <<< "$currentdisk"
if [ $currentdisk -eq "65535" ]; then
echo "Incorrect Phase 2 calculation..please rerun the script"
exit 1
fi
}
# Main
declare -a dla
declare -i oldfile
declare -i currentfile
declare -i maxfile
declare -i currentdisk
check_env
check_running
goto_trace_directory
check_trace_file
collect_static_data
currentfile=`grep 'relocating file' $tfile | tail -1 | awk -F "+" '{print $2}'
| awk -F "." '{print $2}'`;
oldfile=$currentfile
if [ -z "$1" ]; then
check_interval=600
else
check_interval=$1
fi
echo "######################################################################"
echo "This script will monitor Phase 1 (rebalance) file by file and Phase 2"
echo "(compaction) disk by disk. Both phases should increment, showing
progress."
echo "This script will *not* estimate how long the rebalance will take."
echo "######################################################################"
echo " "
echo "Diskgroup being rebalanced is $dg"
echo "ASM file numbers for databases start at 256. "
echo "Default check interval is 600 seconds. This run using $check_interval
seconds..."
echo " "
while [ $currentfile -ge $oldfile ]
do
check_running
echo "`date`: PHASE 1 (of 2): Processing file $currentfile out of $maxfile"
sleep $check_interval
oldfile=$currentfile
currentfile=`grep 'relocating file' $tfile | tail -1 | awk -F "+" '{print $2}'
| awk -F "." '{print $2}'`;
done
sleep 30
echo "*******************************************************"
echo "`date`: PHASE 1 (of 2) complete."
echo "*******************************************************"
while true
do
check_running
get_current_disk_compact
echo "`date`: PHASE 2 (of 2): ${dla[$currentdisk]} disks processed out of $
{#dla[@]}"
sleep $check_interval
done
Sample output:
$ ./rebalance_progress.sh 300
######################################################################
This script will monitor Phase 1 rebalance file by file and Phase 2
rebalance disk by disk. Both phases should increment, showing progress.
This script will *not* estimate how long the rebalance will take.
######################################################################
Wed May 2 07:47:44 PDT 2012: PHASE 1 (of 2): Processing file 258 out of 365
Wed May 2 07:52:44 PDT 2012: PHASE 1 (of 2): Processing file 294 out of 365
Wed May 2 07:57:44 PDT 2012: PHASE 1 (of 2): Processing file 306 out of 365
Wed May 2 08:02:44 PDT 2012: PHASE 1 (of 2): Processing file 329 out of 365
Wed May 2 08:07:44 PDT 2012: PHASE 1 (of 2): Processing file 346 out of 365
Wed May 2 08:12:44 PDT 2012: PHASE 1 (of 2): Processing file 346 out of 365
Wed May 2 08:17:44 PDT 2012: PHASE 1 (of 2): Processing file 346 out of 365
Wed May 2 08:22:44 PDT 2012: PHASE 1 (of 2): Processing file 346 out of 365
Wed May 2 08:27:44 PDT 2012: PHASE 1 (of 2): Processing file 346 out of 365
Wed May 2 08:32:44 PDT 2012: PHASE 1 (of 2): Processing file 347 out of 365
Wed May 2 08:37:44 PDT 2012: PHASE 1 (of 2): Processing file 347 out of 365
Wed May 2 08:42:44 PDT 2012: PHASE 1 (of 2): Processing file 348 out of 365
Wed May 2 08:47:44 PDT 2012: PHASE 1 (of 2): Processing file 348 out of 365
Wed May 2 08:52:44 PDT 2012: PHASE 1 (of 2): Processing file 348 out of 365
Wed May 2 08:57:44 PDT 2012: PHASE 1 (of 2): Processing file 348 out of 365
*******************************************************
Wed May 2 09:02:49 PDT 2012: PHASE 1 (of 2) complete.
*******************************************************
Wed May 2 09:02:51 PDT 2012: PHASE 2 (of 2): 44 disks processed out of 168
Wed May 2 09:07:52 PDT 2012: PHASE 2 (of 2): 44 disks processed out of 168
Wed May 2 09:12:53 PDT 2012: PHASE 2 (of 2): 76 disks processed out of 168
Wed May 2 09:17:54 PDT 2012: PHASE 2 (of 2): 76 disks processed out of 168
Wed May 2 09:22:55 PDT 2012: PHASE 2 (of 2): 108 disks processed out of 168
Wed May 2 09:27:57 PDT 2012: PHASE 2 (of 2): 140 disks processed out of 168
Wed May 2 09:32:58 PDT 2012: PHASE 2 (of 2): 168 disks processed out of 168
Rebalance is not running (no ARB0 ospid)
Risk:
Action / Repair:
The following script can be run to check forward progress on running disk resyncs.
#!/bin/bash
# Goal
# 1. Provide assurance that resync is making progress by reporting the
# current file and extent being processed by each active resync slave.
# Considerations
# 1. Works file by file so bigger files will be reported longer
# 2. Only works with resyncs that are active; cannot be run ahead of time
# 3. Does not account for files added while the script is running
# 4. Interval < 16 seconds is not useful due to the tracing rate, therefore
# a minimum of 20 is enforced
# Requirements to run:
# 1. Set environment for ASM instance before running
# 2. Execute with "./resync_progress.sh <optional check interval
# greater than or equal to 20 seconds (default is 10
minutes)>"
function check_env {
if [[ $ORACLE_SID != +ASM* ]]; then
echo "Environment not set for ASM."
exit 1
fi
}
function check_running {
resyncrunning=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
select count(*) from v\\$asm_operation where operation='ONLIN';
exit;
eof`
read -rd '' resyncrunning <<< "$resyncrunning"
if [ $resyncrunning -eq 0 ]; then
echo "Resync is not running on this instance (no ONLINE operation
detected)"
exit 1
fi
}
function goto_trace_directory {
td=`sqlplus -s "/ as sysasm" << eof
set head off
set pagesize 0
select value from v\\$parameter
where name='background_dump_dest';
exit;
eof`
read -rd '' td <<< "$td"
cd $td
}
function process_updates {
while true
do
check_running
if [ $resyncrunning -ne $prior_running ]; then
echo " "
echo "*** $resyncrunning disk resyncs running on the local ASM instance ***"
echo " "
fi
# Main
declare -a sa
declare -a sga
declare -a smfa
declare -i currentfile
declare -i maxfile
declare -i slavegrp
declare -i prior_running
declare -i secs_since_mod
check_env
check_running
goto_trace_directory
if [ -z "$1" ]; then
check_interval=600
else
if [ $1 -ge 20 ]
then
check_interval=$1
else
check_interval=20
fi
fi
echo
"#########################################################################"
echo "This script will monitor disk resync, showing progress for each active"
echo "slave. This script will *not* estimate how long the resync will take."
echo
"#########################################################################"
echo " "
echo "ASM file numbers for databases start at 256. "
echo "Default check interval is 600 seconds. This run using $check_interval
seconds..."
prior_running=resync_running
process_updates
Sample output
$./resync_progress.sh 60
#########################################################################
This script will monitor disk resync, showing progress for each active
slave. This script will *not* estimate how long the resync will take.
#########################################################################
Tue May 15 10:18:43 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 15624
Tue May 15 10:19:44 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 21755
Tue May 15 10:20:46 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 22973
Tue May 15 10:21:48 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 23918
Tue May 15 10:22:49 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 24922
Tue May 15 10:23:51 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 36232
Tue May 15 10:24:53 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 43283
Tue May 15 10:25:55 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 43955
Tue May 15 10:26:56 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 48147
Tue May 15 10:27:58 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 48483
Tue May 15 10:29:00 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 48884
Tue May 15 10:30:01 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 49206
Tue May 15 10:31:03 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 60938
Tue May 15 10:32:05 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 61251
Tue May 15 10:33:07 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 61662
Tue May 15 10:34:08 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 61998
Tue May 15 10:35:10 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 62372
Tue May 15 10:36:11 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 62670
Tue May 15 10:37:13 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 63065
Tue May 15 10:38:14 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 63406
Tue May 15 10:39:16 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 63786
Tue May 15 10:40:18 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 325 (out of 387), extent 64122
Tue May 15 10:41:19 CDT 2012: RESYNC slave s000, ospid 106162 : Processing
diskgroup 1, file 326 (out of 387), extent 824
Resync is not running on this instance (no ONLINE operation detected)