<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Blogging about Software Development &#187; Application Servers</title>
	<atom:link href="http://www.bloggingaboutjava.org/category/oracle/application-servers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bloggingaboutjava.org</link>
	<description>Blogging about Software Development</description>
	<pubDate>Wed, 03 Dec 2008 15:09:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Running Oracle WebForms like &#8216;a Client-server application&#8217;</title>
		<link>http://www.bloggingaboutjava.org/2007/04/running-oracle-webforms-like-a-client-server-application/</link>
		<comments>http://www.bloggingaboutjava.org/2007/04/running-oracle-webforms-like-a-client-server-application/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 13:07:30 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[Application Servers]]></category>

		<category><![CDATA[Designer]]></category>

		<category><![CDATA[Developer]]></category>

		<category><![CDATA[Developer Suite]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutoracle.org/?p=229</guid>
		<description><![CDATA[At our Oracle Competence we run a succesfull Designer/Developer migration solution in which we upgrade Forms from version 3.0-9i to 10g. Every now and then one of our customers raises the question if it&#8217;s possible to run Oracle Webforms in client-server mode &#8220;like they used to do&#8221;.
The arguments against running webforms in a browser are [...]]]></description>
			<content:encoded><![CDATA[<p>At our Oracle Competence we run a succesfull Designer/Developer migration solution in which we upgrade Forms from version 3.0-9i to 10g. Every now and then one of our customers raises the question if it&#8217;s possible to run Oracle Webforms in client-server mode &#8220;like they used to do&#8221;.</p>
<p>The arguments against running webforms in a browser are for example:<br />
- you loose part of the window because the browser menu, button bar, tab-pages, google searchbar, etc. all need space.<br />
- using the back and refresh buttons on the browser closes the session (and data changes may be lost)</p>
<p>When your application runs in a separate browser window you still have this &#8216;empty&#8217; browser window which may not be closed.</p>
<p>It&#8217;s too easy to say the users will have to adapt; so we looked for a different approach and found the following solution (although not supported by Oracle): <a src="http://java.sun.com/products/javawebstart/">Java Web Start</a>.</p>
<p>With Java Web Start you can have<br />
- a desktop icon to launch the application<br />
- a separate application window<br />
- jar-caching similar to using Jinitiator or the Sun Java plugin</p>
<p>Here is an example of a JNPL file:<br />
<code><br />
&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;!-- JNLP File for testing Java Webstart --><br />
&lt;jnlp codebase="http://[name of Oracle Application Server]:7777/forms/java&#8221; href=&#8221;DemoJavaWebStart.jnlp&#8221;><br />
  &lt;information><br />
    &lt;title>Oracle Forms Java Webstart Demo&lt;/title><br />
    &lt;vendor>LogicaCMG&lt;/vendor><br />
    &lt;description>&lt;/description><br />
    &lt;description kind=&#8221;short&#8221;>&lt;/description><br />
    &lt;offline-allowed/><br />
   &lt;/information></p>
<p>  &lt;security><br />
     &lt;all-permissions /><br />
  &lt;/security></p>
<p>  &lt;resources><br />
     &lt;j2se version=&#8221;1.4+&#8221;/><br />
     &lt;jar href=&#8221;frmall.jar&#8221; main=&#8221;true&#8221;/><br />
     &lt;extension name=&#8221;Jaxb&#8221; href=&#8221;FormsJars.jnlp&#8221;/><br />
  &lt;/resources></p>
<p>  &lt;applet-desc documentBase=&#8221;http://[name of Oracle Application Server]:7777/forms/java&#8221;<br />
      name=&#8221;OFJWD&#8221;<br />
      main-class=&#8221;oracle.forms.engine.Main&#8221;<br />
      width=&#8221;1020&#8243;<br />
      height=&#8221;710&#8243;><br />
    &lt;param name=&#8221;lookAndFeel&#8221; value=&#8221;Oracle&#8221;/><br />
    &lt;param name=&#8221;colorScheme&#8221; value=&#8221;Blue&#8221;/><br />
    &lt;param name=&#8221;width&#8221; value=&#8221;750&#8243;/><br />
    &lt;param name=&#8221;height&#8221; value=&#8221;600&#8243;/><br />
    &lt;param name=&#8221;serverURL&#8221; value=&#8221;/forms/lservlet?ifcfs=http://[name of Oracle Application Server]:7777/forms/frmservlet&#8221; /><br />
    &lt;param name=&#8221;serverArgs&#8221; value=&#8221;escapeParams=true module=demo0000.fmx<br />
	sso_userid= sso_formsid= sso_subDN= sso_usrDN= debug=no host= port= buffer_records=no<br />
	debug_messages=no array=no obr=no query_only=no quiet=yes render=no<br />
	record= tracegroup= log= term=&#8221;/><br />
  &lt;/applet-desc><br />
&lt;/jnlp><br />
</code><br />
Note that the security settings have all permissions set: <code>&lt;security>&lt;all-permissions/>&lt;/security></code>. This is not without risk and requires all JAR files to be signed.</p>
<p>A second note is that jar-files added to the list with resources must be signed with the same certificate.<br />
As the Oracle Forms jar &#8220;frmall.jar&#8221; is signed, other jar-files can not be simply added. However,<br />
there is a workaround by calling a second jnlp-file from the resources tag. This jnlp-file contains<br />
the additional resources that are needed.<br />
<code><br />
&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;!-- JNLP File for testing Java Webstart --><br />
  &lt;jnlp codebase="http://[name of Oracle Application Server]:7777/forms/java&#8221; href=&#8221;FormsJars.jnlp&#8221;></p>
<p>  &lt;security><br />
     &lt;all-permissions /><br />
  &lt;/security></p>
<p>  &lt;component-desc /></p>
<p>  &lt;resources><br />
     &lt;j2se version=&#8221;1.4+&#8221;/><br />
     &lt;jar href=&#8221;webstart.jar&#8221;/><br />
     &lt;jar href=&#8221;formsDemo.jar&#8221; /><br />
     &lt;jar href=&#8221;webutil.jar&#8221;/><br />
  &lt;/resources><br />
&lt;/jnlp><br />
</code><br />
The two jnlp-files are stored on the Oracle Application Server in the /java-directory.</p>
<p>We use Java Web Start to run Forms using client integration with Oracle WebUtil without problems.</p>
<p>But Java Web Start has its disadvantages too. As you need at least a URL on the client (for the first jnlp-file), now you have to start deploying client installations once again&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2007/04/running-oracle-webforms-like-a-client-server-application/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UKOUG RAC SIG Update - 10gR2 RAC marches on.     27th February 2007</title>
		<link>http://www.bloggingaboutjava.org/2007/03/ukoug-rac-sig-update-10gr2-rac-marches-on-27th-february-2007/</link>
		<comments>http://www.bloggingaboutjava.org/2007/03/ukoug-rac-sig-update-10gr2-rac-marches-on-27th-february-2007/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 11:53:07 +0000</pubDate>
		<dc:creator>Stuart Bensley</dc:creator>
		
		<category><![CDATA[Application Servers]]></category>

		<category><![CDATA[Databases]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Oracle Applications]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutoracle.org/?p=228</guid>
		<description><![CDATA[(Baylis House Conference Centre, Slough, UK)
Now I&#8217;m part of the new UK Oracle Apps practice, I wanted to post a short update (or is this a ramble?) to you regarding the days sound bytes that I thought were note worthy.
Another very useful RAC SIG and networking day&#8230;.
 1. Julian Dyke, the chair, kicked off with [...]]]></description>
			<content:encoded><![CDATA[<p>(Baylis House Conference Centre, Slough, UK)</p>
<p>Now I&#8217;m part of the new UK Oracle Apps practice, I wanted to post a short update (or is this a ramble?) to you regarding the days sound bytes that I thought were note worthy.</p>
<p>Another very useful RAC SIG and networking day&#8230;.</p>
<p> 1. Julian Dyke, the chair, kicked off with the usual poll of attendees to find out  who was running  what version of what products, storage, OS&#8217;s etc etc : very  interesting to hear about the &#8216;Product-ographics&#8217; and the number of RAC nodes people get up to.  10gR2 RAC marches on&#8230;Notably there has been a decline in the number of 9iR2 RAC clusters replaced by 10gR2 clusters since June last year. Also quite a significant number of 11i installations running or about to be run  in a RAC configuration. If anyone wants an insight into the popularity patterns of storage, products, OS&#8217;s , features choices please give me a shout.</p>
<p>2. Good update from Joel Goodman (Oracle ) and Phil Davies (Oracle) with patch updates. A few things to be aware of:- Oracle premium support for 9iR2 ends July 07  (Metalink Note: 189908.1). We should actively be suggesting upgrade programmes now or customers will have to pay an additional Extended Support fee  (or perhaps accept that LCMG will no longer be able to guarantee SLA service levels on some contracts ?). Also be aware of the  Daylight Saving Time patch for US timezone systems.</p>
<p>3.  10g Optional OEM Packs - Joel Goodman also gave a useful insight into the confusing (but feature rich) area of OEM pack licensing vagaries. Basically the only way to ensure you don&#8217;t accidentally use unlicensed packs is through the powerful 10g OEM GUI (not via the CLI !).  The Service Level Management pack looks very interesting also. Also be aware the Oracle support may ask for AWR reports with out confirming you have a licensed Diagnostics Pack!  I suggest we consider that  all  10gR2 installations  include, as a minimum,  licensed OEM Database Control  with Diagnostics pack?</p>
<p>4. Very interesting presentation by Andrew Stewart ( BetFair Ltd ) as to how there single 9i instance copes with 4-5 million bets per day. 75% of activity all just before each betting event. Interestingly they have discovered that Oracle RAC interconnect cache fusion looks like a better bet than MQ Series and also AQ (3x faster)  for database messaging (Perhaps an unusual RAC usage concept but not that surprising?). A second look at RAC is on their agenda to reduce costs and remove SPoF. (Don&#8217;t think they have looked at Times Ten though?)</p>
<p> 5. Bernhard de Cock Buning (Freelancer From NL) gave a nice insight into Oracle Clusterware components. The thing you need even if you use 3rd party clusterware for your 10g RAC installation.  His emerging website is : http://www.rachelp.nl/</p>
<p>6. Troubleshooting Oracle E-Business Suite 11i on a 2 node Oracle 9iR2 stretched cluster : presented by me (Save the best till last!)</p>
<p>Key points here were:- use AutoConfig, shared APPL_TOP&#8217;s, be very careful to ensure Interconnect set-up OK and load balancing working at the TNS and Concurrent Manager levels, move to 10g2 RAC asap.  You also cant get away without a separate RAC test cluster. DB&#8217;s who treat  11i on RAC like any other system will lead to erratic and potentially tearful results.</p>
<p>(Pretty pleased with response to this as the  presentation was first ever repeat at the SIG and JulianDyke the chair (http://www.juliandyke.com)  said it was the best 11i on RAC presentation  he&#8217;d seen : I was pleased as he&#8217;s an Oak Table member.)</p>
<p>You can download most of  the UKOUG presentations from</p>
<p>http://www.ukoug.co.uk/lib/  (ukmember/conference)</p>
<p>I hope you found this update interesting or even useful. Watch out for the next RAC SIG on 15th May in London.</p>
<p>Regards<br />
Stuart Bensley</p>
<p>stuart.bensley@logicacmg.com<br />
UKOUG RAC SIG Deputy chair.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2007/03/ukoug-rac-sig-update-10gr2-rac-marches-on-27th-february-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Throttling and Triage, where do I make my difficult decisions?</title>
		<link>http://www.bloggingaboutjava.org/2006/05/throttling-and-triage-where-do-i-make-my-difficult-decisions/</link>
		<comments>http://www.bloggingaboutjava.org/2006/05/throttling-and-triage-where-do-i-make-my-difficult-decisions/#comments</comments>
		<pubDate>Wed, 17 May 2006 08:25:17 +0000</pubDate>
		<dc:creator>Piet de Visser</dc:creator>
		
		<category><![CDATA[Application Servers]]></category>

		<category><![CDATA[Databases]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Oracle Applications]]></category>

		<category><![CDATA[Oracle J2EE]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutoracle.org/?p=143</guid>
		<description><![CDATA[Every now and then the discussion about the &#34;processes&#34; parameter flares up.Setting this parameter too low results in ORA-00020 &#34;maximum number of processes 1024 exceeded&#34;, but too high a setting will strangle the database-server with processes.&#160;
My favorite application manager always wants me to increase the number of processes. For an app-server and for its end [...]]]></description>
			<content:encoded><![CDATA[<p><span>Every now and then the discussion about the &quot;processes&quot; parameter flares up.</span><span>Setting this parameter too low results in ORA-00020 &quot;maximum number of processes 1024 exceeded&quot;, but too high a setting will strangle the database-server with processes.</span><span>&nbsp;</span></p>
<p><span>My favorite application manager always wants me to increase the number of processes. For an app-server and for its end users it is bad publicity if ORA-00020 appears in a java-logfiles or even in front of a (web-based) customer (now who is to blame for that type of error handling ??). </span><span>Hence the knee-jerk reaction to increase the &quot;processes&quot; parameter in the spfile. </span><span>This demand is often accompanied by the assurance that the application will never (actively) use the high number of connections, but needs the high number to make very sure the error never will (re)appear.</span><span>&nbsp;</span></p>
<p><span>App-jockeys and managers generally refuse to take responsibility for setting or decreasing the upper-limit on the nr of connections in their JDBC connection pool. Some of the more exotic app-servers don&rsquo;t even respect their own settings, and happily explode the nr of connections to something in the 4-digit range per app-server-instance.</span></p>
<p><span>Luckily, these app-servers will generally melt down by themselves, and that saves us from a database-brownout with more disastrous consequences. </span><span>DCD or active killing then has to take care of the remaining connections, and preferably before the clusterware (automatically, unstoppable) or the operators (eager to stay within SLA) fire up the next application server who will also need to initiate his JDBC pool, hence needs the connections.</span><span>&nbsp;</span></p>
<p><span>However, if we are unlucky, the app-server doesn&rsquo;t melt down, and the database hits the max-processes, whereby other app-servers with genuine need increase connections will also suffer. Not Good.</span><span>And one reason why pools should be conservative in changing their number of connections.</span><span>&nbsp;</span><span>&nbsp;</span></p>
<p><span>For the DBA, it makes sense to set the parameter to a value whereby the database can still operate &quot;normally&quot;. Allowing too much processes, even inactive or near-dead ones, makes no sense and consumes unnecessary server-memory, sockets and cpu-cycles.</span><span>Database and Unix zealots should now pop in and say that the processes-parameter controls many more derived values (transactions, sessions, enqueue_resources) and therefore requires careful consideration than just the shouting of the deployment team. I will stop there by saying: too high a setting is simply not beneficial. Vision the number of CPU&rsquo;s in your system, and imagine the overhead of keeping a high number of processes alive, whether you use PGA and Workload parameters or not. (I can se a whole set of nerdy comments coming: Fine! As long as we agree on this: processes should be set lower, rather then higher, small is beautiful).</span><span>&nbsp;</span>&nbsp;</p>
<p><span>In a legacy Client-server environment, it often makes sense to use shared-server or its predecessor MTS (Multi Threaded Server). The shared-server construct is ideal to handle a large load of relatively quiet connections. As the &quot;clients&quot; in C/S are often unaware of each others workload and existence, it is the database that needs to take on the job of sharing (pooling, queuing) the connections. Note that MTS or Shared-Server is equal to pooling connections on the database-server. Do we want the database-server to be busy juggling connections? (IMHO: only if we have no choice, but in C/S, the Shared server can make sense).</span><span>&nbsp;</span></p>
<p><span>In a J2EE environment, it makes more sense to use dedicated connections. Each call to the database should be handled Fast and the connection should be made available for the next thread that needs it.</span><span>The database should ideally focus on doing its ACID task, and not be bothered with load- or connection-sharing. The Connection-pool can handle that. The JDBC pool mechanism is the component that should limit the number of connections and take care of the throttling. </span><span>A JDBC pool should ideally open its maximum (=optimal) number of connections and keep those open, as the creation of a new connection takes time (when in a hurry, you can&rsquo;t afford to wait for a new connection to be opened up).</span><span>&nbsp;</span><span>Provided the nr of processes (connections) is not allowed to go over a workable limit, there is no reason why each connection-pools should not be allowed to pre-create a fair number of connections. But the upper limit should be firmly set to a value where both the app- and the database server can still operate efficiently.</span><span>&nbsp;</span></p>
<p><span>Allowing too many connections under increasing load will result in degraded performance, and worse, in a meltdown of the instance. If that happens, everybody suffers, and not just the last-clicked-user.</span><span>&nbsp;</span></p>
<p><span>Two common causes for high numbers of connections are generally:</span><span><span>&nbsp;</span></span></p>
<blockquote><ol>
<li><span>Transactions take too long (performance or locking problems, improper use of XA), or</span></li>
<li><span>Connections not released back to the pool (sloppy coding or just plain bugs)</span></li>
</ol>
</blockquote>
<p><span>Therefore, it makes good sense to include connection-count and connection monitoring in the test-plans, and to monitor (count, plot) connections during live operations.</span><span>&nbsp;</span><span>My strategy is to always set processes to a conservative value. I use it protect my database against brownout and meltdown.</span><span>It is up to the Java (or other app-level components) to use the number of available connections to the best extend, and to provide an error-handling or throttle-mechanism to handle overload.</span><span>&nbsp;</span>&nbsp;</p>
<p><span>The approach in short:</span><span><span>&nbsp;</span></span></p>
<blockquote><ol>
<li><span>Determine how many connections the DB can server while maintaining reasonable response-times.</span><span><span>&nbsp;</span></span></li>
<li><span>Set that as max-processes.</span><span><span>&nbsp;</span></span></li>
<li><span>Tell your app-servers to stay within the limit (and use max-pool-size).</span><span><span>&nbsp;</span></span></li>
<li><span>Monitor the session-high-water limit (does it ever approach the max?)</span><span><span>&nbsp;</span></span></li>
<li><span>Do spot-counts of connections (and plot them over time)</span><span><span>&nbsp;</span></span></li>
<li><span>Audit-session to know where they come from (find the origin of high</span><span>&nbsp;numbers).</span><span>&nbsp;</span></li>
</ol>
</blockquote>
<p><span>Bottom line: a surge in traffic should not be allowed to cause melt-down of the database. High volumes should be throttled higher up in the stack (load balancers, web-servers, app-containers). </span></p>
<p><span>If the throttling mechanisms are absent, or are not working then I think the database has a legitimate need to keep processes to a reasonable value. </span><span>Potentially a difficult decision, but someone has to take it. </span><span>Triage can be painfull, but there is a good reason to do it. </span><span>The survival of the system can depend on it.</span><span>&nbsp;</span></p>
<p><span>Admittedly, this is a very db-centered<span>&nbsp; </span>approach. </span><span>Waiting for some debate from the app-guys now.</span><span>&nbsp;</span><span>&nbsp;</span><span>&nbsp;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2006/05/throttling-and-triage-where-do-i-make-my-difficult-decisions/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
