Exalytics and the “Secret Sauce”

February 6, 2015 2 comments

Just getting back from Kscope15 where I saw most of the familiar blog folks (in no particular order): Glenn Schwartzberg, Cameron Lackpour, Tim Tow, Tim German, Francisco Amores, Sarah Zumbrum, Celvin K, and John Goodwin.

Cameron convinced several of us a second book was a good idea after swearing after the first one (perhaps literally) that it was too much like herding cats.  Queue the EDS Super Bowl Cowboy video.

Start your engines!

exalytics_fastI  was lucky enough to get Chapter 1 again — I debated this with Cameron that my chapter wasn’t really on Hybrid and the Hybrid chapter should start the book with a sub-title having Hybrid in the name.  He suggested without the hardware you couldn’t do anything else so it should be first.  I didn’t fight back too much.

My content in this edition is really focus Exalytics and also a dive in to the “Secret Sauce”.   You will find some excerpts here and good information.  Glenn suggested it was a little too pro Exalytics however I do believe the newest machines the X4-4, X5-4, and T5-8’s perform extremely well and have features such as the background writes allowing better performance than ever on what were traditionally slower disk subsystems.

Read on for a sample of what you will find near our OOW15 release of the book.

The Exalytics machines have some impressive hardware.   They say a picture is a thousand words so let’s look at what we have:

exalytics_insidePretty cool eh?  My only complaint here is they are a bit pricey which can lead to some forced odd architectures when someone buys two of them and only places one in production.   I’m convinced you really need at least two in production in order to have high availability.  I’ll be lobbying for an X5-2 flavor in another post which would be better suited for some customers.

So what’s the “Secret Sauce”?  It comes in three flavors.

Exalytics First Software – These are enhancements which will make it to the commodity flavors of software

Exalytics Restricted Software – These are enhancements delivered both on Exalytics and commodity however Exalytics flavor has more power e.g. FIXPARALLEL is restricted to 8 threads on commodity and unrestricted on Exalytics

Exalytics Specific – These are enhancements which use the Exalytics hardware itself and not delivered to commodity.

So what exactly can we expect these type of enhancements to do for us?

If you are focused on speed check out the exact same hardware with and without the acceleration flag.  Physical disk gets a huge boost and Flash with the flag enabled is faster than RAM without the flag.

exalytics_compareDo you have Exalytics questions?  Feel free to reach out.


John A. Booth

Company: Infratects http://www.infratects.com
Categories: Exalytics

Part 1: Hyperion Planning Budget Application to ASO Reporting Application

August 22, 2015 1 comment

A business need which has become quite common in the last two to five years is taking your budget/plan data and placing it in a reporting application.   Although Oracle has made ASO capabilities part of Planning it’s not always the best fit especially if hierarchies diverge between the systems.   In my specific instance our planning application has a summarized account structure where are reporting application has the full general ledger chart of accounts.

In this post I am going to show visually the steps we use to move the data and identify technology we make use of.

With this solution our planning administration team can on-demand launch a rule to:

  • Export the data
  • Clear target region
  • Map and load data to target cube

HP to ASO Flow

While considering the solution the different levels of detail on the accounts dimension needed to be handled.  We thought of a few ways to attack the problem and decided all three were not as elegant as the above solution.

  • Pure FDM EE e.g. extract from source, process through FDM EE, export
  • Essbase load rules with hard-coded maps
  • Alias tables on source side having target accounts

What makes the diagram much more elegant is our mapping is “free” and automatically updated.  We have a process which loads actuals into our planning system via Financial Management Extended Analytics tables.  This process does a summary mapping on our accounts dimension.   Via some SQL Fu our HP to ASO maps reverse that summary logic to target the first child of the detail mapping.

More to come in future posts with some script logic as well!

Curious about the solution?  Meet me at our Dallas Texas Infratects Top Gun Conference!

Get Hyper Smart!


John A. Booth

Company: Infratects http://www.infratects.com
Categories: Just make it work Tags: , ,

Just Scrub It!

July 14, 2015 Leave a comment

While working on an ASO optimization problem we need to use the full data set however have it be scrubbed. Based on client preference I went down the MS route and started using Regular Expressions in VB Script.  This quickly became a frustrating exercise as these “Regular Expressions” do not work like those of Perl or other real Regular Expressions. The goal is to replace all numeric data with a hard-coded one — 9.0 in this instance.

Update: Oracle Ace Tim German relates if you happen to have Essbase 11.1.2.4 you can also use MaxL to export anonymous data.

So with Microsoft “Regular Expressions” 3.1459 became 9.0 9.0 9.0 — whereas implementing the same logic in Perl gives the expected 9.0 Working code below:

# Scrub.pl
# Author: John A. Booth
#
#USAGE: 
#	perl scrub.pl <FILEPATH>
# e.g.
#	perl scrub.pl C:\data\asodump.txt
#
#	creates C:\data\asodump.txt.scrub
#
# Converts every numeric value to 9.0
# 

