3 Replies Latest reply on Feb 4, 2002 6:20 AM by 3004

    weblogic pool refresh anamoly?

    3004
       
        • 1. Re: weblogic pool refresh anamoly?
          3004
           
          • 2. Re: weblogic pool refresh anamoly?
            3004

            Dear Joe,

            we had serious problems at our last performance test, where WLS5.1SP10 caught
            the ORA-01012 not just once but every 1.7 seconds (over a period of 20 minutes):

            -----------------------------------------------------------
            ---------- LOGIN ERROR CODE: 1012
            Mi Sep 26 23:12:53 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()


            ---------- LOGIN ERROR CODE: 1012


            ---------- LOGIN ERROR CODE: 1012
            Mi Sep 26 23:12:55 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()


            ---------- LOGIN ERROR CODE: 1012


            ---------- LOGIN ERROR CODE: 1012
            Mi Sep 26 23:12:57 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()


            ---------- LOGIN ERROR CODE: 1012


            ---------- LOGIN ERROR CODE: 1012
            Mi Sep 26 23:12:59 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()
            ..
            ------------------------------------------------------
            This seems to be a kind of a loop, at least, WLS was not able to refresh that
            particular connection.

            Are these reconnect issues with jDriver/OCI solved? Does anybody know of jDriver/OCI-reconnect
            problems in connection with the sun-cluster-software?

            Regards
            Manfred





            Joseph Weinstein <joe@bea.com> wrote:
            Hi. This is a weakness with Oracle's OCI libraries. It often takes
            repeated attempts to reconnect before OCI realizes the DBMS cycled,
            and does a full re-connect. OCI was designed in the early '80s when
            client-server was the new thing, and no one imagined that a lowly
            client program would have any reason to exist and continue running
            when the DBMS is down, and reconnect later. We are seriously
            considering putting a repeat-connect refresh loop per connection
            just to get the pools over this issue.
            Joe

            fred wrote:
            I have a pool defined as follows

            weblogic.jdbc.connectionPool.myPool=\
            url=jdbc:weblogic:oracle,\
            driver=weblogic.jdbc.oci.Driver,\
            loginDelaySecs=0,\
            initialCapacity=3,\
            maxCapacity=10,\
            capacityIncrement=1,\
            allowShrinking=true,\
            shrinkPeriodMins=15,\
            refreshMinutes=5,\
            testTable=dual,\
            props=user=usr;password=pswd;server=GLDW

            To test the refresh mechanism, I kill all the connections and
            assume that after 3 minutes (refresh time) I would get a new set
            of connections. But that does not happen...

            I first get the following message indicating the that the
            connections are "bad"
            =======================================================
            Thu Mar 08 16:03:51 EST 2001:<I> <JDBC Pool myPool> weblogic.common.ResourceException:

            Could not create pool connection. The DBMS driver exception was:
            java.sql.SQLException: ORA-01012: not logged on - (user/********@GLDW)
            at weblogic.db.oci.OciConnection.getLDAException(OciConnection.java:143)
            at weblogic.jdbcbase.oci.Driver.connect(Driver.java:157)
            at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:146)
            at weblogic.jdbc.common.internal.ConnectionEnvFactory.refreshResource(ConnectionEnvFactory.java:175)
            at weblogic.common.internal.ResourceAllocator.resetThisOne(ResourceAllocator.java:902)
            at weblogic.common.internal.ResourceAllocator.trigger(ResourceAllocator.java:1447)
            at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:197)
            at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:191)
            at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:62)
            at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)

            Thu Mar 08 16:03:51 EST 2001:<I> <JDBC Pool myPool> further refreshing
            postponed.
            ===================================================
            Five minutes later at "Thu Mar 08 16:09:17 EST 2001" I get
            the same message. Another 5 minutes later at
            "Thu Mar 08 16:14:12" I get the same message.

            Then (5 minutes later) I get the following message and notice
            3 new connections made to the Oracle database.
            ========================================
            Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> A connection
            from pool nanusPool was tested with a select count(*) from dual
            and failed:

            Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
            Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> This connection
            will now be refreshed.
            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> A connection
            from pool nanusPool was tested with a select count(*) from dual
            and failed:

            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> This connection
            will now be refreshed.
            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> A connection
            from pool nanusPool was tested with a select count(*) from dual
            and failed:

            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
            Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> This connection
            will now be refreshed.
            Thu Mar 08 16:28:13 EST 2001:<I> <JDBC Pool devBill> A connection
            from pool devBill was tested with a select count(*) from DUAL and
            failed:

            Thu Mar 08 16:28:14 EST 2001:<I> <JDBC Pool devBill> java.sql.SQLException:
            ORA-03113: end-of-file on communication channel
            Thu Mar 08 16:28:14 EST 2001:<I> <JDBC Pool devBill> This connection
            will now be refreshed.
            ==========================================

            With a refresh time 5 minutes, it has actually take 15 minutes

            to get new connections - i.e one connection is checked after a

            5 minute interval and only after all the connections in the
            pool are checked in 15 minutes (3 connections * 5 minutes) do
            I get a new set of connections.

            I have verified that if I set the initial capacity to 5
            connections, it takes 25 mins to get a new set of connections.
            If I set it to 10 connections, it takes 50 minutes for WLS to
            get me a new set of connections.

            Is this how it is supposed to behave of is there something I
            am missing here?

            Any pointers appreciated.

            Thanks, fred
            --

            PS: Folks: BEA WebLogic is expanding rapidly, with both entry and advanced
            positions
            for people who want to work with Java, XML, SOAP and E-Commerce infrastructure
            products.
            We have jobs at Nashua NH, Liberty Corner NJ, San Francisco and San Jose
            CA.
            Send resumes to joe@bea.com
            • 3. Re: weblogic pool refresh anamoly?
              3004
              Hi. To repeat, this is an OCI/Oracle weakness, and is not something we can
              address. Our driver relies on OCI to connect. The two solutions are to either:

              1 - define the pool so that it makes all it's connections at startup, and/or
              2 - Use the Oracle thin driver.

              Joe

              Manfred Schauer wrote:
              Dear Joe,

              we had serious problems at our last performance test, where WLS5.1SP10 caught
              the ORA-01012 not just once but every 1.7 seconds (over a period of 20 minutes):

              -----------------------------------------------------------
              ---------- LOGIN ERROR CODE: 1012
              Mi Sep 26 23:12:53 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()

              ---------- LOGIN ERROR CODE: 1012

              ---------- LOGIN ERROR CODE: 1012
              Mi Sep 26 23:12:55 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()

              ---------- LOGIN ERROR CODE: 1012

              ---------- LOGIN ERROR CODE: 1012
              Mi Sep 26 23:12:57 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()

              ---------- LOGIN ERROR CODE: 1012

              ---------- LOGIN ERROR CODE: 1012
              Mi Sep 26 23:12:59 GMT+02:00 2001:<I> <JDBC Pool> Sleeping in createResource()
              ..
              ------------------------------------------------------
              This seems to be a kind of a loop, at least, WLS was not able to refresh that
              particular connection.

              Are these reconnect issues with jDriver/OCI solved? Does anybody know of jDriver/OCI-reconnect
              problems in connection with the sun-cluster-software?

              Regards
              Manfred

              Joseph Weinstein <joe@bea.com> wrote:
              Hi. This is a weakness with Oracle's OCI libraries. It often takes
              repeated attempts to reconnect before OCI realizes the DBMS cycled,
              and does a full re-connect. OCI was designed in the early '80s when
              client-server was the new thing, and no one imagined that a lowly
              client program would have any reason to exist and continue running
              when the DBMS is down, and reconnect later. We are seriously
              considering putting a repeat-connect refresh loop per connection
              just to get the pools over this issue.
              Joe

              fred wrote:
              I have a pool defined as follows

              weblogic.jdbc.connectionPool.myPool=\
              url=jdbc:weblogic:oracle,\
              driver=weblogic.jdbc.oci.Driver,\
              loginDelaySecs=0,\
              initialCapacity=3,\
              maxCapacity=10,\
              capacityIncrement=1,\
              allowShrinking=true,\
              shrinkPeriodMins=15,\
              refreshMinutes=5,\
              testTable=dual,\
              props=user=usr;password=pswd;server=GLDW

              To test the refresh mechanism, I kill all the connections and
              assume that after 3 minutes (refresh time) I would get a new set
              of connections. But that does not happen...

              I first get the following message indicating the that the
              connections are "bad"
              =======================================================
              Thu Mar 08 16:03:51 EST 2001:<I> <JDBC Pool myPool> weblogic.common.ResourceException:

              Could not create pool connection. The DBMS driver exception was:
              java.sql.SQLException: ORA-01012: not logged on - (user/********@GLDW)
              at weblogic.db.oci.OciConnection.getLDAException(OciConnection.java:143)
              at weblogic.jdbcbase.oci.Driver.connect(Driver.java:157)
              at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:146)
              at weblogic.jdbc.common.internal.ConnectionEnvFactory.refreshResource(ConnectionEnvFactory.java:175)
              at weblogic.common.internal.ResourceAllocator.resetThisOne(ResourceAllocator.java:902)
              at weblogic.common.internal.ResourceAllocator.trigger(ResourceAllocator.java:1447)
              at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:197)
              at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:191)
              at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:62)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)

              Thu Mar 08 16:03:51 EST 2001:<I> <JDBC Pool myPool> further refreshing
              postponed.
              ===================================================
              Five minutes later at "Thu Mar 08 16:09:17 EST 2001" I get
              the same message. Another 5 minutes later at
              "Thu Mar 08 16:14:12" I get the same message.

              Then (5 minutes later) I get the following message and notice
              3 new connections made to the Oracle database.
              ========================================
              Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> A connection
              from pool nanusPool was tested with a select count(*) from dual
              and failed:

              Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
              Thu Mar 08 16:19:12 EST 2001:<I> <JDBC Pool nanusPool> This connection
              will now be refreshed.
              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> A connection
              from pool nanusPool was tested with a select count(*) from dual
              and failed:

              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> This connection
              will now be refreshed.
              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> A connection
              from pool nanusPool was tested with a select count(*) from dual
              and failed:

              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> java.lang.NullPointerException
              Thu Mar 08 16:19:13 EST 2001:<I> <JDBC Pool nanusPool> This connection
              will now be refreshed.
              Thu Mar 08 16:28:13 EST 2001:<I> <JDBC Pool devBill> A connection
              from pool devBill was tested with a select count(*) from DUAL and
              failed:

              Thu Mar 08 16:28:14 EST 2001:<I> <JDBC Pool devBill> java.sql.SQLException:
              ORA-03113: end-of-file on communication channel
              Thu Mar 08 16:28:14 EST 2001:<I> <JDBC Pool devBill> This connection
              will now be refreshed.
              ==========================================

              With a refresh time 5 minutes, it has actually take 15 minutes

              to get new connections - i.e one connection is checked after a

              5 minute interval and only after all the connections in the
              pool are checked in 15 minutes (3 connections * 5 minutes) do
              I get a new set of connections.

              I have verified that if I set the initial capacity to 5
              connections, it takes 25 mins to get a new set of connections.
              If I set it to 10 connections, it takes 50 minutes for WLS to
              get me a new set of connections.

              Is this how it is supposed to behave of is there something I
              am missing here?

              Any pointers appreciated.

              Thanks, fred
              --

              PS: Folks: BEA WebLogic is expanding rapidly, with both entry and advanced
              positions
              for people who want to work with Java, XML, SOAP and E-Commerce infrastructure
              products.
              We have jobs at Nashua NH, Liberty Corner NJ, San Francisco and San Jose
              CA.
              Send resumes to joe@bea.com