oracle pooling

oracle pooling

am 29.11.2008 21:20:56 von Themis Vassiliadis

------=_Part_9012_28555087.1227990056785
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi guys,

I'm newer on this list.

I'm looking for a extension to establish a connection pooling between server
and oracle database.

I have tried using OCI persistent connections, but I'm convinced that
control are very lake. My bigger challenger is to control max active
connections upper limit without compromise apache/PHP performance.

Regards,

Themis Vassiliadis

------=_Part_9012_28555087.1227990056785--

Re: oracle pooling

am 01.12.2008 03:14:16 von dmagick

Themis Vassiliadis wrote:
> Hi guys,
>
> I'm newer on this list.
>
> I'm looking for a extension to establish a connection pooling between server
> and oracle database.

You could try sqlrelay (it has a php extension). Otherwise, 11g has
connection pooling built in to oracle. For versions before that, there's
probably an extra oracle tool to do the job.

--
Postgresql & php tutorials
http://www.designmagick.com/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: oracle pooling

am 01.12.2008 15:01:18 von Themis Vassiliadis

------=_Part_8821_23876720.1228140078554
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

You are right but sqlrelay doesn't work on Windows plataform and the only
possible solution from oracle to connect PHP using pooling is DRCP, just on
11G, but as far as I know it hasn't been implemented integrated with PHP.

I made a draft PHP extension atablishing the pool between oracle and Apache
server. Have a lot of things to do yet ... but I believe in short time to
finish the first beta version.

Regards,

--
Themis Vassiliadis


On Mon, Dec 1, 2008 at 12:14 AM, Chris wrote:

> Themis Vassiliadis wrote:
>
>> Hi guys,
>>
>> I'm newer on this list.
>>
>> I'm looking for a extension to establish a connection pooling between
>> server
>> and oracle database.
>>
>
> You could try sqlrelay (it has a php extension). Otherwise, 11g has
> connection pooling built in to oracle. For versions before that, there's
> probably an extra oracle tool to do the job.
>
> --
> Postgresql & php tutorials
> http://www.designmagick.com/
>
>

------=_Part_8821_23876720.1228140078554--

Re: oracle pooling

am 01.12.2008 22:30:22 von dmagick

Themis Vassiliadis wrote:
> You are right but sqlrelay doesn't work on Windows plataform and the
> only possible solution from oracle to connect PHP using pooling is DRCP,
> just on 11G, but as far as I know it hasn't been implemented integrated
> with PHP.

All you have to do is change your TNS entry, nothing else.

http://www.oracle.com/technology/pub/articles/oracle-databas e-11g-top-features/11g-caching-pooling.html

Read the "Database Resident Connection Pooling" section.

--
Postgresql & php tutorials
http://www.designmagick.com/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: oracle pooling

am 02.12.2008 13:20:01 von Themis Vassiliadis

------=_Part_10267_2663244.1228220401874
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

That is greate. But for me it doesn't solve my problem because in may job we
are working with 10G. I'm really thinking to develop the extension to do
that.

One more time, thank you very much for your help.

Regards,

--
Themis Vassiliadis


On Mon, Dec 1, 2008 at 7:30 PM, Chris wrote:

> Themis Vassiliadis wrote:
>
>> You are right but sqlrelay doesn't work on Windows plataform and the only
>> possible solution from oracle to connect PHP using pooling is DRCP, just on
>> 11G, but as far as I know it hasn't been implemented integrated with PHP.
>>
>
> All you have to do is change your TNS entry, nothing else.
>
>
> http://www.oracle.com/technology/pub/articles/oracle-databas e-11g-top-features/11g-caching-pooling.html
>
> Read the "Database Resident Connection Pooling" section.
>
>
> --
> Postgresql & php tutorials
> http://www.designmagick.com/
>
>

------=_Part_10267_2663244.1228220401874--

Re: oracle pooling

am 02.12.2008 19:18:21 von Christopher Jones

Chris wrote:
> Themis Vassiliadis wrote:
>> You are right but sqlrelay doesn't work on Windows plataform and the
>> only possible solution from oracle to connect PHP using pooling is
>> DRCP, just on 11G, but as far as I know it hasn't been implemented
>> integrated with PHP.
>
> All you have to do is change your TNS entry, nothing else.
>
> http://www.oracle.com/technology/pub/articles/oracle-databas e-11g-top-features/11g-caching-pooling.html
>
>
> Read the "Database Resident Connection Pooling" section.
>

Oracle 11g DRCP support is available in PHP. See this whitepaper:
http://www.oracle.com/technology/tech/php/pdf/php-scalabilit y-ha-twp.pdf
Change the connection string slightly, and set one new php.ini parameter to
use it.

Chris

--
Email: christopher.jones@oracle.com Tel: +1 650 506 8630
Twitter: http://twitter.com/ghrd Free PHP Book: http://tinyurl.com/f8jad

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: oracle pooling

