App. generation process using JHeadstart!?

Hi! I want to know if I understand correctly the process of developing app. with JHeadstart (see, - http://my.jetscreenshot.com/2677/20111006-nnjj-66kb). Based on this diagram I had written the process below:
1. First of all, we create ADF BC using JDeveloper Wizard.
2. Then we Enable JHeadstart on the CV Project that creates App. Definition file.
3. Then we create JHeadstart Service Definition (ADF BC metadata file) FROM created BC.
4. Using this ADF metadata (Service Definition) in App. Definition Editor we GENERATE application that uses templates.
5. Generator using templates generates necessary files JSF, JSP; JSF+ADFc; ADF Model, Data Bindings, Data Controls.
Am I right, I described app. developing process in JHS tool correctly? If no, then say where I am wrong?
Hope for Your answers, best regards, Debuger.
Edited by: Debuger on Oct 6, 2011 1:49 AM
Edited by: Debuger on Oct 6, 2011 1:50 AM

That is correct.
For more info:
- Jheadstart Tutorial: http://download.oracle.com/consulting/jhstutorial1111.pdf
- JHeadstart Developers guide: http://download.oracle.com/consulting/jhsdevguide1111.pdf
Steven Davelaar,
JHeadstart team.

Similar Messages

  • Can the Ipod 4th and 5th generation be used as GPS? With the app Waze and under Wifi?

    Can the Ipod 4th and 5th Generation be used as GPS? With the app Waze and under Wifi?

    Mini-education...
    GPS signals are separate from and completely unrelated to both the Internet and the cellular telephone network.  GPS signals come directly from the GPS satellites.  They provide signals that allow GPS receivers to calculate latitude and longitude information.  Navigation software then takes that latitude/longitude info and converts it to land mass, roads, bridges, highways, buildings, etc.
    Most navigation software stores the maps right in the iPad/iPod/iPhone but a disadvantage is that the maps must be periodically updated (perhaps once every two years).  The Internet is not required to use the system but it is required to update the maps.
    Some navigation software gets the maps from the Internet and requires an Internet connection to function but an advantage is that the maps are always up-to-date.
    The WiFi+3G/4G iPad and the iPhone both have a GPS receiver.  The WiFi-only iPad and the iPod do not and these devices require an accessory.

  • JHeadStart Forms 2 ADF Generation Process - Issues

    Hi
    I am trying to migrate my Forms to ADF using JHeadStart.
    I have installed JDeveloper 11.1.1.2.0 and JHeadStart jhs11.1.1.2.37
    It says Oracle JHeadStart 11.1.1.2.37 successfully installed !
    I am trying to generate Business Components in the Model Project ..
    I have chosen New (Under Buisness Tier) --> ADF Business Components
    there is no option for JHeadStart Forms2ADF Generator as expected..
    I could not see this JHeadStart Forms2ADF Generator wizard option anywhere else inside JDeveloper.
    FYI, I am trying to follow Demo 2 mentioned in the below page ...
    http://www.oracle.com/technetwork/developer-tools/jheadstart/overview/index.html
    Thanks,
    Ram

    jdev 11.1.1.2 is not certified with jheadstart.
    Timeframe for JHeadstart 11.1.2
    JHeadStart Compatibility Matrix

  • Syslogd process uses all available cpu & console app won't run.

    I have a Mac Mini (G4 power PC) running 10.5.5. Just recently after several minutes the system never wakes. It just shows the SBBOD. All I can do is hold down the power button and reboot. When the system reboots, using the activity monitor, I see that the process named syslogd uses all available cpu. I can still do things, but the cpu is saturated.
    I took a snapshot of the syslogd process, and I can post it here if anyone thinks it might help.
    If I activate the console application, the window comes up then hangs with the SBBOD.
    The syslogd process uses all available cpu right after reboot, and does so regardless of which user (including root) is logged in. Attempting to kill the syslogd process with the activity monitor does nothing

    Thanks! It took a long time for the disk utility to fix the permissions, but as soon as it did, the logger process calmed down. Looking at the log file now, I see it was my McAfee virus scan causing the logger to flip-out.
    I'm now looking for a new MAC anti-virus program.

  • JHeadStart Forms2ADF Generation Process - Issues

    Hi
    I am trying to migrate my Forms to ADF using JHeadStart.
    I have installed JDeveloper 11.1.2.2.0 and JHeadStart 11.1.2
    I am trying to generate Business Components in the Model Project ..
    I have chosen New (Under Buisness Tier) --> ADF Business Components
    there is no option for JHeadStart Forms2ADF Generator as expected..
    I could not see this JHeadStart Forms2ADF Generator wizard option anywhere else inside JDeveloper.
    I am trying to follow Demo 2 mentioned in the below page ...
    http://www.oracle.com/technetwork/developer-tools/jheadstart/overview/index.html
    Thanks

    I am sorry, we have no special arrangements for students.
    This forum post might help you to position Forms2ADF Generator correctly:
    Re: Any example customer has migrated from Oralce Forms to ADF?
    Steven Davelaar,
    JHeadstart team.

  • Using JHeadstart to generate shuttles for updates

    Hi guys,
    Using JHeadstart 11.1.1.3 - is it possible to generate shuttle boxes for the simple task of updating records.
    For example - in the leading list I want to see all employees with a status of 'ACTIVE'. In the trailing list I want to see all employees with a status of 'INACTIVE'. By shuttling employees between the two lists, the status of the employee should be updated accordingly. I know there are processShuttle class in JhsApplicationModuleImpl but this (and the App Def Editor) only really seem to cope with data where a parent-child relationship exists.
    Is there any way to achieve this in JHeadstart (I recall years ago somehow using dummy parent VO's ?) - or am I best dropping back to ADF for this and then using templates to preserve the code
    Cheers,
    Brent

    Hi Steven,
    I have actually managed to get this working in JHeadstart - and with only a couple of lines of custom code needed - so I thought I would post the process I followed here in case anyone else is interested (and perhaps get some feedback from you on whether this method is ok to use, or indeed if it can be tweaked/improved on :)
    So, for my testing I used the HR schema
    1. Extended the EMPLOYEES table to add a new column EMPLOYEE_STATUS. Not null, set most to "INACTIVE", some to "RETIRED" and some to "ACTIVE"
    2. Created Employee EO and Employees VO
    3. Also created a new VO EmployeesToBeActivatedShuttle - based on Employee EO with a custom where clause of WHERE Employees.EMPLOYEE_STATUS in ('ACTIVE','INACTIVE') - as in my unselected list, I don't want to see employees with a status of "RETIRED"
    4. Created a dummy parent VO EmployeeStatusActiveDummy - Read only VO with query "select 'ACTIVE' as emp_active_status from dual"
    5. Created a view link between EmployeeStatusActiveDummy and Employees
    6. In AppModule added EmployeeStatusActiveDummy and the child Employees VO (renamed ActiveEmployeesShuttle)
    7. In JAG, created a group ActivateEmployees with Data Collection EmployeeStatusActiveDummy. Hide single attribute.
    8. Created a dynamic domain for the unselected list using EmployeesToBeActivatedShuttle with EmployeeID as value and LastName as meaning
    9. Created a child group ActiveEmployees using the Data Collection ActiveEmployeesShuttle. Set group to parent-shuttle, set the unselected list domain and relevant titles
    As it stands, after generation this works perfect for showing just the INACTIVE employees in the leading shuttle and ACTIVE employees in the trailing shuttle. Also, moving employees from the INACTIVE to the ACTIVE shuttle also works as the existing processSelectedParentShuttleRow method in JhsApplicationModuleImpl simply updates the child attr (EmployeeStatus in this case) to the value of the parent attribute (hard coded as ACTIVE). What doesn't work out of the box is moving employees the other way (ie un-selecting them) as the standard processUnselectedParentShuttleRow method sets the child attr to null.
    I simply overrode processShuttle in my AppModuleImpl, and depending on the value of the childVo ViewObject I replace the processUnselectedParentShuttleRow with a shuttle box specific one (processUnselectedEmpStatusActiveShuttleRow). In this I simply change the line setting the child attr from null to INACTIVE (in my real world case I am looking up another attribute on the row that holds the previous status and using this value to reset the current status).
    And voila - JHeadstart generated shuttle updating the status of my records :)
    Hopefully it will stand up to more testing !
    Cheers,
    Brent

  • WHY - give workable examples of using JHeadstart to convert forms into ADF.

    Why give examples of how to use JHeadStart to convert forms in to ADF, but not allow it to be done with the evaluation version ... I assume it was possible with the 10g versions. Is it broken in 11g.
    I was lookig to build a case for migrating an oracle forms application to Oracle Java and not a IBM or JBOSS or even .Net application, I can't build that case now, I have no budget to engage Oracle, have to do this of my own bat. Company has been take over by bigger company that has IBM stack.
    Is Oracle this follish to allow the smaller users of Oralce to go by the way side, be lost to other languages etc

    We deliberately did not include the Forms2ADFGenerator in the evaluation version.
    Modernizing your forms application, possibly migrating it to ADF is a considerable effort that is often underestimated.
    Migration tools like the Forms2ADFGenerator can help to a certain extent but are by no means a magic bullet. This is something we cannot stress enough, as over and over again we see people who think migration tools can make the difference. They cannot.
    If you want to make a choice of development environment to modernize your forms application, then the availability of a migration tool should not play a role!
    It is a fundamental and strategic decision to go for Oracle ADF which should not be influenced by a minor time saver like a migration tool.
    To decide on the use of JHeadstart, the evaluation version with the tutorial should be convincing enough.
    The real power of Jheadstart is not in the Forms2ADF Generator, this tool is just a lbonus that can save you a bit of time.
    Here is some more info:
    When does JHeadstart Forms2ADF Generator save time
    The amount of work that can be saved by using the JHeadstart Forms2ADF Generator (JFG) very much depends on the structure of the Oracle Forms application at hand. The JHeadstart Forms2ADF Generator provides most savings for forms that have the following characteristics:
    * Standard-Forms data retrieval and data manipulation through blocks based on database tables, with master-detail relations defined between the block
    * Complex user interface, many (stacked) canvasses, many tabs, many list of values, and other display types
    * PL/SQL logic mostly limited to user interface dynamics: conditionally showing/hiding user interface items, and conditionally changing the properties of user interface items. While JHeadstart does not convert PL/SQL logic, this type of logic is easily implemented in the ADF application because JHeadstart provides many declarative property settings to implement this behavior.
    PL.SQL Logic
    JHeadstart has made the deliberate choice to not automatically convert the PL/SQL logic to Java. The reasons for this are:
    * It is impossible to automate the migration of a two-tier architecture (logic in Forms or in the database) to a three tier Model-View-Controller architecture as is common in JEE web applications, including ADF-based applications.
    * The architecture of the converted application should be identical to the best-practice architecture of an ADF application that is build from scratch. If the architecture is the same, the same skill set can be used to maintain both migrated applications and ADF applications build from scratch. In addition, by going for a best practice architecture, the application is more flexible, and can be maintained easier at lower cost.
    * When using the JHeadstart Forms2ADF Generator, you get this best-practice ADF architecture that is identical to ADF/JHeadstart applications that are built from scratch.
    Other Forms2ADF Considerations
    And even if it turns out the JFG adds a lot of value, there are many other questions you should ask yourself before embarking on a Foms2ADF project.
    For example:
    * Apart from technical reasons like old Forms verisons no longer supported, are there real business reasons and business benefits for migrating that justify the migration effort?
    * To what extent is the application still meeting functional requirements?
    * Are there issues with stability and end user friendliness?
    * Old forms applications are typical "window-on-data" screens, you see the structure of the datamodel through the layout of the screens. Modern web 2.0 composite applications are more task-oriented with good support for human workflow. You should consider to what extent it wants to leverage all these new user interfaces capabilities that come with ADF Faces and WebCenter.
    * How does the application fits in the overall IT landscape? What interfaces to other systems exist, what (old/obsolete?) technology is used to implement those interfaces?
    * What about batch functionality and reporting facilities?
    * May be part of the functionality of the current system can be replaced with standard off-the-shelf software?
    * How sound, well structured and future proof is the underlying datamodel?
    * To what extent are you looking at service-orientated architectures? Whats the SOA maturity level of your organisation?
    * Above questions help to answer the key question: how desirable and benficial is it to migrate an old monolitic forms application 1:1 to a monolitic ADF aplication? How does that fit in overall IT strategy?
    * Organisational isues: who will migrate the system, who will maintain the system? Is outsourcing considered? etc.
    Next Steps
    We offer a Forms2ADF assessment service in which we migrate a number of sample forms selected by the customer to assess the added value of the JFG, and we discuss all of the above questions
    For example, I did one Forms2ADF assessment where it turned out that JFG added litlle or no value, but we were still able to convince the customer of the combined power of ADF and JHeadstart in (re-)building ADF apps from scratch.
    You also might want to take a look at some presentations I did on this topic, and some online demo's:
    * Guidelines for moving from Oracle Forms to Oracle ADF and SOA: http://www.slideshare.net/stevendavelaar/forms2-adfsoa-ukoug
    * JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practice ADF application: http://www.slideshare.net/stevendavelaar/jhs11-forms2-adfukoug
    * 3 online demo's of forms2adf conversion process: http://www.oracle.com/technetwork/developer-tools/jheadstart/overview/index.html
    Hope this helps,
    Steven Davelaar,
    JHeadstart Team.
    Steven Davelaar,
    JHeadstart Team.

  • Automating a report generation process

    Hello guys!
    I just took on a new role in a company which requires me to deal with SAP BEx Analyzer.
    I'm completely new to this, but having gone through the report generation process, I feel the method I'm using is horribly tedious and I believe there should be a way to automate the process since it's a recurring monthly procedure.
    What I have to do currently to get the report is:
    1. Launch SAP Logon
    2. Filter the Connection which i want to find (i'll call it "PQI").
    3. Key in my Username, Password and Language
    4. Select the third container in the folder (i'll call it "03")
    5. After I open 03, it launches Excel with BEx Analyzer add in initialized. The report is currently empty
    6. Select Change Variable Values, fill in Fiscal Year, Month and Accounting Area.
    7. After which it will take like 15minutes to query, and a about 16,000 ++ rows are generated.
        Problem #1: The format isn't good, i have to right click on every cell that writes "Result" with yellow highlight and under it's properties I have to select         "Result Rows" > "Always Suppress".  (Ref1.PNG)
         This is horribly painful considering I have to wait about 1 minute for each response (it's very slow). I have to repeat this for every yellow column in the
         report. Can this be automated or done in 1 step?
    8. After doing so for all rows, I have to right click the table and select "Query Properties" and shift all the Free Characteristics (about 10) to "Rows".
         BUT, I can't do all at once, it will say "out of memory" and crash. I have to do so 2-3 rows at a time. Each time it'll take about 10-15 minutes to
         populate. It's very painful.
    9. After it's all done, i have to repeat step 7 again, which is to Suppress all result rows (Ref2.PNG)
    10.Followed by which I have to go to Query Properties > Display Options > Uncheck "supress repeated key values"
    11. When that is done I have to generate a PivotTable on the data.
    I have to repeat the same steps on a monthly basis.
    Is there a way I can script it to run the process for me monthly? Or any other way to make it less tedious?
    Thanks so much for any input or suggestion guys!
    Warmest Regards
    Brandon

    Suppressing Result Rows can be done in Query designer itself for one time. You need not to do after you get the report every time.
    If you always expect some 10 free chars constantly, i suggest you to insert them in Rows pane in Query designer but not in Analyzer. So that your report layout will be taking care with all settings what you want to do after the report generates in Excel. I mean you will get desired layout when you run the report first time itself.
    Suppress repeated key values also can be done in Query designer itself one time.
    By doing above, your report execution will not be tedious and it will be minimizing your efforts.
    Over all, What I have understood is, you are doing all sorts of settings in Analyzer after getting such huge volume of data, by which it gives you crash error.
    With all above steps, you can run your report with all pre-defined settings.

  • I have no idea whether there is a causal relationship but since moving to Lion and iCloud, my iMac has become so slow that I wind up having to crash and restart most of the time.  This is true regardless of the app I am using at the time.  The specs of th

    I have no idea whether there is a causal relationship but since moving to Lion and iCloud, my iMac has become so unresponsive that I wind up having to crash and restart most of the time.  This is true regardless of the app I am using at the time.
    The specs of this iMac are:
    iMac 27 inch, late 2009 model with a 3.0 GHz Intel Core 2 Duo with 4 Gig 1067 Mhz DDR3, using OSX Lion 10.7.4 (11E53)
    I have Mackeeper installed and according to the scans I have run, everything is fine. No virus, no junk files . . . no problems at all . . .
    Except that for all practical purposes, my computer isn't working. 
    I am nearly totally deaf and live in an isolated, rural area of NW Missouri and this computer is what I mainly rely on to contact friends, relatives and business associtates!
    Any and all suggestions will be greatly appreciated!

    First, back up all data immediately, as your boot drive may be failing.
    If you have more than ten or so files or folders on your Desktop, move them, temporarily at least, somewhere else in your home folder.
    If iCloud is enabled, disable it.
    Disconnect all wired peripherals except keyboard, mouse, and monitor, if applicable. Launch the usual set of applications you use when you notice the problem.
    Step 1
    Launch the Activity Monitor application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ If you’re running Mac OS X 10.7 or later, open LaunchPad. Click Utilities, then Activity Monitor in the page that opens.
    Select the CPU tab of the Activity Monitor window.
    Select All Processes from the menu in the toolbar, if not already selected.
    Click the heading of the % CPU column in the process table to sort the entries by CPU usage. You may have to click it twice to get the highest value at the top. What is it, and what is the process? Also post the values for % User, % System, and % Idle at the bottom of the window.
    Select the System Memory tab. What values are shown in the bottom part of the window for Page outs and Swap used?
    Step 2
    You must be logged in as an administrator to carry out this step.
    Launch the Console application in the same way as above. Make sure the title of the Console window is All Messages. If it isn't, select All Messages from the SYSTEM LOG QUERIES menu on the left.
    Post the 50 or so most recent messages in the log — the text, please, not a screenshot.
    Important: Some personal information, such as your name, may appear in the log. Edit it out before posting.

  • Error While Deploying the BPEL Process using obant script

    Hi All,
    I am getting the following error while deploying the BPEL Process using obant script. we are using the BPEL Version 10.1.2.0.2.Any information in this regard will be really helpful.
    Buildfile: build.xml
    main:
    [bpelc] file:/home5102/dibyap/saravana/Test/CreditRatingService.wsdl
    [bpelc] validating "/home5102/dibyap/saravana/Test/CreditRatingService.bpel" ...
    BUILD FAILED
    /home5102/dibyap/saravana/Test/build.xml:15: ORABPEL-01002
    Domain directory not found.
    The process cannot be deployed to domain "default" because the domain directory "/opt02/app/ESIT/oracle/esit10gR2iAS/BPEL10gR2/iAS/integration/orabpel/domains/default/deploy" cannot be found or cannot b
    e written to.
    Please check your -deploy option value; "default" must refer to a domain that has been installed locally on your machine.
    Total time: 23 seconds
    dibyap@ios5102_ESIBT:/home5102/dibyap/saravana/Test>
    Thanks,
    Saravana

    In 10.1.2.0.2 you need to create your own build.xml
    I have found an example, it may be of some help. This does call a property file
    cheers
    James
    <?xml version="1.0" ?>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Run cxant on this file to build, package and deploy the
    ASB_EFT BPEL process
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <project name="ASB_EFT" default="main" basedir=".">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Name of the domain the generated BPEL suitcase will be deployed to
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <property name="deploy" value="default" />
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    What version number should be used to tag the generated BPEL archive?
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <property name="rev" value="1.0" />
    <!-- BPEL Best Practices Properties -->
    <!-- Defaults Properties for TARGET environments
    # CHANGE THIS FILE TO REFLECT THE TARGET ENVIRONEMNT
    # either dev, test, or prod.properties
    -->
    <property file="ebusd.properties"/>
    <property name="env" value="${env.name}"/>
    <property name="current.project.name" value="${project.name}"/>
    <property name="target.project.name" value="${project.name}_${env}"/>
    <property name="deployment.profile" value ="${env}.properties"/>
    <property name="source.development.directory" location="${basedir}"/>
    <property name="target.env.directory" location="${basedir}/deploy/${project.name}_${env}"/>
    <property file="${deployment.profile}"/>
    <property name="build.fileencoding" value="UTF-8"/>
    <!-- Prints Environment
    -->
    <target name="print.env" description="Display environment settings">
    <echo message="Base Directory: ${basedir}"/>
    <echo message="Deployment Profile: ${deployment.profile}"/>
    <echo message="target.env.directory: ${target.env.directory}"/>
    <echo message="Deploy to Domain: ${deployToDomain}"/>
    <echo/>
    <echo message="os.name: ${os.name}"/>
    <echo message="os.version: ${os.version}"/>
    <echo message="os.arch: ${os.arch}"/>
    <echo/>
    <echo message="java.home: ${java.home}"/>
    <echo message="java.vm.name: ${java.vm.name}"/>
    <echo message="java.vm.vendor: ${java.vm.vendor}"/>
    <echo message="java.vm.version: ${java.vm.version}"/>
    <echo message="java.class.path: ${java.class.path}"/>
    <echo/>
    <echo message="env: ${env}"/>
    <echo message="current.project.name: ${current.project.name}"/>
    <echo message="target.project.name: ${target.project.name}"/>
    <echo message="server.name: ${server.name}"/>
    </target>
    <!--
    Copies the current directory structure along with
    all the file into the target.env.directory and
    change the name of the project
    -->
    <target name="create.environment">
    <copy todir="${target.env.directory}">
    <fileset dir="${basedir}"/>
    <filterset begintoken="@" endtoken="@">
    <filtersfile file="${deployment.profile}"/>
    </filterset>
    </copy>
    <move file="${target.env.directory}/${current.project.name}.jpr" tofile="${target.env.directory}/${target.project.name}.jpr"/>
    </target>
    <target name="main">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    the bpelc task compiles and package BPEL processes into versioned BPEL
    archives (bpel_...jar). See the "Programming BPEL" guide for more
    information on the options of this task.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <bpelc input="${basedir}/bpel.xml" rev="${rev}" deploy="${deploy}" />
    </target>
    </project>
    here is a property file
    project.name=ASB_EFT
    env.name=ebusd
    deployToDomain=default
    server.name=[server]
    server.port=7788
    ebusd\:7788=http://[server]:7788/
    IntegrationMailAccount=OracleBPELTest
    IntegrationMailAddress=[email]
    IntegrationMailPassword=[password]
    archivedir=[directory]
    inbounddir=/[directory]
    errordir=[directory]
    outbounddir=[directory]
    bpelpw=bpel
    dbhost1=[dbserver]
    dbhost2=[dbserver]
    dbport=1523
    dbservice=bpel
    dbconnstr=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=[server])(PORT=1523))(ADDRESS=(PROTOCOL=tcp)(HOST=[server])(PORT=1523)))(CONNECT_DATA=(SERVICE_NAME=ebusd)))

  • How to kill Forms Runaway Process using 95% CPU and running for 2 hours.

    We had a situation at E-Business Suite customer (using Oracle VM server) where some of Form processes were not being cleared by form timeout settings automatically.
    Also when user exits the form session from front end, the linux form process (PID) and DB session did not exit properly, so they got hung.
    They were spiking CPU and memory usage and causing e-business suite to perform slowely and ultimately causing VM host to reboot the production VM guest (running on Linux).
    We could see the form processes (PIDs) using almost 100% cpu with "top" command and running for a long time.
    Also we verified those Form Sessions did not exist in the application itself.
    ie. Using from Grid Control -> OAM-> Site Map -> Monitoring (tab) -> "Form Sessions".
    It means that we could safely kill that form process from Linux using "kill -9 <PID>" command.
    But that required a continuous monitoring and manual DBA intervention as customer is 24x7 customer.
    So, I wrote a shell script to do the following;
    •     Cron job runs every half an hour 7 days a week which calls this shell script.
    •     Shell script runs and tries to find "top two" f60webmx processes (form sessions) using over 95% cpu with 2 minutes interval.
    •     If no process is found or CPU% is less than 95%, it exits and does nothing.
    •     If top process is found, it searches for its DB session using apps login (with hidden apps password file - /home/applmgr/.pwd).
    a.     If DB session is NOT found (which means form process is hung), it kills the process from unix and emails results to <[email protected]>
    b.     If DB session is found, it waits for 2 hours so that form process times automatically via form session timeout setting.
    It also emails the SQL to check the DB session for that form process.
    c.     If DB session is found and it does not timeout after 2 hours,
    it kills the process from unix (which in turn kills the DB session). Output is emailed.
    This are the files required for this;
    1. Cron job which calls the shell script looks like this;
    # Kill form runaway process, using over 95% cpu having no DB session or DB session for > 2hrs
    00,30 * * * * /home/applmgr/forms_runaway.sh 2>&1
    2. SQL that this script calls is /home/applmgr/frm_runaway.sql and looks like;
    set head off
    set verify off
    set feedback off
    set pagesize 0
    define form_client_PID = &1
    select count(*) from v$session s , v$process p, FND_FORM_SESSIONS_V f where S.AUDSID=f.audsid and p.addr=s.paddr and s.process='&form_client_PID';
    3. Actual shell script is /home/applmgr/forms_runaway.sh and looks like;
    # Author : Amandeep Singh
    # Description : Kills runaway form processes using more than 95% cpu
    # and Form Session with no DB session or DB session > 2hrs
    # Dated : 11-April-2012
    #!/bin/bash
    . /home/applmgr/.bash_profile
    PWD=`cat ~/.pwd`
    export PWD
    echo "`date`">/tmp/runaway_forms.log
    echo "----------------------------------">>/tmp/runaway_forms.log
    VAR1=`top -b -u applmgr -n 1|grep f60webmx|grep -v sh|grep -v awk|grep -v top|sort -nrk9|head -2|sed 's/^[ \t]*//;s/[ \t]*$//'| awk '{ if ($9 > 95 && $12 = "f60webmx") print $1 " "$9 " "$11 " "$12; }'`
    PID1=`echo $VAR1|awk '{print $1}'`
    CPU1=`echo $VAR1|awk '{print $2}'`
    TIME1=`echo $VAR1|awk '{print $3}'`
    PROG1=`echo $VAR1|awk '{print $4}'`
    PID_1=`echo $VAR1|awk '{print $5}'`
    CPU_1=`echo $VAR1|awk '{print $6}'`
    TIME_1=`echo $VAR1|awk '{print $7}'`
    PROG_1=`echo $VAR1|awk '{print $8}'`
    echo "PID1="$PID1", CPU%="$CPU1", Running Time="$TIME1", Program="$PROG1>>/tmp/runaway_forms.log
    echo "PID_1="$PID_1", CPU%="$CPU_1", Running Time="$TIME_1", Program="$PROG_1>>/tmp/runaway_forms.log
    echo " ">>/tmp/runaway_forms.log
    sleep 120
    echo "`date`">>/tmp/runaway_forms.log
    echo "----------------------------------">>/tmp/runaway_forms.log
    VAR2=`top -b -u applmgr -n 1|grep f60webmx|grep -v sh|grep -v awk|grep -v top|sort -nrk9|head -2|sed 's/^[ \t]*//;s/[ \t]*$//'| awk '{ if ($9 > 95 && $12 = "f60webmx") print $1 " "$9 " "$11 " "$12; }'`
    PID2=`echo $VAR2|awk '{print $1}'`
    CPU2=`echo $VAR2|awk '{print $2}'`
    TIME2=`echo $VAR2|awk '{print $3}'`
    PROG2=`echo $VAR2|awk '{print $4}'`
    PID_2=`echo $VAR2|awk '{print $5}'`
    CPU_2=`echo $VAR2|awk '{print $6}'`
    TIME_2=`echo $VAR2|awk '{print $7}'`
    PROG_2=`echo $VAR2|awk '{print $8}'`
    HRS=`echo $TIME1|cut -d: -f1`
    exprHRS=`expr "$HRS"`
    echo "PID2="$PID2", CPU%="$CPU2", Running Time="$TIME2", Program="$PROG2>>/tmp/runaway_forms.log
    echo "PID_2="$PID_2", CPU%="$CPU_2", Running Time="$TIME_2", Program="$PROG_2>>/tmp/runaway_forms.log
    echo " ">>/tmp/runaway_forms.log
    # If PID1 or PID2 is NULL
    if [ -z ${PID1} ] || [ -z ${PID2} ]
    then
    echo "no top processes found. Either PID is NULL OR CPU% is less than 95%. Exiting...">>/tmp/runaway_forms.log
    elif
    # If PID1 is equal to PID2 or PID1=PID_2 or PID_1=PID2 or PID_1=PID_2
    [ ${PID1} -eq ${PID2} ] || [ ${PID1} -eq ${PID_2} ] || [ ${PID_1} -eq ${PID2} ] || [ ${PID_1} -eq ${PID_2} ];
    then
    DB_SESSION=`$ORACLE_HOME/bin/sqlplus -S apps/$PWD @/home/applmgr/frm_runaway.sql $PID1 << EOF
    EOF`
    echo " ">>/tmp/runaway_forms.log
    echo "DB_SESSION ="$DB_SESSION >>/tmp/runaway_forms.log
    # if no DB session found for PID
    if [ $DB_SESSION -eq 0 ] then
    echo " ">>/tmp/runaway_forms.log
    echo "Killed Following Runaway Forms Process:">>/tmp/runaway_forms.log
    echo "-------------------------------------------------------------------">>/tmp/runaway_forms.log
    echo "PID="$PID1", CPU%="$CPU1", Running Time="$TIME1", Program="$PROG1>>/tmp/runaway_forms.log
    kill -9 $PID1
    #Email the output
    mailx -s "Killed: `hostname -a` Runaway Form Processes" [email protected] </tmp/runaway_forms.log
    cat /tmp/runaway_forms.log
    else
    # If DB session exists for PID
    if [ ${exprHRS} -gt 120 ]; then
    echo $DB_SESSION "of Database sessions exist for this forms process-PID="$PID1". But its running for more than 2 hours. ">>/tmp/runaway_forms.log
    echo "Process running time is "$exprHRS" minutes.">>/tmp/runaway_forms.log
    echo "Killed Following Runaway Forms Process:">>/tmp/runaway_forms.log
    echo "-------------------------------------------------------------------">>/tmp/runaway_forms.log
    echo "PID="$PID1", CPU%="$CPU1", Running Time="$TIME1", Program="$PROG1>>/tmp/runaway_forms.log
    kill -9 $PID1
    #Email the output
    mailx -s "`hostname -a`: Runaway Form Processes" [email protected] </tmp/runaway_forms.log
    cat /tmp/runaway_forms.log
    else
    echo "Process running time is "$exprHRS" minutes.">>/tmp/runaway_forms.log
    echo $DB_SESSION "of Database sessions exist for PID="$PID1" and is less than 2 hours old. Not killing...">>/tmp/runaway_forms.log
    echo "For more details on this PID, run following SQL query;">>/tmp/runaway_forms.log
    echo "-----------------------------------------------------------------------">>/tmp/runaway_forms.log
    echo "set pages 9999 lines 150">>/tmp/runaway_forms.log
    echo "select f.user_form_name, f.user_name, p.spid DB_OS_ID , s.process client_os_id,, s.audsid, f.PROCESS_SPID Forms_SPID,">>/tmp/runaway_forms.log
    echo "to_char(s.logon_time,'DD-Mon-YY hh:mi:ss'), s.seconds_in_wait">>/tmp/runaway_forms.log
    echo "from v\$session s , v\$process p, FND_FORM_SESSIONS_V f">>/tmp/runaway_forms.log
    echo "where S.AUDSID=f.audsid and p.addr=s.paddr and s.process='"$PID1"' order by p.spid;">>/tmp/runaway_forms.log
    mailx -s "`hostname -a`: Runaway Form Processes" [email protected] </tmp/runaway_forms.log
    cat /tmp/runaway_forms.log
    fi
    fi
    else
    #if PID1 and PID2 are not equal or CPU% is less than 95%.
    echo "No unique CPU hogging form processes found. Exiting...">>/tmp/runaway_forms.log
    cat /tmp/runaway_forms.log
    fi
    If you have the same problem with some other unix and DB processes, the script can be easily modified and used.
    But use this with thorough testing first (by commenting out <kill -9 $PID1> lines.
    Good luck.
    Edited by: R12_AppsDBA on 19/04/2012 13:10

    Thanks for sharing the script!
    Hussein

  • How do I submit a form to a LC process using the process fields component in LC Designer

    I have a PDF Form with the Process Fields component attached.<br /><br />In the FSSubmit component, I have set the URL to <br />http://localhost:8080/soap/services/SAPS_Submission?wsdl, <br />where SAPS_Submission is the name of my process.<br /><br />I open the form through a Flex app, fill out the form and press submit, but get the following error:<br /><br />  <?xml version="1.0" encoding="utf-8" ?> <br />- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />- <soapenv:Body><br />- <soapenv:Fault><br />  <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> <br />  <faultstring>no SOAPAction header!</faultstring> <br />- <detail><br />  <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">dtross</ns2:hostname> <br />  </detail><br />  </soapenv:Fault><br />  </soapenv:Body><br />  </soapenv:Envelope><br /><br />The LC process has the schema for the form as an input variable, which is used in the execution of a insertSQLStatement.<br /><br />My knowledge of the process fields component is sketchy at best, but from what I understand, I can use it to submit to workbench without using a servlet?<br /><br />Any help with getting the data from the form to the process using this technique, or clarification about what I should actually be doing would be greatly appreciated...<br /><br />Thanks<br /><br />Ross Malan

    The process fields are ONLY needed if you're planning to use the form offline or through email. If you submit the data back to a servlet, you just need to put a submit button on the form.
    Jasmin

  • Process Using too much Processor

    Hi all !
    I have a real wierd request.
    I have a process which runs for about a hour converting files. The process only between 10 and 15MB of memory which is fine. The problem is that the process uses basically all the processing power available on the server. My administrator is worried that if another process is started whie mine is running it will not receive a share of the processor . Even though I have told him (and showed him) that the java app releases some of the processor when another program requests it.
    Is there anyway of specifying the percentage of processor a java app uses ? For example I would like to tell the app to only use 50% of the available processor !
    Robin

    How computationally intensive is the conversion? Are they small files that require sophisticated processing? Or are they large files that are processed in a simple way?
    I'm asking because it's very unusual for a process that does significant I/O to peg the CPU. The fact that it does may point to a bug in the code.

  • App server , process scheduler , web server and DB scripts

    Team,
    Good Morning.
    I am looking for the script which will help me in doing health check-up for app server , process scheduler , web server and DB.
    The script should trigger a email when any one of the domain is down and when it get up.
    Waiting heartly

    If you really only want scripts you should write them yourself. If you don't understand the script how can you be expected to support it, modify it, or add new features? You don't even indicate what OS your using? I could give you a copy of a powershell script but what good is that on a linux box?
    You need to identify what you really are interested in monitoring. Is it process health only? actual system integrity? Do you need to know if a process count goes under a certain threshold? Is the processes scheduler really working? Is queuing occurring somewhere? Is the web server at a critical number of open sessions? log monitoring for keywords? Do you need to actually simulate a web session which would prove the full system is working in one execution, although it won't indicate a failure will occur where some other monitoring might?
    This is why the others have recommended pre-built packages that already offer most of this. If you still want scripts, gather your requirements, think about what you really need, try some stuff on your own, and if you have a specific problem with a script or how to accomplish a particular system check, post a new question, and I'll do my best to help. I think you'll get a better response from everyone if you do that.

  • RAC node process using 25% physical memory

    We have a QA server is non-RAC, and production is two-node RAC. We have a migration app that does an INSERT from SELECT over 2 instances. All of the machines have been in successful day-to-day use for several months...our only troublespot seems to be the migration app.
    Today we started the app on the QA server and watched the oracle processes using top. They ran normally and finished without any problems.
    The same app started on either of the RAC nodes produced process memory errors and died.
    As the app ran, there was a process reading the data from the source instance and a process writing to the target instance. We confirmed this by querying the session data. It doesn't matter which of the nodes runs which target process...the result is the same.
    The reading process(session) on the source instance seems to run normally. The write process on the target instance, however, begins slowly accumulating memory in about 16M chunks and holds on to them.
    We saw this in the RES and in the MEM columns of top. The target process never released any memory, but slowly grabbed it until its
    RES was 4GB and the %MEM was about 30%. The app then died with process memory error. This is reproducible over several runs.
    ( Per Metalink Note 567506.1, the recommended value for Linux 64-bit is 4294967295 ..we have that set. )
    There are other oracle processes and instances running on both nodes which do not seem to be affected. The total number of processes on each machine is around 750..much lower than the nprocs ulimit of 63K.
    These process are both oracle sessions spawned by the app.
    I haven't seen any info on the web or Metalink that matches these symptoms, so I thought I'd try the experts.
    Why would the write session continuously use up physical memory, but only on RAC nodes?
    We are running RHEL5 on Dell Poweredge 2950 w 16K Physical mem. Version of 10g is R2.0.4.

    user12017889 wrote:
    The write process on the target instance, however, begins slowly accumulating memory in about 16M chunks and holds on to them.Exactly what process is this? An Oracle server process? Dedicated or shared server?
    We saw this in the RES and in the MEM columns of top. The target process never released any memory, but slowly grabbed it until its
    RES was 4GB and the %MEM was about 30%. How does the writer process work? Does it use PL/SQL? Does it use bulk processing? How does it call the reader process? Or does the reader process call it? Is this over a database link.
    The app then died with process memory error. This is reproducible over several runs.If this is an Oracle server process, then there should be an entry in the alert log of the instance that recorded the crash and includes the name of the trace file generated by the crash.

Maybe you are looking for