if ( $#ARGV==0 && -f $ARGV[0] ) {
    open(INFILE,$ARGV[0]) || die("Could not open input file");
    open(OUTFILE,">$ARGV[0].scrub") || die ("Could not open output file");

    while(<INFILE>)  {
        s/\s[0-9]+[\.]*[0-9]*/ 9.0/g;
        print OUTFILE $_;
    }

    print "\n";
    print "Created file $ARGV[0].scrub\n";
    close(INFILE);
    close(OUTFILE);
}
else {
	if ($#ARGV==0) {
		print "\n";
		print "Cannot find input file $ARGV[0]\n"; 
	}
    else {
        print "\n";
        print "Usage: $0 input.txt\n";
    }
}

Get Hyper Smart!


John A. Booth
Company: Infratects http://www.infratects.com
Categories: Just make it work

Oh Hybrid what license do I need?

June 30, 2015 Leave a comment

There is quite a chain on Network 54 Essbase forum regarding Hybrid.

If you haven’t heard yet Hybrid is the future of the Essbase OLAP engine combining the Block Storage and Aggregate Storage Engines together for the best of both world.  The 11.1.2.4 release is the best place to begin your Hybrid journey.  Currently cross-dimensional operators force the engine from Hybrid mode back to full Block Storage mode — we are told a forth coming patch will address this soon.

So back to licensing.

Products which confer ASO usage also confer Hybrid Usage.   Expect future licensing documents to clarify this better.

To use Hybrid (for real) in Planning on-prem your planning users of the app where Hybrid is enabled need one of the following licenses:

  • Enterprise Financial Planning Suite
  • Project Financial Planning Module
  • Public Sector Planning and Budgeting Module
  • BI Foundation Suite
  • Essbase Plus

The always handy EPM Licensing Guide documents which products give Aggregate Storage (ASO) rights.

Planning and Budgeting Cloud Services (PBCS) will have Hybrid enabled sometime in the August to October CY15 time frame.

Get Hyper Smart!


John A. Booth

Company: Infratects http://www.infratects.com
Categories: Essbase, Licensing

X5-2 Please, subtitle – Smaller may be better (for some companies)

June 26, 2015 Leave a comment

What I really want for Christmas (or Easter) is Exalytics X5-2 (a cry out to product management)

At Kscope15 this year we see Oracle is talking about the newest model in the X series of Exalytics the X5-4. The X5-4 is the bigger brother to the X4-4. Both the 4-4 and 5-4 have three variable clock speeds under loads — this means under low load the CPU’s (cores) operate at a higher speed and under the largest load at a speed which allows the chip to not over-heat.  They are both use Intel Xeon E7-8000 series of processors.

So why smaller John?  Isn’t bigger always better?  The challenge is when a company purchases two Exalytics machines and places  one and only one one Exalytics box in production. High availability is not an option at that point in time.  You can do some interesting architectures mixing Exalytics and non-Exalytics however the products you put on Exalytics in a given environment need a separate Exalytics to maintain availability.    Ideally your QA/Staging area is also the same architecture as your production environment to facilitate test of load, patches, and assure you that the test in your non-production equates to a like behavior in your production environment.

The infrastructure consultant is now brought in and we cringe that you have one physical machine (basket) with all your applications (eggs) in a given environment.

It makes for an unhappy Easter Bunny if he drops that critical basket and there isn’t another basket ready to run with.

What am I asking for?

Let’s have two half size Exalytics servers that are used to form a cluster (always) in a given environment. This 36 core hypothetical X5-2 Exalytics server can have 4 virtual machines on it for a total of 8 virtual machines across two servers in a given environment.

Web apps are clustered across each equally, enterprise WebLogic is licensed for those OBIEE users who want high availability.   For Essbase one node is active and one passive.

Check out the Oracle Database Appliance X5-2 – one of these with 768GB of ram in each node and we are good to go!

Do you have Exalytics questions? Feel free to reach out.

Read another Exalytics post


John A. Booth

Company: Infratects http://www.infratects.com
Categories: Exalytics

Password Attack

June 26, 2015 Leave a comment

Dusting some things off here post Kscope 15.  This doesn’t look like it saw the light of day.

As an aside 11.1.2.4 still has the password should contain no special characters clause.  Do read the last few sentences if you use products requiring the repository creation utilities also (RCU) as it has some slightly conflicting requirements.

Some days I wonder about my chosen profession.   Typically it’s the days where nothing seems to be working right (usually a specific install more than the whole set of things).

What happens when you allow your clients to choose passwords?

I’ve ran into two situations in the last year on the 11.1.2.1 release where passwords which were chosen by clients caused pretty un-fun installation woes.

Situation 1: Within two weeks of the release of 11.1.2.1.  The 25 character password — if password complexity is good surely a longer password is more secure!

Outcome 1: The password worked mostly.   The mostly part is where it gets fun.  This happened to break down on the security import from the old system.  My philosophy is don’t try to test the bounds of the software testers as you will find something somewhere that doesn’t deal

Situation 2: I have recently began suggesting clients key in their own passwords so that they do not feel the need to immediately go through a password change procedure.   Sometimes we have passwords, sometimes we don’t.

