Wednesday Apr 24, 2013

Getting Connections with Active GridLink

As a follow-up to an earlier blog, someone asked "Can you please tell us more about gravitationShrinkFrequencySeconds and DRCP ?"   DRCP support isn’t shipping yet (wait until the next version of the Database and of WLS) so I can’t talk about it.

I think that people understand how connections are allocated in generic data sources and multi data sources (MDS).   Let me talk generally about how connections are allocated in Active GridLink (AGL). With the former (generic and MDS), connection allocation is pretty much dependent on WLS.  With AGL, it is also very dependent on the database configuration and runtime statistics.  The runtime information is provided to WLS via Oracle Notification Service (ONS) in the form of up and down events and Runtime Load Balancing events.

Connections are added to the pool initially based on the configured initial capacity. Connect time load balancing based on the listener(s) is used to spread the connections across the instances in the RAC cluster. For that to work correctly, you must either specify a Single Client Access Name (SCAN) address or use LOAD_BALANCE=ON for multiple non-SCAN addresses.  If you have multiple addresses and you forget to use LOAD_BALANCE=on, then all of the connections will end up on the first RAC instance – not what you want.  Connection load balancing is intended to give out connections based on load on the available RAC instances.  It’s not perfect.  If you have two instances and they are evenly loaded, there should be approximately 50% of the connections on each instance (but don’t enter a bug if they split up 49/51).  There a general problem with load balancing that the statistics can lag reality.  If you have big swings in demand on the two instances, then you can end up creating a connection on the more heavily loaded instance.

If you go to get a connection from the pool, runtime load balancing is used to pick the instance.  That’s again based on the load on the various instances and the information is updated by default every 30 seconds.  If a connection is available on the desired instance, then you have a hit on the pool and you get the available connection.

If you go to get a connection from the pool and one doesn’t exist on the desired instance, then you have a miss.  In this case, a connection is added to the pool on demand based on connection load balancing.  That is, if you go to reserve a connection and there isn’t one available in the pool, then a new one is created and it is done using connection load balancing as described above.  There’s an assumption here that the connect time and runtime load balancing match up.

If you are running within an XA transaction, then that takes priority in determining the connection that you get.  There are restrictions on XA support within a RAC cluster such that all processing for an XA transaction branch must take place on one instance in the cluster (the restrictions are complicated so the one-instance limitation is the only safe approach).  Additionally, performance is significantly better using a single instance so you want that to happen anyway.  The first time that you get a connection, it’s via the mechanisms described above (runtime load balancing or connection load balancing).  After that, any additional requests for connections within the same XA transaction will get a connection from the same instance.  If you can’t get a connection with “XA affinity,” the application will get an exception.

Similar to XA affinity, if you are running within a Web session, you will get affinity for multiple connections created by the same session.  Unlike XA affinity, “Session Affinity” is not mandatory.  If you can’t get a connection to the same instance, it will go to another instance (but there will be a performance penalty).

When you take down a RAC instance, it generates a “planned down event”.  Any unused connections for that instance are released immediately and connections in use are released when returned to the pool.  If a RAC instance fails, it generates an “unplanned down event.”  In that case, all connections for that instance are destroyed immediately.

When a RAC instance becomes available, either a new instance or an instance is restarted, it generates an “up event.”  When that occurs, connections are proactively created on the new instance.

The pool can get filled up with connections to the “wrong” instance (heavily loaded) if load changes over time.  To help that situation, we release unused connections based on runtime load balancing information.  When gravitation shrinking occurs, one unused connection is destroyed on a heavily loaded instance.  The default period for gravitation shrinking is 30 seconds but you can control it by setting the system property “weblogic.jdbc.gravitationShrinkFrequencySeconds” to an integer value.  We don’t actively create a connection at this point.  We wait until there is demand for a new connection and then the connection load balancing will kick in.

Finally, normal shrinking happens if not disabled.  When this occurs, half of the unused connections down to minimum capacity are destroyed.  The algorithm currently just takes the first set of connections on the list without regard to load balancing (it’s random with respect to instances).  The default period is 900 seconds and you can configure this using ShrinkFrequencySeconds.

There are possible improvements that could be made with respect to pool misses, and gravitational and normal shrinking.  And the database team is working on improving the load balancing done on their end. Still, it works pretty well with instances dynamically coming and going and the load changing over time.

Friday Apr 19, 2013

WebLogic Server on Oracle Database Appliance - sizing and storage

Since we have announced the availability of WebLogic on Oracle Database Appliance last month; we have got lots of interests and good questions. In this series of topics, we will cover some very popular discussions and questions. Today, let's look at some details on sizing and storage for WebLogic on ODA.

On Oracle Database Appliance, each VM hosts its own Oracle Enterprise Linux operating system in addition to any installed applications, such as WebLogic Server.

Table below shows the resources that are provided for each VM for WebLogic Server and Oracle Traffic Director:


OTD Administration Server


1 GB


OTD Server Instances


4 GB


WebLogic Administration Server


2 GB

512 MB