am 02.12.2008 20:19:21 von Themis Vassiliadis

------=_Part_109707_11381880.1228245561604
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Tue, Dec 2, 2008 at 4:18 PM, Christopher Jones <
christopher.jones@oracle.com> wrote:

>
>
> Chris wrote:
>
>> Themis Vassiliadis wrote:
>>
>>> You are right but sqlrelay doesn't work on Windows plataform and the only
>>> possible solution from oracle to connect PHP using pooling is DRCP, just on
>>> 11G, but as far as I know it hasn't been implemented integrated with PHP.
>>>
>>
>> All you have to do is change your TNS entry, nothing else.
>>
>>
>> http://www.oracle.com/technology/pub/articles/oracle-databas e-11g-top-features/11g-caching-pooling.html
>>
>> Read the "Database Resident Connection Pooling" section.
>>
>>
> Oracle 11g DRCP support is available in PHP. See this whitepaper:
> http://www.oracle.com/technology/tech/php/pdf/php-scalabilit y-ha-twp.pdf
> Change the connection string slightly, and set one new php.ini parameter to
> use it.
>
> Chris
>
> --
> Email: christopher.jones@oracle.com Tel: +1 650 506 8630
> Twitter: http://twitter.com/ghrd Free PHP Book:
> http://tinyurl.com/f8jad
>



I think that DRCP is a work around solution. Of course is much better than
traditional connections as we had before 11G.

But I think that is really possible to develop a new extension working like
Java component Apache DBCP. This is a traditional pooling mechanism, where
is defined in a xml file the pooling description and it is ensured that just
applications behind Tomcat will use the pool.

So if imbedded in an extension, the pool will start just when apache starts,
and will down when apache stops. And the whole pooling definition will be at
the client side.

Pooling is a solution created for web applications, the DRCP, if I'm not
wrong, should be used from web and client applications like SQL Plus. They
just need to select the TNSNAME key and use the pool.

--
Themis Vassiliadis

------=_Part_109707_11381880.1228245561604--

Re: oracle pooling

am 02.12.2008 21:16:41 von Christopher Jones

Themis Vassiliadis wrote:
>
> On Tue, Dec 2, 2008 at 4:18 PM, Christopher Jones
> > wrote:

> Oracle 11g DRCP support is available in PHP. See this whitepaper:
> http://www.oracle.com/technology/tech/php/pdf/php-scalabilit y-ha-twp.pdf
> Change the connection string slightly, and set one new php.ini
> parameter to
> use it.
>
> Chris


> I think that DRCP is a work around solution.

I disagree. It is a major technology feature that enables pooling for
a wide variety of client programs. It is extremely scalable. The
whitepaper shows results from a small, commodity computer handling
20,000 concurrent connections.

> Of course is much better than traditional connections as we had
> before 11G.
>
> But I think that is really possible to develop a new extension working
> like Java component Apache DBCP. This is a traditional pooling
> mechanism, where is defined in a xml file the pooling description and it
> is ensured that just applications behind Tomcat will use the pool.

The advantage of DRCP is precisely that it is server side: all your
mid-tier application servers share the one pool on the DB server. It
becomes easier to add web server machines, and their configuration is
simpler.

> So if imbedded in an extension, the pool will start just when apache
> starts, and will down when apache stops. And the whole pooling
> definition will be at the client side.

The main problem with mid-tier multi-threaded pooling solutions is
that PHP is mostly run single-threaded because some PHP extensions are
not thread safe.

> Pooling is a solution created for web applications, the DRCP, if I'm not
> wrong, should be used from web and client applications like SQL Plus.
> They just need to select the TNSNAME key and use the pool.

When the DRCP server pool is started, applications can choose to use
it, or they can continue to use "dedicated" connections if they want.

Chris

--
Email: christopher.jones@oracle.com Tel: +1 650 506 8630
Twitter: http://twitter.com/ghrd Free PHP Book: http://tinyurl.com/f8jad

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: oracle pooling

am 03.12.2008 14:33:43 von Themis Vassiliadis

------=_Part_402_15086375.1228311223887
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Tue, Dec 2, 2008 at 6:16 PM, Christopher Jones <
christopher.jones@oracle.com> wrote:

