Monday, June 1, 2015

Oracle Fusion Dehydration Store planning

Dehydration Store Planning (Installation time)
This article is for database growth management strategy, it is intended for the actual developers, Architects who are requested to help in managing the Dehydration Store.
Identifying the size of database
The criteria are to consider the instance space filled per day, retention period , purging policy.
Each instance stores data in dehydration store, this information is stored in several tables.
This article is for calculating the dehydration space before installation.
Let us define the size versus category (Small, Medium, and High); also we assume that we will not need more than 10 days of retention.
Serial.
Size of Database
Composite Space persisted per day
Minimum Retention of Space.
1
Small
<10 GB
<100 GB
2
Medium
10-30 GB
100-300 GB
3
High
>30 GB
>300 GB

Identify the inflow of Data

Number of Instances produced daily

Daily Inflow = Number of Instances / Period of time.
E.g. Daily Inflow = 10000/5 = 2000
So, for example we have 2000 instances daily.

Disk Space used by each instance

Disk Space = SOA Schema /Number of Instances
E.g. we have 20 GB used, and number of instances = 2000.
Disk Space = 20 GB/2000 = 10 MB

Space filled by Composite daily

Daily Space = Daily Number of Instances * Disk space per composite.
Daily Space = 2000 * 10 MB = 20 GB

Retention policy of Composites

Most of instances are not needed after a period of time.
We need to decide on legal requirement of Data, do we need to store finance data for several years as required by few Governments.
This can also vary industry wise, if the data needs to be stored for trend analysis.
This needs to decide for each instance type after agreement with business.

Determine the minimum retention Disk Space

Minimum space retain = Daily composite space * Retention period.
e.g.
Minimum space retain = 20 GB * 10 = 200 GB
200 GB of space is required to retain the data of composites for 10 days.

Determine the minimum retained instances

Minimum Retained instances = Daily Inflow of composites * Retention period
Minimum Retained Instances = 2000 * 10 = 20000
20000 instances retain 200 GB as per our example.
So, In our example we are medium size Data base, assuming retention period of 10 days and maintenance cycle of < 1 day.
Serial.
Size of Database
Composite Space persisted per day
Minimum Retention of Space.
1
Small
<10 GB
<100 GB
2
Medium
10-30 GB
100-300 GB
3
High
>30 GB
>300 GB

Clearing of Composite Space

Purge Cycle – The data can be purged in cycles, the period of time till data is deleted is measured in purge cycle.
It might take few hours for multiple executions or it might be scheduled in maintenance cycles.
Maintenance Cycle - This is maintenance cycle for different components, it goes over days covering all space operations.

Maximum Retention period of instances
Do we have long running instances, what is the maximum duration of long running instances?



Future Planning for Space
Monitoring Space Utilization
How do we determine the growth? Do we check database?
Table Level
Database Growth can be measured by measuring the number of records over a period of time.
The tables have created date fields.
·         SCA_FLOW_INSTANCE: CREATED_TIME
·         CUBE_INSTANCE: CREATION_DATE

Creating Tables to store the history of the growth trend, we can create a copy of following tables so that we can store the history of instances.
Ø  SCA_FLOW _INSTANCES
Ø  CUBE_INSTANCE
DBA Help
The package can be used for growth trend of Tables using following.
OBJECT_GROWTH_TREND function of the DBMS_SPACE

Schema level (DBA Help might be required)
Segment growth - DBA_SEGMENTS, filtered on Owner = SOA Owner.
We can create a copy of the data from dba_segment.
Determine the largest segments





After Installation, Guide Lines for Developer – How can we throttle the BPELs after the installations of BPEL?
Word Throttle is used like a mechanism for controlling the dehydration points of instances.
Why would we consider dehydration? Dehydration is used as mechanism to control transaction information availability in case of failures in BPEL. It could be failure of Server or the BPEL instances (temporary lack of resources, time outs .etc...)

Following are options to force dehydration in BPEL.
Serial.
Level
Description

1
each partner link property
idempotent BPEL Property
False – dehydrated after invocation.
True – Does not hydrate after invocation.
2
BPEL Properties Set Inside a Composite
bpel.config.inMemoryOptimization
True – dehydration is not required.
False – Dehydration is required.
3
BPEL Properties Set Inside a Composite
completionPersistPolicy(works only if inMemoryOptimization is true)
(I)On (default):-The completed instance is saved normally
(ii)Deferred:-The completed instance is saved, but with a different thread and in another transaction.
(iii)Faulted:-Only the faulted instances are saved.

Detailed:-
Properties that can affect the Dehydration Store:-
(I) idempotent BPEL Property:-Idempotent Activities:-An idempotent activity is an activity that can be retried (for example, an assign activity or an invoke activity).
Oracle BPEL Server saves the instance after a no idempotent activity. A BPEL invoke activity is by default an idempotent activity, meaning that the BPEL process does not dehydrate instances immediately after invoke activities. Therefore, if idempotent is set to true and Oracle BPEL Server fails right after an invoke activity executes, Oracle BPEL Server performs invoke of instance again after restarting.
If idempotent is set to false, the invoke activity is dehydrated immediately after execution and recorded in the dehydration store. If Oracle BPEL Server then fails and is restarted, the invoke activity is not repeated, because Oracle BPEL Process Manager Sees that invoke of instance is already executed.
When idempotent is set to false, it provides better failover protection, but at the cost of some performance, since the BPEL process accesses the dehydration store much more frequently. This setting can be configured for each partner link property. Setting this parameter to true can significantly improve throughput. Some examples of where this property can be set to true are read-only services (for example, CreditRatingService) or local EJB/WSIF invocations that share the instance's transaction.
(ii)BPEL Properties Set Inside a Composite:-
e.g.
<property name="bpel.config.inMemoryOptimization">true</property>
<property name="bpel.config.completionPersistPolicy">faulted</property>

(a)inMemoryOptimization:-This property indicates to Oracle BPEL Server that this process is a transient process and dehydration of the instance is not required. When set to True, the completionPersistPolicy is used to determine persistence behavior. This property can only be set to True for transient processes or processes that do not contain any dehydration points such as receive, wait, onMessage and onAlarm activities. The inMemoryOptimization property is set at the BPEL component level.
Values:
This property has the following values:
False (default): instances are persisted completely and recorded in the dehydration store database.
True: The completionPersist policy is used to determine persistence behavior.

(b)completionPersistPolicy:-
This property configures how the instance data is saved. It can only be set at the BPEL component level. The completionPersistPolicy property can only be used when inMemoryOptimization is set to be True (transient processes). Note that this parameter may affect database growth and throughput (due to reduced I/O).
Value
(I)On (default):-The completed instance is saved normally
(ii)Deferred:-The completed instance is saved, but with a different thread and in another transaction.
(iii)Faulted:-Only the faulted instances are saved.
(iv)Off:-No instances of this process are saved.

Reference:-

http://pushplsingh.blogspot.fr/2011/11/dehydration-in-soa-11g.html