WebLogic Managed Server


6 GB

3 GB

On the storage side, table below gives all the details on the latest X3-2 version of Database Appliance:

 High Performance Drives
18 TB Raw
 SSD Drives
 800 GB
 Expansion Storage Shelf
 High Performance: 18TB Raw, SSD: 800 GB
 IO Bandwidth

For the user domains which WebLogic Server and Oracle Traffic Director deploy to, the local storage of 250GB per node is available.

Improved Developer Experience and Productivity: The Power of Maven and WebLogic Server

Are you using Maven to automate your builds? If so, Oracle WebLogic has some greatly improved, out-of-the box features that make Maven work even harder for you, improving your experience while increasing productivity.

Here are some of the features that enable you to use Maven with the Oracle stack to speed time to market, reduce costs and more effectively manage your application lifecycle:

  • Java EE 6 Full Profile Certified
    WebLogic Server is Java EE 6 full-profile certified so you can make use of the latest programming model to build your applications.
  • Standard Java IDE Support
    WebLogic Server supports various IDEs and offers advanced Maven integration.
  • Developer Zip Distribution
    In order to set up your development environment more quickly, WebLogic Server supports developer Zip distribution.
  • Support for many operating systems
    WebLogic Server supports many operating systems including Windows, MacOSX, and Linux.
  • Open Source
    WebLogic Server offers support for popular third-party frameworks.
  • Classloading
    Oracle’s Classloading Analysis Tool (CAT) is bundled with WebLogic Server to address classloading issues for your applications that use different Java classes i.e. Enterprise Beans, servlets and JavaServer Pages, utility classes and third-party packages. CAT simplifies filtering classloader configuration and helps you analyze classloading issues.
  • Free Developer License
    Oracle offers a free single developer desktop licensed version of WebLogic Server. Link to free download.

Learn More:
Watch the DevCast archive on demand: The Power of Maven: Smarter DevOps through Automation and Integration

You will learn about:

  • WebLogic Server for Developers
  • Apache Maven
  • Working with WebLogic Server from Maven
  • Advanced uses of Maven with WebLogic Server
  • Java IDEs and Maven

Stay Connected

Cloud Application Platform (CAP):

Migrating from Multi Data Source to Active GridLink

Multi data source (MDS) for RAC connectivity has been supported in WebLogic Server since 2005.  As the popularity of Oracle RAC has grown, so has the use of MDS.  Now with the introduction of Active GridLink (AGL) in early 2011, users of MDS want to migrate to AGL.  There is not an automated mechanism to do so but it’s not the difficult.

First, no changes should be required to your applications.  A standard application looks up the MDS in JNDI and uses it to get connections.  By giving the AGL the same JNDI name as the MDS, the process is exactly the same in the application to use a data source name from JNDI.

The only changes necessary should be to your configuration.   AGL is composed of information from the MDS and the member generic data sources, combined into a single AGL descriptor.  The only additional information that is needed is the configuration of Oracle Notification Service (ONS) on the RAC cluster.  In many cases, the ONS information will consist of the same host names as used in the MDS and the only additional information is the port number, and that can be simplified by the use of a SCAN address.

The MDS descriptor doesn’t have much information in it.  It has a list of the member generic datasources, which will help you figure out where to get the remaining information that you need.  It has a JNDI name, which must become the name of your new AGL to keep things transparent to the application.  If you want to run the MDS in parallel with the AGL, then you will need to give the AGL a new name but the application must also be changed to use a new JNDI name.  You don’t need to worry about the algorithm type.

Each of the member generic datasources will have its own URL.  As described in Appendix B Using Multi Data Sources with Oracle RAC , it will look like the following.

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host1-vip)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=dbservice)(INSTANCE_NAME=inst1)))

Each member should have its own host and port pair.  They will likely have the same service and often have the same port on different hosts.  The URL for the AGL is a combination of the host and port pairs.


It is preferable to use an Oracle Single Client Access Name (SCAN) address instead of multiple host or Virtual IP (VIP) addresses.  Then the URL would look something like this.


It’s a lot simpler and makes changes to the nodes in the cluster transparent.  This section isn’t intended to be a complete guide to writing Oracle URL’s – see the Oracle RAC Administration Guide.

Assuming that you will replace the MDS with the AGL, you will need to delete the MDS and the generic data sources from the configuration using the administration console and add a single AGL data source.  The process is described earlier in this chapter.  Give it the same JNDI name as your MDS had.  Select whether your generic data sources used an XA or non-XA driver. You can enter the complete URL as described above.  The user and password should be the same as what you had on one (hopefully all) of the MDS members.  When you get to the “Test GridLink Datasource Connection” page, click on the “Test All Listeners” button to see that you specified the new URL correctly.  The next page is where you need the new information for the ONS connections.  Specify one or more host:port pairs. For example, “host1-vip:6200” or “scanaddress:6200”.  If possible, use a single SCAN address and port.  Make sure that FAN enabled is checked.  On the next page, test the ONS connections.  Finally, you are ready to deploy the data source.