Outcome 2: More recent on a 11.1.2.1 with all the latest patches at the time I came upon an issue where several products were not configuring and/or deploying as expected.  This was a well known configuration, full physical servers, and after three re-installations one of which I decided to put in my own password.  Oddly enough the password I selected worked which didn’t contain <, >, %, &, ‘, “, or _.   Most of those characters if not escaped properly cause issues with SQL statements.  The ampersand and greater than/less than symbols cause issues for systems not escaping or converting for web.

To cap this off the Oracle RCU (Repository Creation Utility) doesn’t like passwords starting with numerals.   You use the RCU for products like Oracle Data Integrator or OBI/BI Foundation Suite.

The 11.1.2.2 Rapid Deployment Guide for Essbase shows:

The 11.1.2.1 Rapid Deployment Guide for Essbase shows:


Company:     Infratects, http://www.infratects.com
Categories: Just make it work

Metavero EPM Starter (automation)

February 1, 2015 Leave a comment

This is a draft in process post.

Function Start_EPM_Service
{
param ($service_name, $server, $port, $Form, $Label)

$socket = new-object System.Net.Sockets.TcpClient("192.168.1.1", $port) 

# If there is no connection to port then catch the exception and continue.
trap {
continue
}

If(-not $socket.Connected) {
    Stop-Service $service_name
    start-sleep -Milliseconds 500;
    If (Test-Path C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\$server\logs\$server.log) {
        Remove-Item  C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\$server\logs\$server.log
    }
    Write-Host "Starting $service_name"
    
    $initial = 0
    #Start WebLogic Admin Server and wait for next RUNNING

    Start-Service $service_name
    $Label.Text = "Starting $service_name"

    do {
        $Form.Refresh()
        start-sleep -Milliseconds 150;
    }
    until(Test-Path C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\$server\logs\$server.log)

    do {
    $f = select-string -path C:\Oracle\Middleware\user_projects\domains\EPMSystem\servers\$server\logs\$server.log -pattern "BEA-000360";
    $i = 0
        do {
            $Form.Refresh()
            start-sleep -Milliseconds 150;
            $i = $i + 1
        }
        until ($i -gt 20)
    }
    until ($f.count -gt $initial)

    $Label.Text = "$service_name started and online"

    do {
            $Form.Refresh()
            start-sleep -Milliseconds 150;
            $i = $i + 1
        }
        until ($i -gt 20)

}
else {
    Write-Host "Service $service_name already started."
    $socket.Close() 
}
}

# Show message box popup and return the button clicked by the user.
function Read-MessageBoxDialog([string]$Message, [string]$WindowTitle, [System.Windows.Forms.MessageBoxButtons]$Buttons = [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]$Icon = [System.Windows.Forms.MessageBoxIcon]::None)
{
    Add-Type -AssemblyName System.Windows.Forms
    return [System.Windows.Forms.MessageBox]::Show($Message, $WindowTitle, $Buttons, $Icon)
}

[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")

$Form = new-object Windows.Forms.Form
$Form.Text = "EPM Starter"

$Label = New-Object System.Windows.Forms.Label
$Label.Text = "Starting"
$Label.AutoSize = $True
$Form.Controls.Add($Label)

$Form.BackColor= [System.Drawing.Color]::White

$pictureBox = new-object Windows.Forms.PictureBox

$pictureBox.Width = 141
$pictureBox.Height = 141
$Form.width = $pictureBox.Width + 120
$Form.height = $pictureBox.Height + 90

$point =  new-object System.Drawing.Point(50,30);

$pictureBox.Location = $point

$pictureBox.Image = [System.Drawing.Image]::Fromfile("C:\scripts\loading.gif")
$Form.controls.add($pictureBox)

$buttonClicked = Read-MessageBoxDialog -Message "Load SOA for Close Suite?" -WindowTitle "Got Consolidations?" -Buttons YesNo -Icon Question

$Form.Show()

if ($buttonClicked -eq "Yes") { 
    Start_EPM_Service Oracle_AdminServer AdminServer 7001 $Form $Label
    Start_EPM_Service Oracle_SoaServer soa_server1 8001 $Form $Label
}

Start_EPM_Service HyS9EPMServer_epmsystem1 EPMServer0 9000 $Form $Label

$Label.Text="Metavero EPM Test Drive Started, Enjoy!"

$point =  new-object System.Drawing.Point(10,20);
$pictureBox.Location = $point
$pictureBox.Width = 193
$pictureBox.Height = 47

$pictureBox.Image = [System.Drawing.Image]::Fromfile("C:\scripts\metavero.gif")

$tagLine = new-object Windows.Forms.PictureBox
$tagLine.Image = [System.Drawing.Image]::Fromfile("C:\scripts\tagline.png")

$point =  new-object System.Drawing.Point(8,77);
$tagLine.Location = $point
$tagLine.Width = 241
$tagLine.Height = 133
$Form.controls.add($tagLine)

$i = 0
        do {
            $Form.Refresh()
            start-sleep -Milliseconds 150;
            $i = $i + 1
        }
        until ($i -gt 100)

$Form.Dispose()
$Form.Close()
Categories: Uncategorized
Follow

Get every new post delivered to your Inbox.

Join 42 other followers