> Themis Vassiliadis wrote:
> >
> > On Tue, Dec 2, 2008 at 4:18 PM, Christopher Jones
> > >
> wrote:
>
> > Oracle 11g DRCP support is available in PHP. See this whitepaper:
> >
> http://www.oracle.com/technology/tech/php/pdf/php-scalabilit y-ha-twp.pdf
> > Change the connection string slightly, and set one new php.ini
> > parameter to
> > use it.
> >
> > Chris
>
>
> > I think that DRCP is a work around solution.
>
> I disagree. It is a major technology feature that enables pooling for
> a wide variety of client programs. It is extremely scalable. The
> whitepaper shows results from a small, commodity computer handling
> 20,000 concurrent connections.
>
> > Of course is much better than traditional connections as we had
> > before 11G.
> >
> > But I think that is really possible to develop a new extension working
> > like Java component Apache DBCP. This is a traditional pooling
> > mechanism, where is defined in a xml file the pooling description and it
> > is ensured that just applications behind Tomcat will use the pool.
>
> The advantage of DRCP is precisely that it is server side: all your
> mid-tier application servers share the one pool on the DB server. It
> becomes easier to add web server machines, and their configuration is
> simpler.
>
> > So if imbedded in an extension, the pool will start just when apache
> > starts, and will down when apache stops. And the whole pooling
> > definition will be at the client side.
>
> The main problem with mid-tier multi-threaded pooling solutions is
> that PHP is mostly run single-threaded because some PHP extensions are
> not thread safe.
>
> > Pooling is a solution created for web applications, the DRCP, if I'm not
> > wrong, should be used from web and client applications like SQL Plus.
> > They just need to select the TNSNAME key and use the pool.
>
> When the DRCP server pool is started, applications can choose to use
> it, or they can continue to use "dedicated" connections if they want.
>
>
> Chris
>
> --
> Email: christopher.jones@oracle.com Tel: +1 650 506 8630
> Twitter: http://twitter.com/ghrd Free PHP Book:
> http://tinyurl.com/f8jad
>


DRCP is really a big improvement. But for me it has a great holdback: the
pool controlled in the server side isn't defined for a specific schema, so
if we have an application server serving different connections demanding
different credentials certainly the performance will be worse. Another big
problem is that one application hosted in the web server can lock the pool
completely is the demand for this application improve.

In other hands if we work with traditional pooling, configured in the client
side, we should define one pool for each aplication with his own
credentials. The pool will never blocked by one system and for hosts with
several credentials the performance will be better. The performance and
availability will be insured.

Of corse both are good solutions, each one for your specific purpose.

--
Themis Vassiliadis

------=_Part_402_15086375.1228311223887--

Re: oracle pooling

am 03.12.2008 22:45:03 von dmagick

> DRCP is really a big improvement. But for me it has a great holdback:
> the pool controlled in the server side isn't defined for a specific
> schema, so if we have an application server serving different
> connections demanding different credentials certainly the performance
> will be worse. Another big problem is that one application hosted in the
> web server can lock the pool completely is the demand for this
> application improve.
>
> In other hands if we work with traditional pooling, configured in the
> client side, we should define one pool for each aplication with his own
> credentials. The pool will never blocked by one system and for hosts
> with several credentials the performance will be better. The performance
> and availability will be insured.
>
> Of corse both are good solutions, each one for your specific purpose.

You have to make a change to the php code (the tns definition) to use
pooling - it's not going to use pooling just because you enable it.

--
Postgresql & php tutorials
http://www.designmagick.com/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: oracle pooling

am 04.12.2008 00:19:27 von Christopher Jones

Themis Vassiliadis wrote:

> DRCP is really a big improvement. But for me it has a great holdback:
> the pool controlled in the server side isn't defined for a specific
> schema, so if we have an application server serving different
> connections demanding different credentials certainly the performance
> will be worse. Another big problem is that one application hosted in the
> web server can lock the pool completely is the demand for this
> application improve.

Pooled servers are internally sub-partitioned by user. See figure 3 in
http://www.oracle.com/technology/tech/php/pdf/php-scalabilit y-ha-twp.pdf
This allows maximum reuse of pooled users for similar connections.

DRCP is perfectly suited for systems with several credentials. I
agree that if each and every connection comes in as a separate user
then the benefits of DRCP will be reduced. But is conceivable in some
cases that you can still take advantage of the already running server
processes.

> In other hands if we work with traditional pooling, configured in the
> client side, we should define one pool for each aplication with his own
> credentials. The pool will never blocked by one system and for hosts
> with several credentials the performance will be better. The performance
> and availability will be insured.

The DRCP pool is efficient and doesn't require many servers to handle
load. Of course, this is application dependent.

The worst case is a temporary shortage of pooled servers. Requests
will block until a pooled server is free. But you can set the maximum
number of pooled servers as high as your system limitations allow.
This ensures the DB is still able to process requests without being
totally overloaded. When load does decrease, the pool will shrink.

> Of corse both are good solutions, each one for your specific
> purpose.

I agree that each application & architecture may perform better with
one or other solution.

If you get a chance to try DRCP, let me know your experience.

Chris

--
Email: christopher.jones@oracle.com Tel: +1 650 506 8630
Twitter: http://twitter.com/ghrd Free PHP Book: http://tinyurl.com/f8jad

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php