New Approaches to Faster Oracle Forms System Performance August 9, 2012 Frank Days, VP Marketing, Correlsense Mia Urman, CEO, OraPlayer
Nov 01, 2014
New Approaches to Faster Oracle Forms System Performance
August 9, 2012Frank Days, VP Marketing, CorrelsenseMia Urman, CEO, OraPlayer
Agenda
• The Complexities of Oracle Forms• Faster Forms System Performance• Monitoring Oracle Forms• Summary/Q&A
Housekeeping
• Presentation will last 30 minutes• Submit questions via the chat window• Slides will be made available tomorrow
Guest Speaker:Mia Urman, CEO, Oraplayer
• Sr. Support Analyst and Product Manager of Forms and ADF at Oracle for 7 years
• 13+ years supporting, training and consulting for Oracle Tools
• Founder of Qesem Consulting. Clients include: Mastercard, Bank of Israel, IBM and Motorola
• CEO of OraPlayer, a leading provider of Oracle Forms to SOA integration and mobile
• Leader of OUG Oracle Developer user group
Correlsense Speaker:Frank Days
VP MarketingCorrelsense
THE COMPLEXITIES OF ORACLE FORMS
Forms Complex Multi-Tier Architecture
• Hard to effectively identify the degrading element
Oracle DB
Oracle DB
ApacheServeror OHS
ApacheServeror OHS
Internet
Desktop IAS or WLS
IAS or WLS
Application written Entirely in JavaScenario #1:
Download EntireApplication Logic
Application built using Oracle Forms Server PlatformScenario #2:
Only Download Metadata for Application
Oracle Application
Server
Forms Server
Oracle
How Does Forms Work?
String Buffering• If a given string is used more than once in a form:
– String is loaded once– Referencing occurs on client
• All triggering events sent in single Network Message
Fred
Fred
Fred
FredEvent Bundling
Post-ChangePost-ItemWhen-Validate-ItemPre-ItemWhen-New-Item-Instance
FASTER FORMS SYSTEM PERFORMANCE
Goals
Minimize Startup time Minimize client resource requirements Minimize Oracle Forms Server resource
requirements Use the network as little as possible Accomplish as much as possible in one
network conversation When rendering, be as efficient as possible
Minimizing Start Time
• Pre-start forms applet - startup a number of application runtime engines prior to their usage
• Perceived performance - ‘SPLASH’ screen
HTML Parameter
<APPLET>…<PARAM NAME=
VALUE= >…</APPLET>
splashScreensplashScreen
"travel.jpg""travel.jpg"
Reduce Time to Draw Initial Screen
Property sets are downloaded to describe visible
screen
• Time to initialize Form is heavily influenced by the amount of meta-data required to describe all objects on the first Form the user sees
• Break up large Modules into smaller ones• Only display required canvases• Set raise on entry = false for canvases
and items not needed for initial screen
1
Navigation Resources: Open/Call_Form
• Original Form – Remains open on server
– Properties are cached on client
• System Resources– Consumes more memory on server and client.
– Less Network round trips required to reload Form UI
Client
2
1
2
11
Navigation Resources: New_Form
• Original Form – Closed on server
– Object Properties on client are destroyed
• System Resources– Consumes less memory on server and client.
– More Network round trips required to download form UI (important if latency is bad)
11
Client
2
2
11
...
set_item_property(text_item1_id, FONT WEIGHT, “Bold”);
set_item_property(text_item2_id, FONT WEIGHT, “Bold”);
set_item_property(text_item3_id, FONT WEIGHT, “Bold”);
set_item_property(button_item1_id, LABEL, “Exit”);
...
...
set_item_property(text_item1_id, FONT WEIGHT, “Bold”);
set_item_property(text_item2_id, FONT WEIGHT, “Bold”);
set_item_property(text_item3_id, FONT WEIGHT, “Bold”);
set_item_property(button_item1_id, LABEL, “Exit”);
...
Promote Similarities
• Similar items handled by the Forms smart delta messaging– Only differences are sent across the network
• Promote similarity in the UI – OLB, Visual attributes– Use Inheritance - Property classes and Object groups
– Use subclasses – draw multiple objects with standard settings
• Group setting of properties into like-groups
Boilerplates and Images on Canvases• Boilerplates are downloaded as VGS objects
– Make labels prompts when upgrading from older Forms versions
– Prompts automatically participate in message diff'ing and string caching
• Reduce using Arcs, Circles and Polygons as boilerplates– Replace by rectangles and lines
Boilerplate Objects
text
Reduce Items on the Screen: Tab canvases
• All items of all tabs aredownloaded to client
• Use hidden stackedcanvas on each tabto defer download
• Code changes–WHEN-TAB-PAGE-CHANGED trigger–RAISE_ON_ENTRY=YES–VISIBLE=NO
Save Images In JAR Files
• Iconic buttons on the Web are in gif and jpeg formats
• Put your .GIF and PJCs files in the JAR– Faster download
– Takes advantage of the cache
• Store all images of an application in a single Jar– Jar files are permanently cached on the client
Mouse Triggers & Network Traffic
Move trigger code to specific items requiring Mouse triggers
• Dangers of mouse triggers – Increase network traffic
• MOUSE-DOWN triggering event always generates a second MOUSE-UP message even if trigger hasn’t been defined
• Mouse triggers often defined at higher level in hierarchy or on Canvas– causes multiple execution of trigger
Client Forms Server
What you can do:-Choose timer trigger delays carefully-Use PJCs to implement “Clock”, “Progress Bar”, and “Animation” functionalities
Timer Trigger
• Timer Process occurs in client side code (Java client)• Has severe ramifications on number of network
round-trips generated• e.g. 1 mSec timer := 60,000 round trips per minute
Minimize Round Trips
• Design applications that do not require a user to navigate through fields if default values are accepted
• Be wary of SYNCHRONIZE Built-In– The "universal weapon" for coding problems in
client/server introduces performance hits on the Web
– Round-trip from server to client
– Overuse generates unnecessary network traffic
– Problems handled by "synchronize" on client/server may not exist anymore
Summary: Optimize the Design
• Use subclasses - drawing multiple objects
with standard settings is more efficient
– Reduced messages from “message diff-ing”
• Use event bundling
• Use PLL libraries
– Concurrent users can share memory used by a library
• Minimize use of graphic items
• Use prompts
Summary: Other Performance Tips
• A slow server never runs applications fast• You can't think without brains - Configure the
server with enough memory • Make sure that your hardware can handle the
load• Latency can be introduced by non network
components• Locate app server close to database server• Monitor forms performance to see where
improvements can be made
MONITORING ORACLE FORMS
Production Optimization
• Monitor Forms apps end-to-end• Manage user experience• Understand how components interact
Track All Requests Through All Hops
AppletApache
OC4JForms Runtime
Specific SQLs
• Track all user requests through all components (not just Java and .Net)
• Track and meter single end user across entire stack• Apache, OC4J, Forms Runtime and Oracle Database
Manage User Experience with Meaningful Transaction Names
Understand How Components Interact
• Auto-detected• Real-time• Without manual modeling
SharePath for Oracle Forms/EBS
• Goes beyond Java/.Net with Forms runtime coverage– Broadest coverage: rich clients, Forms applet, C++, ESBs …
– Supports the most complex, heterogeneous architectures
• Dashboards for operations, support, and engineering• No application code changes necessary• Auto-detects transaction paths
Summary
• Forms environment has many performance challenges
• Optimize Oracle Forms in design and production– For users
– On Backend
– Monitor Forms end-to-end
• SharePath is the only APM offering for Forms based/EBS
Questions?
Request a live demo: [email protected]
Frank [email protected]
Mia [email protected]@miaurmanwww.oraplayer.com
www.OracleFormsInfo.com