Background
When a DBA gets the request to perform a storage IO test most will probably look to use the extremely poplar, and excellent SLOB (Silly Little Oracle Benchmark) by Kevin Closson, or maybe HammerDB or Dominic Giles’sSwingBench for Transactional / TPC-DS type tests.
However, if you find yourself under time or other constraints ORION (ORacle IO Numbers) maybe a good option for a recently built system.
Since Oracle 11g, the Oracle ORION package has bee shipped within the Oracle Database and Grid Infrastructure binaries $ORACLE_HOME/bin/orionand requires no downloads and only minimal set-up, so is really easy to be get started quickly.
Getting Started – Storage Preparation
Volume Creation
For the purposes of this Blog I have created 5 Volumes (100GB) of equal size on a Pure Storage FlashArray and noted their Serial numbers e.g.

NOTE: for a Pure Storage FlashArray the Linux multipath wwid will be set as the Vendor ID + lowercase volume serial number e.g 3624a9370 + 50C939582B0F46C0000A8F82.
Configure Multipath
To make use of our newly created volumes more user friendly I added new entries to my existing multipath.conf file using the Volume Serial numbers previously obtained e.g. vi /etc/multipath.conf
multipath {
wwid 3624a937050c939582b0f46c0000a8f82
alias orion-vol1
}
multipath {
wwid 3624a937050c939582b0f46c0000a8f83
alias orion-vol2
}
multipath {
wwid 3624a937050c939582b0f46c0000a8f84
alias orion-vol3
}
multipath {
wwid 3624a937050c939582b0f46c0000a8f85
alias orion-vol4
}
multipath {
wwid 3624a937050c939582b0f46c0000a8f87
alias orion-vol5
}
Update multipath Configuration
Flush unused multipath devices
[root@z-oracle ~]# multipath -F
Reload multipath configuration:
[root@z-oracle ~]# service multipathd reload
Load and display multipath configuration, device mapper and other components
[root@z-oracle ~]# multipath -v2
[root@z-oracle ~]# multipath -ll
Configure UDEV rules
Now we have new aliases defined we can use theses to create a udev rule to allow Oracle access to these volumes, this avoids the need to run OROIN as root. Add the new entries using the aliases defined above. e.g. vi /etc/udev/rules.d/99-oracle-orion.rules
ENV{DM_NAME}=="orion-vol1", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol2", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol3", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol4", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol5", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
Reload UDEV rules as the root user using ‘udevadm trigger’ to set ownership and create links to the orion directory.
[root@z-oracle ~]# udevadm trigger
[root@z-oracle ~]# ls -l /dev/mapper/orion-vol*
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol1 -> ../dm-20
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol2 -> ../dm-24
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol3 -> ../dm-23
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol4 -> ../dm-21
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol5 -> ../dm-25
Setting-Up Orion
Now we have prepared and presented our storage we can configure Orion, by default Orion looks for orion.lun, you can also use alternative configuration files by using the testname switch. (Example bellow)
[oracle@z-oracle orion_test]$ cat orion.lun
/dev/mapper/orion-vol1
/dev/mapper/orion-vol2
/dev/mapper/orion-vol3
/dev/mapper/orion-vol4
/dev/mapper/orion-vol5
Running ORION
Orion support 5 types of workload tests Simple, Normal, Advanced, DSS and OLTP. (example output from orion -help
simple - Tests random small (8K) IOs at various loads,
then random large (1M) IOs at various loads.
normal - Tests combinations of random small (8K) IOs and
random large (1M) IOs.
advanced - Tests the workload specified by the user
using optional parameters.
dss - Tests with random large (1M) IOs at increasing
loads to determine the maximum throughput.
oltp - Tests with random small (8K) IOs at increasing
loads to determine the maximum IOPS.
NOTE: orion requires you to provide a full path e.g. $ORACLE_HOME/bin/orion , if you try to call without providing a full path orion will return an ORA-56727 error.
ORA-56727: orion must be invoked using its full, absolute path
The Orion help provides a number of examples to help you get started, in my next Blog post I will provide further examples and share the output created.
For a preliminary set of data
-run simple
For a basic set of data
-run normal
To evaluate storage for an OLTP database
-run oltp
To evaluate storage for a data warehouse
-run dss
To generate combinations of 32KB and 1MB reads to random locations
-run advanced
-size_small 32 -size_large 1024 -type rand
-matrix detailed
To generate multiple sequential 1MB write streams, simulating RAID0 striping
-run advanced
-simulate RAID0 -write 100 -type seq
-matrix col -num_small 0
[twitter-follow screen_name=’RonEkins’ show_count=’yes’]
Good to see this documented Ron, ORioN is a useful – but little known – tool for storage performance testing.