The purpose of this blog is to explains how to improve performance of an Essbase ASO cube using the compaction technique.
Compacting outline is nothing but defragmenting the outline. In case you experience performance slow-downs of an Essbase database, this might be due to too much fragmentation. So defragmentation of ASO cube is also required although it does not contain any blocks. ASO fragmentation happens when members or dimensions are added or deleted. Thus whenever we have any metadata changes the cube got fragmented. The fragmentation rate depends on the frequency of building the dimensions.
So next question is that it grows to what size and what happen if we keep it as it is?
Usually the size of cube grows to around 2GB or more based on how frequently we perform metadata loads. If we do not do anything and keep it as it is then application will become slower and it will take much more time to open outline and eventually it might happen that outline don't open.
This blog provides step by step details to automate the de-fragmentation technique.
How to do the Compaction using ESSCMDQ utility?
Oracle provides a free utility to compact ASO outline and returns them to their original size. This utility is ESSCMDQ.cmd.
This utility is similar to ESSCMD containing ASO outline compaction functions.
Below are the details of the scripts and files which are being used in the compaction process.
Batch Script:
Compaction process get completed using the batch script. Batch script has path of the compact outline script file and compact outline log file.
Below is the code written in batch script:
esscmdq "location of compact outline script file" "location of log file created"
Essq file:
Essq file has details of server and their login credentials. It also has details of application and their database to be compacted. Below codes are written in Essq file to do the compaction:
Login "servername" "username" "password" ;
Select "appname" "dbname" ;
Openotl "2" 1 "appname" "dbname" "dbname" "y" "y" 1 ;
Writeotl 1 "2" 1 "appname" "dbname" "dbname" ;
Restructotl 1 ;
CloseOtl 1 ;
Unlockobj 1 "appname" "dbname" "dbname" ;
LogOut ;
Descriptions of the scripts mentioned above is available at location:
http://www.oracle.com/technetwork/middleware/bi-foundation/aso-compact-outline-133544.pdf
ii. Log File:
A log file gets created which will have completion/failure status of the above executed code for compaction.
Steps to execute the compaction script:
Step 1:
ESSCMDQ utility agent has to be started before you run batch script
Step 2: Now run the batch script to call the compaction utility command and related scripts.
Step 3: Post successful completion of the script, the size of the ASO outline reduced to 144 MB from size more than 2GB.
Before Compaction
After Compaction
Pros and Cons
S. No. |
ESSCMDQ Approach |
EAS and MaxL Approach |
1. |
They do not do full defragmentation of the outline |
ESSCMDQ utility fully defragments the outline |
2. |
Compacts the outline for updated meta-data, but size of the outline will grow significantly after some duration |
Compacts the outline for updated meta-data, and increment in size of the outline will take significant time. |
But note that you shouldn't defragment the outline quite often as it may lead to corrupting the outline.
There are various methodologies to do the compaction/fragmentation of ASO cubes but they don't reduce the size significantly and also cube size get increased very soon. While, ESSCMDQ utility fully defragments the outline, a 2GB outline resulted above in a 144 MEGABYTES only.