There are many data source parameters that you can’t configure on the creation flow.  You need to go back and edit the AGL data source configuration.  The parameters that you set should generally be based on the parameters that you were using in the MDS member data sources.  Hopefully they were all the same; if not, you need to decide what the right values are.

Monday Apr 15, 2013

Oracle is #1 in the Application Server Market Segment for 2012

Oracle takes the top spot for market share in the Application Server Market Segment for 2012 according to the March 2013 Gartner “Market Share: All Software Markets, Worldwide 2012” report.*

Supporting Resources

(*) Source: Gartner, Inc. “Market Share, All Software Markets, Worldwide, 2012," March 29, 2013, By Colleen Graham, Joanne Correia, David Coyle, Christine Arcaris, Fabrizio Biscotti, Matthew Cheung, Ruggero Contu, Federico de Silva Leon, Yanna Dharmasthira, Tom Eid, Chad Eschinger, Bianca Granetto, Hai Hong Swinehart, Hideaki Horiuchi, Koji Motoyoshi, Yurika Nagashima, Chris Pang, Asheesh Raina, Dan Sommer, Bhavish Sood, Michael Warrilow, Laurie Wurster and Jie Zhang”

Stay Connected

Cloud Application Foundation (CAF):

Thursday Apr 04, 2013

Virtualize and Run Your Forms Applications in the Cloud Webcast: Answers to Your Questions

The live webcast, Virtualize and Run Your Forms Applications in the Cloud, was a great success thanks to all of you who attended and participated.

And, for those of you who missed the live webcast, you can now view it On Demand. You’ll learn how you can modernize your Oracle Forms application by virtualizing them and running them on the cloud. Click here: On-demand webcast.

A number of good questions were asked during the live webcast. See the questions and Answers below.

Question: What new features will be included in the version 12 release of forms?

Answer: We are considering many new features but are not at liberty to provide any specifics at this time. What we can say is we plan to add more features in the next release than ever before.

Question: Can forms that are integrated with the OID component be upgraded with minimal changes required?

Answer: OAM/OID is currently supported in Forms version 11. Basically speaking, what you had in a previous version can be used with the current version. As long as you remain on a version which was deemed certfied then upgrading OID should be mostly straight forward.

Question: How is our current IAS licensing affected by Weblogic and Fusion Middleware. We currently use Forms, Reports and Discoverer on

Answer: Here’s a link to a document that will address your questions. Please click here.

Question: What will be the cost of moving the forms application into cloud environment?

Answer: It really depends on the type and configuration of your applications, the number of applications etc. Typically on WebLogic with Oracle Virtual Assembly Builder, it becomes very easy to turn applications into assemblies and then virtualize them, which is step 1 to take to a cloud environment.

Question: Is it difficult to upgrade to the current version of Forms?

Answer: Upgrading is fairly easy. Please see the Installation Guide for Oracle Forms and Reports.

Question: It'll be great if you could share this slide. Would you?

Answer: Click here for a PDF version of the slides. Virtualize and Run Your Forms Applications in the Cloud.

Please let us know if you have any additional questions or if you would like additional information about virtualizing and running your Forms applications in the cloud.

Was this information useful?
What WebLogic topics would you like to hear more about?

More Information

Oracle Forms Product Page on Oracle Technology Network (OTN)

Stay connected

Follow WebLogic on:
WebLogic Blog

Cloud Application Foundation (CAF) on:

Follow Coherence on:
Coherence Blog

Follow Tuxedo on:
Tuxedo Blog

Monday Apr 01, 2013

WebLogic Server on Oracle Database Appliance

Would you like to learn a solution that saves time and money by simplifying deployment, maintenance, and support of high availability Oracle Database and WebLogic Server?

We are announcing exciting news of the availability of “Oracle WebLogic Server on Oracle Database Appliance”!

Oracle WebLogic Server on Oracle Database Appliance 2.5 offers a complete solution for building and deploying enterprise Java EE applications in a fully integrated system of software, servers, storage, and networking that delivers highly available database and WebLogic services. Built with world’s most popular database, Oracle Database and the industry’s best application server, Oracle WebLogic Server, and with its One-Button deployment capability, it delivers the combined high availability and simplicity. It reduces IT cost with the unique capacity-on-demand software licensing model.

For fully redundant system, storage, Oracle Database Appliance Manager Information, please check out the Oracle Database Appliance data sheet.

Oracle WebLogic Server on Oracle Database Appliance provides:

  • Highly available WebLogic Server with two, four or eight node cluster options that provide the foundation for customers to build and deploy enterprise Java EE applications with support for new features in WebLogic 11g (10.3.6) and 12c (12.1.1).
  • Simple, reliable, affordable platform for deploying end-to-end solutions leveraging not only Oracle Database Real Application Clusters, but also WebLogic and the software load balancer for customers’ Java EE and Database investments.

Please check out the white paper, howto, FAQ, etc for more information.


The official blog for Oracle WebLogic Server fans and followers!

Stay Connected


« April 2013 »