Very basic and generic discussion from the performance point of view. Customers still have to do their due diligence in understanding redo logs, and how they work in Oracle database, before finalizing redo log configuration for their deployments.
size them properly
log writer writes to a single redo log file until either it is full or a manual log switch is requested Oracle supports multiplexed redo logs for availability, but this behavior of writing to a file until it is full or a log switch happens, still hold
if the transactions generate a lot of redo before a database commit, consider large sizes in tens of gigabytes for redo logs
if not sized properly, it leads to unnecessary log switches, which in turn increase checkpoint activity resulting in unnecessary slow down of the database operations two redo logs each with at least 5G in size might be a good start. observe the log switches, checkpoints and increase (or decrease, though there is no performance benefit) the file size accordingly
do not mix redo logs with the rest of the database or anything else
in a normal functioning database, most of the time, log writer simply writes redo entries sequentially to redo logs
any slow down in writing the redo data to logs hurt the performance of the database
best not to share the disks/volumes on which redo logs are hosted, with anything else set of disks, volumes exclusive to redo logs, that is
ensure that the underlying disks or I/O medium used to store the redo logs are fast, optimally configured and can sustain the amount of I/O bandwidth needed to write the redo entries to the redo logs if those requirements are not met, it could lead to 'log file sync' waits, which will slow down the database transactions
redo logs on non-volatile flash storage may have performance benefits over the traditional hard disk drives
check this blog post out, Redo logs on F40 PCIe Cards, for related discussion (keywords: 4K block size for redo logs, block alignment)
Goal: for a given process, find out how the SGA was allocated in different locality groups on a system running Solaris operating system.
Download the shell script, sga_in_lgrp.sh. The script accepts any Oracle database process id as input, and prints out the memory allocated in each locality group.
Usage: ./sga_in_lgrp.sh <pid>
eg.,
# prstat -p 12820
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
12820 oracle 32G 32G sleep 60 -20 0:00:16 0.0% oracle/2
# ./sga_in_lgrp.sh 12820
Number of Locality Groups (lgrp): 4
------------------------------------
lgroup 1 : 8.56 GB
lgroup 2 : 6.56 GB
lgroup 3 : 6.81 GB
lgroup 4 : 10.07 GB
Total allocated memory: 32.00 GB
For those who wants to have a quick look at the source code, here it is.
# cat sga_in_lgrp.sh
#!/bin/bash
# check the argument count
if [ $# -lt 1 ]
then
echo "usage: ./sga_in_lgrp.sh <oracle pid>"
exit 1
fi
# find the number of locality groups
lgrp_count=$(kstat -l lgrp | tail -1 | awk -F':' '{ print $2 }')
echo "\nNumber of Locality Groups (lgrp): $lgrp_count"
echo "------------------------------------\n"
# save the ism output using pmap
pmap -sL $1 | grep ism | sort -k5 > /tmp/tmp_pmap_$1
# calculate the total amount of memory allocated in each lgroup
for i in `seq 1 $lgrp_count`
do
echo -n "lgroup $i : "
grep "$i \[" /tmp/tmp_pmap_$1 | awk '{ print $2 }' | sed 's/K//g' |
awk '{ sum+=$1} END {printf ("%6.2f GB\n", sum/(1024*1024))}'
done
echo
echo -n "Total allocated memory: "
awk '{ print $2 }' /tmp/tmp_pmap_$1 | sed 's/K//g' | awk '{ sum+=$1} END
{printf ("%6.2f GB\n\n", sum/(1024*1024))}'
rm /tmp/tmp_pmap_$1
Like many things in life, there will always be a better or simpler way to achieve this. If you find one, do not fret over this approach. Please share, if possible.
(in general, Oracle does not recommend playing with hidden parameters. Check with Oracle support when in doubt).
[Oracle Database] Data Pump Export in a RAC environment fails with ORA-31693, ORA-31617, ORA-19505, ORA-27037 errors
eg.,
ORA-31693: Table data object "<SCHEMA>"."<TABLE>":"P_1147" failed to load/unload \
and is being skipped due to error:
ORA-31617: unable to open dump file "<FILE>" for write
ORA-19505: failed to identify file "<FILE>"
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Workaround:
Add CLUSTER=N to the list of existing expdp options.
[Solaris, ZFS] Check the current ARC size and its breakdown
The Diagnostic Framework in FMW 11g environments detect, diagnose and resolve critical errors such as uncaught exceptions, deadlocked threads and out of memory errors. It is enabled by default.
Though DFW is supposed to diagnose and fix some of the issues transparently, due to the inevitable bugs in [all kinds of] software and misconfigurations, sometimes DFW itself may become a major issue. For instance, there is a bug that reported very high system CPU time on a SPARC server where FMW 11g was running. Per the bug description, the system CPU utilization spikes every minute exactly at 00s of a minute, CPU utilization goes down within few seconds - but the pattern persists and the spiky behavior returns within a minute. Another symptom was the sudden drop in available swap space from tens of giga bytes to a few mega bytes when the CPU spike occurs. Upon close examination, it was found out that DFW in FMW is forking tens of jstack processes to collect the thread dumps from an equal number of java processes running in that FMW environment, causing the sudden spike in CPU (each process is busy gathering thread dumps at the same time) and a steep drop in swap space (each jstack process forked a jmap process. both jstack and jmap processes consume some virtual memory just like any other process). All this happened because DFW thought it found a critical issue, and it wasn't noticed or addressed by anyone including the administrators (DFW couldn't fix this particular issue on its own) - so, it kept gathering the diagnostic data continuously. In this example, DFW did the right thing but the diagnostic data collection frequency was too short - only one minute, that diminished the value of DFW and made it a liability. In such dire situations, probably it is best to disable the dump sampling feature of Diagnostic Framework tentatively while the underlying original issue is being fixed in that application environment. It can be enabled again when the critical issue was fixed, and no longer an issue.
[Solaris 11] Virtual-to-physical link (NIC) mapping
Check the output of /sbin/dladm show-phys(any user). By default, only those physical links that are available on the running system are displayed. Option -P shows the physical device and attributes of all physical links.
eg.,
$ /sbin/dladm show-phys
LINK MEDIA STATE SPEED DUPLEX DEVICE
net0 Ethernet up 1000 full ixgbe0
net5 Infiniband down 0 unknown ibp2
net1 Ethernet up 1000 full ixgbe1
net6 Infiniband down 0 unknown ibp3
net4 Ethernet up 10 full usbecm2
$ /sbin/dladm show-phys -P
LINK DEVICE MEDIA FLAGS
net8 ibp1 Infiniband r----
net0 ixgbe0 Ethernet -----
net7 ibp0 Infiniband r----
net3 ixgbe3 Ethernet r----
net5 ibp2 Infiniband -----
net1 ixgbe1 Ethernet -----
net6 ibp3 Infiniband -----
net4 usbecm2 Ethernet -----
net2 vsw0 Ethernet r----
(1) AWR report shows bogus wait events and times on SPARC T5 servers
Here is a sample from one of the Oracle 11g R2 databases running on a SPARC T5 server with Solaris 11.1 SRU 7.5
Top 5 Timed Foreground Events
Event
Waits
Time(s)
Avg wait (ms)
% DB time
Wait Class
latch: cache buffers chains
278,727
812,447,335
2914850
13307324.15
Concurrency
library cache: mutex X
212,595
449,966,330
2116542
7370136.56
Concurrency
buffer busy waits
219,844
349,975,251
1591925
5732352.01
Concurrency
latch: In memory undo latch
25,468
37,496,800
1472310
614171.59
Concurrency
latch free
2,602
24,998,583
9607449
409459.46
Other
Reason: Unknown. There is a pending bug 17214885 - Implausible top foreground wait times reported in AWR report.
Tentative workaround: Disable power management as shown below.
# poweradm set administrative-authority=none
# svcadm disable power
# svcadm enable power
Verify the setting by running poweradm list.
Also disable NUMA I/O object binding by setting the following parameter in /etc/system (requires a system reboot).
set numaio_bind_objects=0
Oracle Solaris 11 added support for NUMA I/O architecture. Here is a brief explanation of NUMA I/O from Solaris 11 : What's New web page.
Non-Uniform Memory Access (NUMA) I/O : Many modern systems are based on a NUMA architecture, where each CPU or set of CPUs is associated with its own physical memory and I/O devices. For best I/O performance, the processing associated with a device should be performed close to that device, and the memory used by that device for DMA (Direct Memory Access) and PIO (Programmed I/O) should be allocated close to that device as well. Oracle Solaris 11 adds support for this architecture by placing operating system resources (kernel threads, interrupts, and memory) on physical resources according to criteria such as the physical topology of the machine, specific high-level affinity requirements of I/O frameworks, actual load on the machine, and currently defined resource control and power management policies.
Do not forget to rollback these changes after applying the fix for the database bug 17214885, when available.
(2) Redo logs on F40 PCIe cards(non-volatile flash storage)
Per the F40 PCIe card user's guide, the Sun Flash Accelerator F40 PCIe Card is designed to provide best performance for data transfers that are multiples of 8k size, and using addresses that are 8k aligned. To achieve optimal performance, the size of the read/write data should be an integer multiple of this block size and the data transferred should be block aligned. I/O operations that are not block aligned and that do not use sizes that are a multiple of the block size may suffer performance degration, especially for write operations.
Oracle redo log files default to a block size that is equal to the physical sector size of the disk, typically 512 bytes. And most of the time, database writes to the redo log in a normal functioning environment. Oracle database supports a maximum block size of 4K for redo logs. Hence to achieve optimal performance for redo write operations on F40 PCIe cards, tune the environment as shown below.
[Solaris only][F20] To enable maximum throughput from the MPT driver, append the following line to /kernel/drv/mpt.conf and reboot the system.
mpt_doneq_thread_n_prop=8;
This tip is applicable to all kinds of flash storage that Oracle sells or sold including F20/F40 PCIe cards and F5100 storage array. sd-config-list in sd.conf may need some adjustment to reflect the correct vendor id and product id.
A NULL value for SCHEMA recompiles all invalid objects in the database.
2. SGA breakdown in Solaris Locality Groups (lgroup)
To find the breakdown, execute pmap -L | grep shm. Then separate the lines that are related to each locality group and sum up the value in 2nd column to arrive at a number that shows the total SGA memory allocated in that locality group.
(I'm pretty sure there will be a much easier way that I am not currently aware of.)
3. Default values for shared pool, java pool, large pool, ..
If the *pool parameters were not set explicitly, executing the following query is one way to find out what are they currently set to.
eg.,
SQL> select * from v$sgainfo;
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 2171296 No
Redo Buffers 373620736 No
Buffer Cache Size 8.2410E+10 Yes
Shared Pool Size 1.7180E+10 Yes
Large Pool Size 536870912 Yes
Java Pool Size 1879048192 Yes
Streams Pool Size 268435456 Yes
Shared IO Pool Size 0 Yes
Granule Size 268435456 No
Maximum SGA Size 1.0265E+11 No
Startup overhead in Shared Pool 2717729536 No
Free SGA Memory Available 0
12 rows selected.
4. Fix to PLS-00201: identifier 'GV$SESSION' must be declared error
Grant select privilege on gv_$SESSION to the owner of the database object that failed to compile.
eg.,
SQL> alter package OWF_MGR.FND_SVC_COMPONENT compile body;
Warning: Package Body altered with compilation errors.
SQL> show errors
Errors for PACKAGE BODY OWF_MGR.FND_SVC_COMPONENT:
LINE/COL ERROR
-------- -----------------------------------------------------------------
390/22 PL/SQL: Item ignored
390/22 PLS-00201: identifier 'GV$SESSION' must be declared
SQL> grant select on gv_$SESSION to OWF_MGR;
Grant succeeded.
SQL> alter package OWF_MGR.FND_SVC_COMPONENT compile body;
Package body altered.
5. Solaris Critical Thread (CT) optimization for Oracle logwriter (lgrw)
Critical Thread is a new scheduler optimization available in Oracle Solaris releases Solaris 10 Update 10 and later versions. Latency sensitive single threaded components of software such as Oracle database's logwriter benefit from CT optimization.
On a high level, LWPs marked as critical will be granted more exclusive access to the hardware. For example, on SPARC T4 and T5 systems, such a thread will be assigned exclusive access to a core as much as possible. CT optimization won't delay scheduling of any runnable thread in the system.
Critical Thread optimization is enabled by default. However the users of the system have to hint the OS by marking a thread or two "critical" explicitly as shown below.
From database point of view, logwriter (lgwr) is one such process that can benefit from CT optimization on Solaris platform. Oracle DBA's can either make the lgwr process 'critical' once the database is up and running, or can simply patch the 11.2.0.3 database software by installing RDBMS patch 12951619 to let the database take care of it automatically. I believe Oracle 12c does it by default. Future releases of 11g software may make lgwr critical out of the box.
Those who install the database patch 12951619 need to carefully follow the post installation steps documented in the patch README to avoid running into unwanted surprises.
6. ORA-14519 error while importing a table from a Data Pump export dump
All partitions in table XYZ are using 32K blocks whereas the implicit default partition is pointing to a 8K block tablespace. Workaround is to use the REMAP_TABLESPACE option in Data Pump impdp command line to remap the implicit default tablespace of the partitioned table to the tablespace where the rest of partitions are residing.
7. Index building task in Data Pump import process
When Data Pump import process is running, by default, index building is performed with just one thread, which becomes a bottleneck and causes the data import process to take a long time especially if many large tables with millions of rows are being imported into the target database. One way to speed up the import process execution is by skipping index building as part of data import task with the help of EXCLUDE=INDEX impdp command line option. Extract the index definitions for all the skipped indexes from the Data Pump dump file as shown below.
Edit <index_def_file>.sql to set the desired number of parallel threads to build each index. And finally execute the <index_def_file>.sql to build the indexes once the data import task is complete.
Assembler (as) is not installed by default on Solaris 11.
Find and install
eg.,
# pkg search assembler
INDEX ACTION VALUE PACKAGE
pkg.fmri set solaris/developer/assembler pkg:/developer/assembler@0.5.11-0.175.1.5.0.3.0
# pkg install pkg:/developer/assembler
Assembler binary used to be under /usr/ccs/bin directory on Solaris 10 and prior versions.
There is no /usr/ccs/bin on Solaris 11. Contents were moved to /usr/bin
2. Non-interactive retrieval of the entire list of disks that format reports
If the format utility cannot show the entire list of disks in a single screen on stdout, it shows some and prompts user to - hit space for more or s to select - to move to the next screen to show few more disks. Run the following command(s) to retrieve the entire list of disks in a single shot.
format < /dev/null
-or-
echo "\n" | format
3. Finding system wide file descriptors/handles in use
Run the following kstat command as any user (privileged or non-privileged).
kstat -n file_cache -s buf_inuse
Going through /proc (process filesystem) is less efficient and may lead to inaccurate results due to the inclusion of duplicate file handles.
4. ssh connection to a Solaris 11 host fails with error Couldn't agree a client-to-server cipher (available: aes128-ctr,aes192-ctr,aes256-ctr,arcfour128,arcfour256,arcfour)
Solution: add 3des-cbc to the list of accepted ciphers to sshd configuration file.
fsck utility reports the last mountpoint on which the filesystem was mounted (it won't show the mount options though). The filesystem should be unmounted when running fsck.
eg.,
# fsck -n /dev/dsk/c0t5000CCA0162F7BC0d0s6
** /dev/rdsk/c0t5000CCA0162F7BC0d0s6 (NO WRITE)
** Last Mounted on /export/oracle
** Phase 1 - Check Blocks and Sizes
...
...
Oracle Internet Directory (OID) is an LDAP v3 Directory Server that has multi-threaded, multi-process, multi-instance process architecture with Oracle database as the directory store.
BENCHMARK WORKLOAD DESCRIPTION
Five test scenarios were executed in this benchmark - each test scenario performing a different type of LDAP operation. The key metrics are throughput -- the number of operations completed per second, and latency -- the time it took in milliseconds to complete an operation.
TEST SCENARIOS & RESULTS
1. LDAP Search operation : search for and retrieve specific entries from the directory
In this test scenario, each LDAP search operation matches a single unique entry. Each Search operation results in the lookup of an entry in such a way that no client looks up the same entry twice and no two clients lookup the same entry, and all entries are looked-up randomly.
#clients
Throughput Operations/Second
Latency milliseconds
1,000
944,624
1.05
2. LDAP Add operation : add entries, their object classes, attributes and values to the directory
In this test scenario, 16 concurrent LDAP clients added 500,000 entries of object class InetOrgPerson with 21 attributes to the directory.
#clients
Throughput Operations/Second
Latency milliseconds
16
1,000
15.95
3. LDAP Compare operation : compare a given attribute value to the attribute value in a directory entry
In this test scenario, userpassword attribute was compared. That is, each LDAP Compare operation matches user password of a user.
#clients
Throughput Operations/Second
Latency milliseconds
1,000
594,426
1.68
4. LDAP Modify operation : add, delete or replace attributes for entries
In this test scenario, 50 concurrent LDAP clients updated a unique entry each time and a total of 50 million entries were updated. Attribute that is being modified was not indexed
#clients
Throughput Operations/Second
Latency milliseconds
50
16,735
2.98
5. LDAP Authentication operation : authenticates the credentials of a user
In this test scenario, 1000 concurrent LDAP clients authenticated 50 million users.
#clients
Throughput Operations/Second
Latency milliseconds
1,000
305,307
3.27
BONUS: LDAP Mixed operations Test
In this test scenario, 1000 LDAP clients were used to perform LDAP Search, Bind and Modify operations concurrently. Operation breakdown (load distribution): Search: 65%. Bind: 30%. Modify: 5%
LDAP Operation
#clients
Throughput Operations/Second
Latency milliseconds
Search
650
188,832
3.86
Bind
300
87,159
1.08
Modify
50
14,528
12
And finally, the:
HARDWARE CONFIGURATION
1 x Oracle SPARC T5-2 Server
» 2 x 3.6 GHz SPARC T5 sockets each with 16 Cores (Total Cores: 32) and 8 MB L3 cache
» 512 GB physical memory
» 2 x 10 GbE cards
» 1 x Sun Storage F5100 Flash Array with 80 flash modules
» Oracle Solaris 11.1 operating system
ACKNOWLEDGEMENTS
Major credit goes to our colleague, Ramaprakash Sathyanarayan
Hardly six months after announcing Siebel 8.1.1.4 benchmark results on Oracle SPARC T4 servers, we have a brand new set of Siebel 8.1.1.4 benchmark results on Oracle SPARC T5 servers. There are no updates to the Siebel benchmark kit in the last couple years - so, we continued to use the Siebel 8.1.1.4 benchmark workload to measure the performance of Siebel Financial Services Call Center and Order Management business transactions on the recently announced SPARC T5 servers.
Benchmark Details
The latest Siebel 8.1.1.4 benchmark was executed on a mix of SPARC T5-2, SPARC T4-2 and SPARC T4-1 servers. The benchmark test simulated the actions of a large corporation with 40,000 concurrent active users. To date, this is the highest user count we achieved in a Siebel benchmark.
User Load Breakdown & Achieved Throughput
Siebel Application Module
%Total Load
#Users
Business Trx per Hour
Financial Services Call Center
70
28,000
273,786
Order Management
30
12,000
59,553
Total
100
40,000
333,339
Average Transaction Response Times for both Financial Services Call Center and Order Management transactions were under one second.
Software & Hardware Specification
Test Component
Software
Version
Server Model
Server Qty
Per Server Specification
OS
Chips
Cores
vCPUs
CPU Speed
CPU Type
Memory
Application Server
Siebel
8.1.1.4
SPARC T5-2
2
2
32
256
3.6 GHz
SPARC-T5
512 GB
Solaris 10 1/13 (S10U11)
Database Server
Oracle 11g R2
11.2.0.2
SPARC T4-2
1
2
16
128
2.85 GHz
SPARC-T4
256 GB
Solaris 10 8/11 (S10U10)
Web Server
iPlanet Web Server
7.0.9 (7 U9)
SPARC T4-1
1
1
8
64
2.85 GHz
SPARC-T4
128 GB
Solaris 10 8/11 (S10U10)
Load Generator
Oracle Application Test Suite
9.21.0043
SunFire X4200
1
2
4
4
2.6 GHz
AMD Opteron 285 SE
16 GB
Windows 2003 R2 SP2
Load Drivers (Agents)
Oracle Application Test Suite
9.21.0043
SunFire X4170
8
2
12
12
2.93 GHz
Intel Xeon X5670
48 GB
Windows 2003 R2 SP2
Additional Notes:
Siebel Gateway Server was configured to run on one of the application server nodes
Four Siebel application servers were configured in the Siebel Enterprise to handle 40,000 concurrent users
- Each SPARC T5-2 was configured to run two Siebel application server instances
- Each of the Siebel application server instances on SPARC T5-2 servers were separated using Solaris virtualization technology, Zones
- 40,000 concurrent user sessions were load balanced across all four Siebel application server instances
Siebel database was hosted on a Sun Storage F5100 Flash Array consisting 80 x 24 GB flash modules (FMODs)
- Siebel 8.1.1.4 benchmark workload is not I/O intensive and does not require flash storage for better I/O performance
Fourteen iPlanet Web Server virtual servers were configured with Siebel Web Server Extension (SWSE) plug-in to handle 40,000 concurrent user load
- All fourteen iPlanet Web Server instances forwarded HTTP requests from Siebel clients to all four Siebel application server instances in a round robin fashion
Oracle Application Test Suite (OATS) was stable and held up amazingly well over the entire duration of the test run.
- The test ran for more than five hours including a three hour ramp up state
The benchmark test results were validated and thoroughly audited by the Siebel benchmark and PSR teams
- Nothing new here. All Sun published Siebel benchmarks including the SPARC T4 one were properly audited before releasing those to the outside world
Resource Utilization
Component
#Users
CPU%
Memory Footprint
Gateway/Application Server
20,000
67.03
205.54 GB
Application Server
20,000
66.09
206.24 GB
Database Server
40,000
33.43
108.72 GB
Web Server
40,000
29.48
14.03 GB
Finally, how does this benchmark stack up against other published benchmarks? Short answer is "very well". Head over to the Oracle Siebel Benchmark White Papers webpage to do the comparison yourself.
[Credit to our hard working colleagues in SAE, Siebel PSR, benchmark and Oracle Platform Integration (OPI) teams. Special thanks to Sumti Jairath and Venkat Krishnaswamy for the last minute fire drill]
The focus of the paper is on databases and zones. On SuperCluster, customers have the choice of running their databases in logical domains that are dedicated to running Oracle Database 11g R2. With exclusive access to Exadata Storage Servers, those domains are aptly called "Database" domains. If the requirement mandates, it is possible to create and use all logical domains as "database domains" or "application domains" or a mix of those. Since the focus is on databases, the paper talks only about the database domains and how zones can be created, configured and used within each database domain for fine grained control over multiple databases consolidated in a SuperCluster environment.
When multiple databases are being consolidated (including RAC databases) in database logical domains, zones are one of the options that fulfill requirements such as the fault, operation, network, security and resource isolation, multiple RAC instances in a single logical domain, separate identity and independent manageability for database instances.
The best practices cover the following topics. Some of those are applicable to standalone, non-engineered environments as well.
Solaris Zones
CPU, memory and disk space allocation
Zone Root on Sun ZFS Storage Appliance
Network configuration
Use of DISM
Use of ZFS filesystem
SuperCluster specific zone deployment tool, ssc_exavm
ssctuner utility
Oracle Database
Exadata Storage Grid (Disk Group) Configuration
Disk Group Isolation
Shared Storage approach
Dedicated Storage Server approach
Resizing Grid Disks
Oracle RAC Configuration Securing the Databases, and
Example Database Consolidation Scenarios
Consolidation example using Half-Rack SuperCluster
Consolidation example using Full-Rack SuperCluster
Acknowledgements
A large group of experts reviewed the material and provided quality feedback. Hence they deserve credit for their work and time. Listed below are some of those reviewers (sincere apologies if I missed listing any major contributors).
Kesari Mandyam, Binoy Sukumaran, Gowri Suserla, Allan Packer, Jennifer Glore, Hazel Alabado, Tom Daly, Krishnan Shankar, Gurubalan T, Rich long, Prasad Bagal, Lawrence To, Rene Kundersma, Raymond Dutcher, David Brean, Jeremy Ward, Suzi McDougall, Ken Kutzer, Larry Mctintosh, Roger Bitar, Mikel Manitius
Just like the Siebel 8.1.x/SPARC T4 benchmark post, this one too was overdue for at least four months. In any case, I hope the Oracle BI customers already knew about the OBIEE 11g/SPARC T4 benchmark effort. In here I will try to provide few additional / interesting details that aren't covered in the following Oracle PR that was posted on oracle.com on 09/30/2012.
The entire BI middleware stack including the WebLogic 11g Server, OBI Server, OBI Presentation Server and Java Host was installed and configured on a single SPARC T4-4 server consisting four 8-Core 3.0 GHz SPARC T4 processors (total #cores: 32) and 128 GB physical memory. Oracle Solaris 10 8/11 is the operating system.
BI users were authenticated against Oracle Internet Directory (OID) in this benchmark - hence OID software which was part of Oracle Identity Management 11.1.1.6.0 was also installed and configured on the system under test (SUT). Oracle BI Server's Query Cache was turned on, and as a result, most of the query results were cached in OBIS layer, that resulted in minimal database activity making it ideal to have the Oracle 11g R2 database server with the OBIEE database running on the same box as well.
Oracle BI database was hosted on a Sun ZFS Storage 7120 Appliance. The BI Web Catalog was under a ZFS/zpool on a couple of SSDs.
Test Scenario
In this benchmark, 25000 concurrent users assumed five different business user roles -- Marketing Executive, Sales Representative, Sales Manager, Sales Vice-president, and Service Manager. The load was distributed equally among those five business user roles. Each of those different BI users accessed five different pre-built dashboards with each dashboard having an average of five reports - a mix of charts, tables and pivot tables - and returning 50-500 rows of aggregated data. The benchmark test scenario included drilling down into multiple levels from a table or chart within a dashboard. There is a 60 second think time between requests, per user.
BI Setup & Test Results
OBIEE 11g 11.1.1.6.0 was deployed on SUT in a vertical scale-out fashion. Two Oracle BI Presentation Server processes, one Oracle BI Server process, one Java Host process and two instances of WebLogic Managed Servers handled 25,000 concurrent user sessions smoothly. This configuration resulted in a sub-second overall average transaction response time (average of averages over a duration of 120 minutes or 2 hours). On average, 450 business transactions were executed per second, which triggered 750 SQL executions per second.
It took only 52% of CPU on average (~5% system CPU and rest in user land) to do all this work to achieve the throughput outlined above. Since 25,000 unique test/BI users hammered different dashboards consistently, not so surprisingly bulk of the CPU was spent in Oracle BI Presentation Server layer, which took a whopping 29%. BI Server consumed about 10-11% and the rest was shared by Java Host, OID, WebLogic Managed Server instances and the Oracle database.
So, what is the key take away from this whole exercise?
SPARC T4 rocks Oracle BI world. OBIEE 11g/SPARC T4 is an ideal combination that may work well for majority of OBIEE deployments on Solaris platform. Or in marketing jargon - The excellent vertical and horizontal scalability of the SPARC T4 server gives customer the option to scale up as well as scale out growth, to support large BI EE installations, with minimal hardware investment.
Evaluate and decide for yourself.
[Credit to our colleagues in Oracle FMW PSR, ISVe teams and SCA lab support engineers]