Showing posts with label 10g. Show all posts
Showing posts with label 10g. Show all posts

Jan 23, 2010

Oracles SQL Developer 2.1...

On december 15th Oracle released a new version of its database tool SQL Developer:
Version 2.1.0.63.73

They jumped from version 1.5.5 to 2.1.0, so there should be some really new features built in. The release notes tell us:
  • Oracle SQL Developer Unit Testing provides a unit testing framework that allows you to build a set of sequential steps to create test cases for testing your PL/SQL code. These tests can optionally be collected into test suites, which can then be run and rerun to verify required functionality after any changes to your PL/SQL code. Command
    line access for executing, exporting, and importing suites or tests is provided for integration with your build and version control environment.
  • SQL Developer 2.1 incorporates a Data Modeler viewer, integrated into SQL Developer. The Data Modeler Viewer also supports visualizing tables, views and object types on read-only Data Modeler diagrams. The SQL Developer Data Modeler Viewer extension is a free extension to SQL Developer. For a updateable data model, download and review the Oracle SQL Developer Data Modeler, a stand alone product that supports logical,
    relational and conceptual modeling. The tool supports forward and reverse engineering and import and export from various sources. The Data Modeler supports an additional standalone model viewer, which allows users to open models built in the full Data Modeler.
  • The SQL Worksheet has been redesigned for SQL Developer 2.1 to support concurrent task processing for long running operations. Updates to the worksheet include the support of multiple data grids off the F9 (Run Statement) command and dockable OWA, DBMSOutput and SQL  History windows.
  • A detailed explanation is given here.
  • Let's focus on the second point: Data Modeler



  • I tried to work with that tool, but without the documentation or tutorial you are really lost. The official documentation does not explain anything useful about the data modeler...
    After searching a while i found some some nice links to start:
    After at least the first tutorial you will be able to maintain your ERD with SQL Developer 2.1...

    Aug 26, 2009

    JDeveloper 10g: 10.1.3.1 to 10.1.3.5 and BPEL

    I was searching for the changes from JDeveloper 10.1.3.1 to 10.1.3.5 related to BPEL technology. Here the official webpages:
    There are many fix lists and readme but nothing about BPEL.
    Even on metalink i was not able to find anything...
    So if anybody knows how to get the lists with the JDeveloper patches related to BPEL, please add a comment to this blog ;-)
    Thanks!

    May 26, 2009

    Review at amazon: Oracle SOA Suite Developer's Guide

    Some days ago i read this book:



    I am very interested in this topic, because i am quite familar with Oracle's SOA Suite and of course there are many books out there about Oracle's BPEL/SOA products (SOA using BPEL and BPMN, SOA Approach to Integration, BPEL for Web Service, ...) but a real developer's guide was missing.
    On the web pages from packtpub they say:
    • A hands-on guide to using and applying the Oracle SOA Suite in the delivery of real-world SOA applications.
    • Detailed coverage of the Oracle Service Bus, BPEL Process Manager, Web Service Manager, Rules, Human Workflow, and Business Activity Monitoring.
    • Master the best way to combine / use each of these different components in the implementation of a SOA solution.
    • Illustrates key techniques and best practices using a working example of an online auction site (oBay).
    In my opinion the book is a good start for beginners. The book covers all components of the SOA Suite, but not very detailed. If you are an expert, you should read the Oracle documentation or books which are already published:
    If this was too short, take a look at my review at amazon.de (It is written in german, sorry...)

    Apr 3, 2009

    The lost (collaxa) BPEL-Tutorials: 106.ParallelFlows

    This tutorials shows, how to use the parallel flow with Oracle's BPEL PM.
    The process looks like this:



    First you have to set up everything (see this posting) and change these property files:

    /opt/oracle/product/10.1.3.1/OracleAS_1/bpel/samples/tutorials/106.ParallelFlows/build.properties
    /opt/oracle/product/10.1.3.1/OracleAS_1/bpel/samples/utils/AsyncLoanService/UnitedLoan/build.properties
    /opt/oracle/product/10.1.3.1/OracleAS_1/bpel/samples/utils/AsyncLoanService/AmericanLoan/build.properties


    (at least username, passwort and port)
    Then use the following commands to deploy everything:


    /opt/oracle/product/10.1.3.1/OracleAS_1/bpel/bin/devprompt.sh

    bash-3.00$ /opt/oracle/product/10.1.3.1/OracleAS_1/ant/bin/ant
    ...
    BUILD SUCCESSFUL
    Total time: 4 seconds


    To see the example running, go to the BPELConsole and open the FlowSample process and initiate it with the following XML Source:

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body xmlns:ns1="http://www.autoloan.com/ns/autoloan">
    <loanApplication xmlns="http://www.autoloan.com/ns/autoloan">
    <SSN>987654321</SSN>
    <email>ganga.sah@oracle.com</email>
    <customerName>Ganga Sah</customerName>
    <loanAmount>25000.00</loanAmount>
    <carModel>Honda Acura</carModel>
    <carYear>2004</carYear>
    <creditRating>750</creditRating>
    </loanApplication>
    </soap:Body>
    </soap:Envelope>


    Then the audit trails will show the following:





    You can see at the timestamps, that both sequences are really running in parallel. But note that this does not already happen:

    http://forums.oracle.com/forums/thread.jspa?messageID=3297029&#3297029
    (running synchronous processes in parallel)
    or
    http://forums.oracle.com/forums/thread.jspa?messageID=2246512&#2246512
    (variables in parallel flows)

    You can find all bpel tutorials on this blog via this link.

    Mar 6, 2009

    The lost (collaxa) BPEL-tutorials: 102.Invoking... RMI

    This tutorials shows, how to invoke a BPEL process inside Oracle's PM using RMI.
    To run this tutorial please deploy the CrediRatingService like shown in this posting.

    Then enter the directory $ORACLE_HOME/bpel/samples/tutorials/102.InvokingProcesses/rmi. First take a look at the sample code (com/otn/samples/RMIClient.java):

    Locator locator = new Locator("default","bpel",props);
    IDeliveryService deliveryService = (IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME );
    // construct the normalized message and send to collaxa server
    NormalizedMessage nm = new NormalizedMessage( );
    nm.addPart("payload", xml );
    NormalizedMessage res = deliveryService.request("CreditRatingService", "process", nm);
    Map payload = res.getPayload();


    and the properties inside context.properties:
    orabpel.platform=ias_10g
    java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory
    java.naming.provider.url=opmn:ormi://mysoaserver:6003:oc4j_soa/orabpel
    java.naming.security.principal=oc4jadmin
    java.naming.security.credentials=SECRET

    and that's all.
    To run this example set BPEL_HOME to $ORACLE_HOME/bpel and type
    $ORACLE_HOME/ant/bin/ant javac
    and
    $ORACLE_HOME/ant/bin/ant run

    The result should look like this:

    oracle@mysoaserver:tutorials/102.InvokingProcesses/rmi >/opt/oracle/product/10.1.3.1/OracleAS_1/ant/bin/ant run
    Buildfile: build.xml

    run:
    [copy] Copying 1 file to $ORACLE_HOME/bpel/samples/tutorials/102.InvokingProcesses/rmi/classes
    [echo] JRMI Client on ias_10g app-server
    [java] ssn is 123-12-1234
    [java] {java.naming.provider.url=opmn:ormi://gipsun173.gip.local:6003:oc4j_soa/orabpel, java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory, orabpel.platform=ias_10g, java.naming.security.principal=oc4jadmin, java.naming.security.credentials=SECRET}
    [java] BPELProcess CreditRatingService executed!<br>
    [java] Credit Rating is <rating xmlns="http://services.otn.com">560</rating>

    BUILD SUCCESSFUL
    Total time: 12 seconds


    You can find all bpel tutorials on this blog via this link.

    Feb 25, 2009

    Oracle Web Service Manager: extract...

    The last blog posting must have been read be someone from PACKT publishing, because today i was given a extract of the Oracle Web Service Manager book to publish on my blog!
    So for all interested readers here an extract of chapter 6 "Digitally Signing and Verifying Messages in Web Services":





    ....

    If you want read more, follow the link to complete chapter 6 or buy this book ;-)

    Feb 23, 2009

    Review at amazon: Oracle Web Services Manager

    On the weekend i read this book:



    It is a good book for OWSM beginners and administrators. It explains the basics of WS*-security. For a short introduction read my posting from last year. The book shows many screenshot for configuring OWSM for e.g. Active Directory.
    Here the link to my review.
    The product description states:
    This book not only describes the need for Web Services security but also explains with detailed examples how to define security policies and enforce those policies using Oracle Web Services Manager. This book emphasizes how to use Oracle WSM to address various security use cases with detailed step-by-step examples to learn Oracle Web Service Manager. This is the book for those who want to learn how to Secure web services and Use Oracle WSM to configure web services security. It is mainly for Developers and Architects who want to learn how to use Oracle WSM to address the security challenges of web services and those who want to learn how to use Oracle WSM to address their security needs. If you have a basic knowledge of Web Services then this book will help you understand the need for security and how to use Oracle WSM to address the security challenges.

    Dec 2, 2008

    The lost (collaxa) BPEL-tutorials: Tutorial 3: Manipulating XML Documents in BPEL

    There is a nice tutorial for all xml beginners. You can download this document here.
    I just copied some headlines from the table of contents, which should be known by every BPEL developer:


    • Manipulating Arrays
    • Statically Indexing into an Array
    • Determining Array Size
    • Dynamically Indexing into an Array
    • Dynamically indexing by Constructing an XPath at Run Time
    • Dynamically Indexing with the BPEL getElement Function
    • Merging Arrays
    • Appending New Items to an Array
    • Converting From a String to an XML Element
    • Differences for RPC-style WSDL Files

    Initializing a Variable with Literal XML was shown in 103.XMLDocuments.
    To start with arrays you can try the tutorial 112.Arrays.

    The size of an array can be evaluated with this expression:

    <assign><copy>
    <from expression="ora:countNodes('output', 'payload','/invoice/lineItems/item')"/>
    <to variable="lineItemSize"/>
    </copy></assign>


    To convert excaped XML to a variable the following snippet is very useful:

    <assign><copy>
    <from expression="ora:parseEscapedXML('
    <item xmlns="http://samples.otn.com"sku="006">
    <description>sun ultra sparc VI server</description>
    <price>1000</price>
    <quantity>2</quantity>
    <lineTotal>2000</lineTotal>
    </item>
    ')"/>
    <to variable="escapedLineItem"/>
    </copy></assign>


    The opposite can be done with ora:getContentAsString().

    Nov 2, 2008

    The lost (collaxa) BPEL-tutorials: 112.Arrays

    If you do not know how to iterate over an array, you should read this tutorial:

    To model an array with XML you have to create the following XSD:



    The element line-item is modelled like this:

    <element name="line-item" type="tns:line-itemType" maxOccurs="unbounded"/>

    Here the BPEL of this collaxa-tutorial:

    If you take a look at the sample code, it works like this:

    1. create a xpath-expression via concat
    2. use this xpath-expression inside another expression
    3. increment the iterator-variable
    That's all:

    concat('/tns:invoice/tns:line-item[',bpws:getVariableData('iterator'),']/tns:line-total')
    is evaluated at runtime to:
    /tns:invoice/tns:line-item[1]/tns:line-total
    and inserted
    bpws:getVariableData('input','payload','/tns:invoice/tns:line-item[1]/tns:line-total')

    Another way is to write just
    bpws:getVariableData('input','payload','/tns:invoice/tns:line-item[$iterator]/tns:line-total')
    which is much easier...

    One nice thing with this 112.Arrays example is, that after deployment you find the BPELConsole already filled with parameters:


    How can this be achieved? After deployment you can use the checkbox "Save Test" for the first invoke and after that you get this parameters each time filled in.
    In this example just take a look at the bpel.xml:


    Inside the bpel.xml you can put the default data for the BPELConsole inside this CDATA:
    <property name="defaultInput"><![CDATA[
    <mydata>parameter1</mydata>
    ]]></property>


    Oct 22, 2008

    The lost (collaxa) BPEL-tutorials: 102.InvokingProcesses

    After some non-BPEL related blog entries, the next BPEL tutorial. I started with the tutorials 101 (setting up your environment), 103 (XML fragments), 104 (sync BPEL), 105 (async BPEL). Now i think it is time to look how BPEL processes can be invoked.
    Let's start with invoking via Perl:
    102.InvokingProcesses/perl/invokeHelloWorld.pl



    To get this perl script running the helloWorld (101) has to be deployed. It very easy, just type



    and just check, that the process was really invoked in the BPELConsole
    (http://yourserver:7777/BPELConsole):



    That's all. You only have to import

    use LWP::UserAgent;
    inside the Perl script and create a SOAP request.

    This example was only the invocation of the asynchronous HelloWorld without waiting for the response. In the same directory you can find the
    invokeCreditRatingService.pl. This scripts waits for the response of the BPEL process, but you have to deploy the CreditRatingService:


    You can find it in $ORACLE_HOME/bpel/samples/utils/CreditRatingService (There is a CreditRatingService.jpr inside, so you can open it in your JDeveloper).
    Invoking this BPEL via perl will show the following output:


    And as you can see the perl script gets the result (560) of the BPEL...




    Sep 24, 2008

    Oracle BPEL PM 10.1.3.4: New features

    Some days ago i made my first tests with BPEL PM 10.1.3.4. If you are interested for a full list of the new features you should read the official release notes. Here the summary from Oracle:

    • Improved Visibility of Engine Threading Model
    • Improved Statistics Collection
    • Minimize XML Coding Errors
    • Rescuing Lost Instances
    • Automated Recovery Agent
    • Collection of Support Information
    • Deployment Plan
    I will show a few screenshots to the first three topics, but for an impression of 10.1.3.4, this should be enough:

    In 10.1.3.4 there is a graphical representation to monitor the threading model of the BPEL PM. In the old one, you only got the numbers without a history:


    This gui should be very helpful for performance tuning and finding bottle necks.

    Another enhancement is the analytics tab placed in the processes view. There you can investigate for each activity of the BPEL process the times for
    • count
    • avg-cpu
    • min-cpu
    • max-cpu
    • avg-wall (this number is always the same like avg-cpu)


    And you can investigate the sources for the activities by clicking on the + symbol.

    At processes view Oracle added another tab "Validate XML". This is nothing special, just a validation of the XML against the XSD of the BPEL process, but it is nice to have it inside the BPEL Console, so you can stay at the BPEL Console and debug what is wrong with you entrance message.


    At the BPEL Console these three enhancements have been introduced from Oracle. In the release notes you can find:
    Goal is to make BPEL Console the only place you'll need to go

    There are some other enhancements (not at GUI level), maybe i will write about them in another posting...

    Aug 3, 2008

    The lost (collaxa) BPEL-tutorials: 105.AsyncCompositeLoanBroker

    Here the next BPEL tutorial. If you are starting now, please set up your environment first (take a look on the previous tutorials).
    The AsyncCompositeLoanBroker will show you, how to call an asynchronous webservice/BPEL within a BPEL.

    1. Open the LoanBroker.jpr in your JDeveloper. Then open the BPEL:

    2. The LoanService is used with an Invoke and a Receive. This has to be done everytime the wsdl you use has the structure (asynchronous):
      <portType name="LoanService">
      <operation name="initiate">
      <input message="tns:LoanServiceRequestMessage"/>
      </operation>
      </portType>
      <portType name="LoanServiceCallback">
      <operation name="onResult">
      <input message="tns:LoanServiceResultMessage"/>
      </operation>
      </portType>

      and not like this (synchronous)
      <portType name="StockQuoteService">
      <operation name="process">
      <input message="tns:StockQuoteServiceRequest"/>
      <output message="tns:StockQuoteServiceResponse"/>
      </operation>
      </portType>

      For more information read the WSDL-specification...
    3. To get the tutorial running, you have to modify all build.properties in ../../utils/AsyncLoanService and in the LoanBroker project (http.port, admin.password, ...) .
    4. Do a right click on the build.xml and choose "Run Ant Target" -> deploy
      This target will deploy the LoanService and the LoanBroker.
    5. To start the BPEL open the BPELConsole -> Dashboard and click on LoanBroker. Put some parameters in the form and click invoke.

    6. In opposite to an invoke of synchronous BPEL, you will not get the response. The BPELConsole shows the following:

    7. Click on the audit and there you can see the result of the instance.
      This audit screen is very nice for debugging or retracing workflow instances.
    The advantage of asynchronous BPELs is, that you do not have to care about timeouts, but this comes with the cost, that the BPEL PM has to dehydrate the instance into the database (which is a little bit slower...)

    Jun 26, 2008

    The lost (collaxa) BPEL-tutorials: 103.XMLDocuments

    After you have everything in place (follow this posting), let's step to this tutorial: 103.XMLDocuments
    In this sample a "complex" xml document is created within the bpel. Sometimes you have to answer the question: there is a xml document with many defaults and you want to update only a few parameters.
    Here the solution:
    Build a BPEL and use a xsd which corresponds to your complex xml document. In this BPEL add an assign with the following operation:


    The option "XML Fragment" can be chosen in the pulldown menu within the create operation dialog.
    Into this XML Fragment you have to add the following xml


    if your XSD looks like this:

    <schema targetNamespace ="http://samples.otn.com/finance"
    xmlns = "http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"/>
    <complexType name="StockReviewSheetType"/>
    <sequence/>
    <element name="symbol" type="string" />
    <element name="targetPrice" type="float" />
    <element name="currentPrice" type="float" />
    <element name="action" type="string" />
    <element name="quantity" type="int" />
    <sequence/>
    <complexType/>
    <schema/>

    Very important is to specfy the right namespace in the xml fragment. If you forget this, the assign is executed, but it is like you assign values to the variables of com.gip.myclass and you need them in com.xyna.myclass.... This will break your workflow not now, but later...

    Jun 22, 2008

    The lost (collaxa) BPEL-tutorials: 101.HelloWorld

    There are many people who want to get used to BPEL in particular to Oracle BPEL PM. Now if you search the ORACLE_HOME of your Oracle Application Server 10g, you will find the following diretory:
    /opt/oracle/product/10.1.3.1/OracleAS_1/bpel/samples/tutorials

    In this directory there are many samples like 101.HelloWorld. The samples were built as the BPEL engine was not yet bought from Oracle. And this is the problem of this samples. You can not find any document, where these are described. I only found this reference:
    BPEL4WS 101 Tutorial. Learn BPEL through an example

    So i think, it would be helpful, if i explain some of the tutorials here on my blog....
    Let's start with this 101.HelloWorld:

    So what does this example tell us?
    Nothing special. Just the typical Hello World AND HOW TO SET UP EVERYTHING (like connecting jdeveloper and BPEL PM, Deploying a BPEL, Testing a BPEL, ...)

    Download jdeveloper 10.1.3.3
    Unzip the file
    Start jdeveloper (JDEV_HOME/jdeveloper.exe on Windows or JDEV_HOME/jdev/bin/jdev on Linux)
    Create an application (File->New or for deeper understanding read here
    Open the HelloWorld.jpr (just answer the migration dialog with yes)
    DoubleClick HelloWorld.bpel and testHelloWorld.xml

    Then you should see this (after dragging one tab to the right):

    To get the BPEL running, you have to perform the following:
    JDeveloper: Setting up an application server connection
    JDeveloper: Setting up an integration server connection
    JDeveloper: Deployment of a BPEL
    Login to you BPELConsole (yourwindowsserver:80/BPELConsole or yourunixserver:7777/BPELConsole)
    Automated testing of a BPEL (you have to do first Deploying a test suite and second Running a test suite).

    So this is all you can learn from this 101.HelloWorld tutorial: Deploy a BPEL and do an automated test.

    You can find all bpel tutorials on this blog via this link.

    UPDATE: You can find the 101.HelloWorld with SOA Suite 11g here.

    Apr 3, 2008

    Oracle Clusterware

    I found a nice tip about Oracle clusterware on this blog.
    The scope of the article is that you can use Oracle clusterware on Oracle Unbreakable Linux without an additional license, but i found the following paragraph very interesting:
    Now you can download the clusterware and use it as an extension of your Linux to make virtually any application highly available even without having an Oracle Database Server.

    If you start searching on otn.oracle.com:documentation for some information about this, you will not find anything. But here the white paper from Oracle, which explains the concept making applications high available with application vips and Oracle clusterware.
    The ability to protect non-Oracle applications from failure was not part of Oracle Database 10g Release 1. With the advent of Oracle Database 10g Release 2, non-Oracle applications running on a cluster can benefit from the same level of protection as existing Oracle Database processes.

    and
    Customers and Oracle partners can now place their own applications under the management and protection of Oracle Clusterware, such that they restart on process failure or failover to another node on node failure.

    With this enhancement Oracle provides an easy way to provide high availability not only for the database but also for its application server and the best:
    You must only maintain one software stack...

    Feb 27, 2008

    Security and SOA

    In an service oriented architecture the deployments of webservices and bpels have become more and more complex. This creates additional challenges for securing applications or message exchange.
    You can use an old, mature standard to address these challenges:
    transport-level security. With SSL it is very easy to secure the data . But this solution gets a little bit difficult, if you want to implement message routers, which should look into the payload. You have to distribute certificates to all routers. This is not feasible for large installations involving many department or many contractors...

    Is this all? No! There are some new options like the WS-* specifications...
    Now you will say: "Ok, these WS-* things are very helpful. I like the WS-makeitfast and WS-generateitwithoutwork..."
    You can find a diagram which shows all this WS-* specifications here (from www.innoq.com)
    Yes there are many WS-* specifications and here the attempt to explain WS-Security. To achieve this goal we have to start with two other specifications:

    1.) XML Encryption can encrypt the whole element (example from www.w3.org):
      <?xml version='1.0'?>
    <PaymentInfo xmlns='http://example.org/paymentv2'>
    <Name>John Smith</Name>
    <CreditCard Limit='5,000' Currency='USD'>
    <Number>4019 2445 0277 5567</Number>
    <Issuer>Example Bank</Issuer>
    <Expiration>04/02</Expiration>
    </CreditCard>
    </PaymentInfo>

    or just the content:
      <?xml version='1.0'?>
    <PaymentInfo xmlns='http://example.org/paymentv2'>
    <Name>John Smith</Name>
    <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element'
    xmlns='http://www.w3.org/2001/04/xmlenc#'>
    <CipherData>
    <CipherValue>A23B45C56</CipherValue>
    </CipherData>
    </EncryptedData>
    </PaymentInfo>


    2.) XML Signature can add a signing entity (example from www.w3.org):
    <Signature Id="MyFirstSignature"  
    xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
    <CanonicalizationMethod
    Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <SignatureMethod
    Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
    <Reference
    URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
    <Transforms>
    <Transform Algorithm="http://www.w3.org/TR/2001/
    REC-xml-c14n-20010315"/>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
    </Reference>
    </SignedInfo>
    <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
    <KeyInfo>
    <KeyValue>
    <DSAKeyValue>
    <P>...</P><Q>...</Q><G>...</G><Y>...</Y>
    </DSAKeyValue>
    </KeyValue>
    </KeyInfo>
    </Signature>


    WS-Security is using XML Encryption to provide confidentiality and XML Signature to provide data integrity. The SOAP headers of WS-Security can be enhanced for authentication purposes with X.509 certificates, kerberos tickets, SAML or some others....

    Oracle support WS-Security and there was a very nice article at Oracle magazine where Mike Lehmann explained how to use WS-Security with JDeveloper.

    So with Oracle AS 10g and JDeveloper you can easily secure your SOA and the webservices with SSL or WS-Security....

    Jan 25, 2008

    Data Management for Oracle BPEL PM

    If you are searching for documentation to manage the Oracle BPEL schema, you will find the following:

    FIRST: Official links:
    Tables Impacted By Instance Data Growth
    Best Practice Guide: Dehydration Store Management: 10-25
    which leads to this link.
    and last but no least:
    Clemens Utschigs Best Practices: unzip the file and look at BestPractices/BPEL/BPEL_Purging_DehydrationStore.
    SECOND: Unofficial blogs:
    Delete BPEL instances and if you use some search engine you will find some more blogs with similar content...
    THIRD: Metalink:
    Note:341102.1
    Subject: How to purge BPEL audit tables to avoid growing tablespace issues ?

    Ok. For BPEL installations with few workflows per day this is enough but what is with high rate systems, where no downtime is allowed?
    Oracle provides very nice features like transportable tablespaces and partitioning (see my blog entry here) . Why are these features are not included in the Oracle BPEL installation?
    But this is not really a problem, because at this point Oracle Partners like GIP can provide additional features in their products....

    Jan 14, 2008

    Review at amazon: Oracle Database Programming using Java and Web Services

    I wrote another recension at amazon:

    Oracle Database Programming using Java and Web Services from Kuassi Mensah.
    Take a look here.

    Here a short sum-up:
    This book covers everything around Java and Oracle Database. Kuassi Mensah explains in details how to run Java inside the database (with all restrictions) and why you have to use a native Java compiler and how to write Java outside the database which leverages all the Oracle infrastructure (TAF, ONS, etc.) and how to to run Non-Java languages inside the OracleJVM and, and, and....

    Just one thing more: Buy it - read it.

    Jan 6, 2008

    Review at amazon: Performance and Capacity Planning with BPEL

    Some days ago i read the book "Business Process Automation. Performance and Capacity Planning with BPEL" .
    First i was amused, but after 50 pages i got angry and decided to write a recension at amazon about this book. If you are interested take a look here.
    The recension is in german (sorry), but here a short summary:

    The assumptions, which are made in this book are too simple. Yes it worked for their sample process but in real world their model will fail...

    And the best:
    They invented a small test program to generate test messages and put some load on their BPEL-engine (Websphere). In Oracle this stress test (s. 5.) tool is out of the box integrated into the BPEL PM.

    Jan 3, 2008

    A review: Oracle SOA Suite Best Practice Guide

    I read the new Oracle SOA Suite 10.1.3x Best Practices Guide (i wrote a posting as it was released.)

    They have collected many tips and tricks, which are very useful for creating applications with BPEL. I want to challenge chapter 9 (Best Practices for a JMS-to-Database Scenario) in this blog.

    The focus of this chapter is Oracle SOA Suite Performance. The guide tells us, that this example JMS-to-database is proof-of-concept engagement with a customer.It is an aplication, which receives JMS Messages from a queue and put them after parsing into a database.



    To optimize throughput a cluster of 5 servers is used. Two servers do the hosting of the AQ-JMs in an Oracle RAC database, on two servers run the BPEL Process Managers (clustered) and another one which stores the received records in a database. All servers are 2 CPU Opterions (2.1 GHz) with 1-4 GB RAM. All machines are running on Linux.

    The configuration of AQ is straight forward. On every RAC node one queue is created with istance affinity to this node. This is the only way to prevent interconnect traffic and contention on the queue. But the hint to tune the parameter aq_tm_processes is not valid anymore (see the Oracle DB documentation)
    After reading, that you should use OCI and not thin drivers for the Oracle BPEL Manager, i just have to ask, why OCI is not the default for the SOA Suite installation...

    The tuning of the BPEL is quite interesting. They change the asynchronous WSDL with just one input message to a synchronous operation:



    and add a dummy reply. But unfortunately the performance enhancement of these changes are not measured, which would be a valuable information....

    After some OC4J optimations the measuremnts or better the final number are presented. These final numbers are a little bit disappointing, because nothing is said about how long this measurements where performed. No graphs with rate against a timeline. The problem with performance of database related applications (here AQ-JMS and BPEL schema) is, that you can write very fast into the redo logs but if all logs are busy, the whole system will stall.
    But it is like everytime with Oracle: If you know how to tune the database, you are done ;-)