Christopher Jones
New ActivePerl 5.10.0.1003 includes DBD::Oracle 1.21
Jan Dubois of ActiveState dropped me an email today about the DBD::Oracle 1.21 release. He says:
"We have released ActivePerl 5.10.0.1003 today, which included the latest DBD-Oracle module for 32-bit Windows and Linux builds."
"We have released ActivePerl 5.10.0.1003 today, which included the latest DBD-Oracle module for 32-bit Windows and Linux builds."
Will you be at the 2008 DC PHP Conference in June?
Don't forget the Washington DC "2008 DC PHP Conference & Expo" is coming up at the beginning of June. I'll be there. (Oracle is a sponsor). Will I see you?
New AJAX & PHP Book from Oracle Press
The prolific Michael McLauglin just sent me a copy of his other new book "Oracle Database AJAX & PHP Web Application Development", co-written with Lee Barney.
Last year I'd really wanted to extend our Oracle OpenWorld conference tutorial on PHP into this area. That didn't happen because the 2007 tutorial slots turned out to be very short. This year I'm pushing for a longer tutorial again, so the book is a welcome reminder about the topic.
I'm looking forward to reading it.
Last year I'd really wanted to extend our Oracle OpenWorld conference tutorial on PHP into this area. That didn't happen because the 2007 tutorial slots turned out to be very short. This year I'm pushing for a longer tutorial again, so the book is a welcome reminder about the topic.
I'm looking forward to reading it.
Oracle XE, Ubuntu Hardy
After upgrading to Ubuntu 8.04 and deciding to reinstall a bunch of software, I had to revisit a quirk in one Oracle XE shell script:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh: 114: [[: not found
I get the error when I source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh to set my environment variables.
The well known solution, for the OS variants where this is a problem, is to edit that file and change the tests to use single brackets.
BTW, the verdict on Ubuntu Hardy 8.04 is stay with 7.10 for the time being. I'm finding it quirky and not snappy.
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh: 114: [[: not found
I get the error when I source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh to set my environment variables.
The well known solution, for the OS variants where this is a problem, is to edit that file and change the tests to use single brackets.
if [ -n "$LC_ALL" ]; thenOther than that, XE is running fine for my needs so far. The XE install notes for Ubuntu are at: http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html
locale=$LC_ALL
elif [ -n "$LANG" ]; then
locale=$LANG
else
locale=
fi
BTW, the verdict on Ubuntu Hardy 8.04 is stay with 7.10 for the time being. I'm finding it quirky and not snappy.
Maggie's (almost) one liner to create a tag cloud in PHP
Maggie Nelson has a great post on creating tag clouds with Oracle: all it really needs is one simple query using an Oracle analytic function, NTILE. Check out Maggie's post for how she uses it. I submitted a comment that contains sample data to make her example easily runnable. (My comment is currently waiting for her to approve it.)
PHP|Tek Conference in Chicago is Approaching - Call to Oracle users
The PHP|Tek 2008 Conference in Chicago at the end of May is fast approaching and seats are filling up. I'll be there giving a talk on Web-Scale PHP Database Connection Management. I'd love to meet up with the Oracle PHP users from Chicago. PHP|Tek will give everyone a chance to connect, so come along and say 'hi' to me.
PHP Connection Pooling Whitepaper with Benchmark Available
A new Technical Whitepaper "PHP Scalability and High Availability" is out on OTN
The whitepaper talks about the changes in the PHP OCI8 1.3 extension, explains some of the concepts behind DRCP and FAN, and gives best practices and tuning tips.
It includes a new PHP benchmark which shows up to 20,000 connections being handled by Oracle on commodity hardware using only 2G RAM. One of my talks last year pointed out that scalability doesn't just mean huge: it's the potential to be huge. You can use DRCP (it's free with 11g) even on small machines and take advantage of the savings it offers.
I shouldn't forget the new FAN support, also covered in the whitepaper. FAN adds an error detection capability that allows PHP to take advantage of Oracle RAC clusters or standby databases to handle workload when one node is unreachable. (You can also use FAN with single instance DBs, if you want). Other code changes in PHP OCI8 1.3 allow it to handle unusable connections better. Adding FAN event detection on top of this allows PHP to recover from such situations fast and proactively.
You can get PHP OCI8 1.3.2 Beta from PECL and install it on PHP 4 or 5, or simply just install a PHP 5.3 development snapshot (which has the new extension by default). The extension compiles with Oracle 9iR2, 10g or 11g client libraries. Oracle's standard cross-version compatibility is applicable. DRCP functionality is only available using Oracle Database 11g. FAN is available from 10gR2 onwards. You can use the DRCP and FAN features separately, together, or even not at all.
The whitepaper talks about the changes in the PHP OCI8 1.3 extension, explains some of the concepts behind DRCP and FAN, and gives best practices and tuning tips.
It includes a new PHP benchmark which shows up to 20,000 connections being handled by Oracle on commodity hardware using only 2G RAM. One of my talks last year pointed out that scalability doesn't just mean huge: it's the potential to be huge. You can use DRCP (it's free with 11g) even on small machines and take advantage of the savings it offers.
I shouldn't forget the new FAN support, also covered in the whitepaper. FAN adds an error detection capability that allows PHP to take advantage of Oracle RAC clusters or standby databases to handle workload when one node is unreachable. (You can also use FAN with single instance DBs, if you want). Other code changes in PHP OCI8 1.3 allow it to handle unusable connections better. Adding FAN event detection on top of this allows PHP to recover from such situations fast and proactively.
You can get PHP OCI8 1.3.2 Beta from PECL and install it on PHP 4 or 5, or simply just install a PHP 5.3 development snapshot (which has the new extension by default). The extension compiles with Oracle 9iR2, 10g or 11g client libraries. Oracle's standard cross-version compatibility is applicable. DRCP functionality is only available using Oracle Database 11g. FAN is available from 10gR2 onwards. You can use the DRCP and FAN features separately, together, or even not at all.
Oracle Instant Client 10.2.0.4 for Mac OS X Intel x86 is Available
Hot off the press, Kuassi points out that Oracle Instant Client for Apple Mac OS X (Intel x86) is now available from the Instant Client page on OTN. It's the latest 10.2.0.4 patchset.
(Also the 10.2.0.4 release of Instant Client for Windows 32bit and Linux x86 have been uploaded).
(Also the 10.2.0.4 release of Instant Client for Windows 32bit and Linux x86 have been uploaded).
PL/SQL, Sixty Second Tech, Languages & Oracle VM
I wanted to point out a few blogs worth checking out.
Michael McLaughlin visited Oracle recently and dropped me off a copy of his new "Oracle Database 11g: PL/SQL Programming" book. Thanks! He was very excited to have it in print and showed me a lot of the cool things he'd put into it. The best thing: it includes primers on PHP and Java. We've recently convinced Michael to start blogging.
Cal Evans pinged me last week about his "Second second Tech" podcast, which is something I've been listening to. It's not targeted at tech folk, so spread the word amongst your non-tech family and friends.
John Russell has had a couple of interesting posts on deleting data. And over the weekend I see he's posted on functional programming.
Last but not least (and I see my boss has now beaten me in mentioning it), my colleague Alison Holloway is starting a series on Oracle VM.
Michael McLaughlin visited Oracle recently and dropped me off a copy of his new "Oracle Database 11g: PL/SQL Programming" book. Thanks! He was very excited to have it in print and showed me a lot of the cool things he'd put into it. The best thing: it includes primers on PHP and Java. We've recently convinced Michael to start blogging.
Cal Evans pinged me last week about his "Second second Tech" podcast, which is something I've been listening to. It's not targeted at tech folk, so spread the word amongst your non-tech family and friends.
John Russell has had a couple of interesting posts on deleting data. And over the weekend I see he's posted on functional programming.
Last but not least (and I see my boss has now beaten me in mentioning it), my colleague Alison Holloway is starting a series on Oracle VM.
PHP PECL OCI8 1.3.2 Beta Available
I've released PECL OCI8 1.3.2 Beta - the latest release of PHP's OCI8 extension with support for Connection Pooling and Fast Application Notification. The release is based on the current PHP 5.3 development branch.
The development team has been hard at work refactoring, tuning, stress testing, and benchmarking the code. The code has come a long way since our first release of 1.3 last year. I feel that 1.3.2 should be the last Beta.
One change since 1.3.1 that I should mention, is that oci_pconnect() persistent connections will now do a "session release" (an OCI8-implementation internal operation) if the end of scope is reached (for example at the end of a function) and there are no PHP variables referencing the connection resource. The implication is that a rollback will happen - silently. It brings persistent connection behavior in line with normal connections. This makes the API more predictable. It allows applications to change between non-persistent and persistent connections more easily. It makes the implementation of OCI8 cleaner, and allows greater resource efficiency.
We evaluated the impact with the co-operation of our Beta testers. The change doesn't affect PHP OCI8 scripts that do one or more of:
Code that doesn't do any of them, and instead relies on transactions in persistent connections being open beyond the end of scope, might already be subject to seemingly random or "delicate" behavior. PHP's internal use of ref-counting sometimes makes it hard to predict when resources actually get released. For the very few people affected by the OCI8 persistent connection change, the behavior will be clearer and more consistent, and there is an incentive to code in a more logical style.
But to ease any lingering upgrading issues, setting oci8.old_oci_close_semantics=1 will cause connection closes to be no-ops, just like the old days.
The development team has been hard at work refactoring, tuning, stress testing, and benchmarking the code. The code has come a long way since our first release of 1.3 last year. I feel that 1.3.2 should be the last Beta.
One change since 1.3.1 that I should mention, is that oci_pconnect() persistent connections will now do a "session release" (an OCI8-implementation internal operation) if the end of scope is reached (for example at the end of a function) and there are no PHP variables referencing the connection resource. The implication is that a rollback will happen - silently. It brings persistent connection behavior in line with normal connections. This makes the API more predictable. It allows applications to change between non-persistent and persistent connections more easily. It makes the implementation of OCI8 cleaner, and allows greater resource efficiency.
We evaluated the impact with the co-operation of our Beta testers. The change doesn't affect PHP OCI8 scripts that do one or more of:
- Pass a oci_pconnect() connection resource between functions
- Auto-commit
- Explicitly commit or roll back transactions
- Use oci_connect() or oci_new_connect()
Code that doesn't do any of them, and instead relies on transactions in persistent connections being open beyond the end of scope, might already be subject to seemingly random or "delicate" behavior. PHP's internal use of ref-counting sometimes makes it hard to predict when resources actually get released. For the very few people affected by the OCI8 persistent connection change, the behavior will be clearer and more consistent, and there is an incentive to code in a more logical style.
But to ease any lingering upgrading issues, setting oci8.old_oci_close_semantics=1 will cause connection closes to be no-ops, just like the old days.
Customer Interview on PHP & Oracle 11g Connection Pooling (DRCP) in Oracle Magazine
Oracle Magazine's May/June 2008 issue contains a "Developer Nation" article. In it, David Kelly interviews Levi Dixon from Community Connect about using PHP and Oracle.
This quote caught my eye:
"PHP and Oracle used to be considered a strange combination. Now having Oracle working on and contributing to the PHP OCI8 extension, I am assured that features that I want to leverage will be available to our application in future database releases because Oracle is actively working on the extension with foresight"
Another section mentions Oracle Database 11g DRCP connection pooling:
"There's a lot of thought that goes into making our site scale for large numbers of concurrent users, and Oracle's attention to this idea is resulting in new features that have immediate impact," says Dixon. One of those features is database resident connection pooling, introduced in Oracle Database 11g to address scalability requirements in environments requiring large numbers of connections with minimal database resource usage. "Connection pooling will be huge for us"
Read the article for more.
This quote caught my eye:
"PHP and Oracle used to be considered a strange combination. Now having Oracle working on and contributing to the PHP OCI8 extension, I am assured that features that I want to leverage will be available to our application in future database releases because Oracle is actively working on the extension with foresight"
Another section mentions Oracle Database 11g DRCP connection pooling:
"There's a lot of thought that goes into making our site scale for large numbers of concurrent users, and Oracle's attention to this idea is resulting in new features that have immediate impact," says Dixon. One of those features is database resident connection pooling, introduced in Oracle Database 11g to address scalability requirements in environments requiring large numbers of connections with minimal database resource usage. "Connection pooling will be huge for us"
Read the article for more.
New Perl DBD::Oracle 1.21 driver released
John Scoles of the Pythian group dropped me a line to say he'd released a new version of Perl's DBD::Oracle driver on Friday. He says:
Just to update you on DBD::Oracle I have introduced a large number on innovative features in the last few releases namely it now supports
1) Seamless Support for SELECT of Embedded objects (VARRY,TABLE,OBJECT) fields
2) Support for insert of XML documents into XMLType fields
3) Support scrollable cursors
4) Support for INOUT array Binding
5) Support for the 10.2 Data Interface for Persistent LOBs
You can find it at http://search.cpan.org/~pythian/DBD-Oracle-1.21/
Just to update you on DBD::Oracle I have introduced a large number on innovative features in the last few releases namely it now supports
1) Seamless Support for SELECT of Embedded objects (VARRY,TABLE,OBJECT) fields
2) Support for insert of XML documents into XMLType fields
3) Support scrollable cursors
4) Support for INOUT array Binding
5) Support for the 10.2 Data Interface for Persistent LOBs
You can find it at http://search.cpan.org/~pythian/DBD-Oracle-1.21/
PHP Meetup: Frameworks part II
Hi to everyone who was at last night's San Francisco PHP Meetup listening to a big session by Dustin on the Symfony Framework.
The capabilities of Symfony and all the other PHP frameworks are just fantastic.
After Dustin wrapped up, I grabbed the floor to mention the two PHP events I'd blogged about here.
Thanks to Oracle Technology Network (the place to go for technical information on Oracle) for the cute & cuddly ElePHPants that I gave away. The correct answer to the first question was "LIME" (the name for the Symfony's unit test framework). Most people got this, so the first hand up was rewarded. A+ to everyone for concentration. The second question, "What is the difference between ZF and SF?" stumped people for a few seconds, before the obvious joke answer won the prize.
Thanks also to CNET for hosting the Meetup, as they do every month.
The capabilities of Symfony and all the other PHP frameworks are just fantastic.
After Dustin wrapped up, I grabbed the floor to mention the two PHP events I'd blogged about here.
Thanks to Oracle Technology Network (the place to go for technical information on Oracle) for the cute & cuddly ElePHPants that I gave away. The correct answer to the first question was "LIME" (the name for the Symfony's unit test framework). Most people got this, so the first hand up was rewarded. A+ to everyone for concentration. The second question, "What is the difference between ZF and SF?" stumped people for a few seconds, before the obvious joke answer won the prize.
Thanks also to CNET for hosting the Meetup, as they do every month.
Upcoming PHP Initiatives
There are a couple of PHP initiatives I should share with the Oracle-centric readers of this blog.
The first initiative is one I really want you all to take part in. It is an effort to improve the quality of PHP - something you should be deeply committed to. If you or your organization has benefited from PHP in anyway, now is the time to pay some dues.
How? Well, a May 2008 TestFest is being organized for PHP. You can get involved as an individual, organization or user group. Check the TestFest web page for details. (If you are writing tests for OCI8, don't forget there is a section on testing the OCI8 extension in the free Underground PHP and Oracle Manual).
The second initiative is that PHP is submitting project proposals to Google's Summer of Code (also known as Google Winter of Code, depending which hemisphere you live in). This program brings students and mentors together to work on various open source projects. Students can earn a significant sum from completing their project. (The PHP groups itself waives its nominal stipend from Google). The deadline is approaching, so jump in with ideas or mentorship offers fast. The PHP Wiki GSOC page lists current proposals.
The first initiative is one I really want you all to take part in. It is an effort to improve the quality of PHP - something you should be deeply committed to. If you or your organization has benefited from PHP in anyway, now is the time to pay some dues.
How? Well, a May 2008 TestFest is being organized for PHP. You can get involved as an individual, organization or user group. Check the TestFest web page for details. (If you are writing tests for OCI8, don't forget there is a section on testing the OCI8 extension in the free Underground PHP and Oracle Manual).
The second initiative is that PHP is submitting project proposals to Google's Summer of Code (also known as Google Winter of Code, depending which hemisphere you live in). This program brings students and mentors together to work on various open source projects. Students can earn a significant sum from completing their project. (The PHP groups itself waives its nominal stipend from Google). The deadline is approaching, so jump in with ideas or mentorship offers fast. The PHP Wiki GSOC page lists current proposals.
Location Awareness With Oracle Spatial in PHP
<?php
// I often see questions about using Oracle's Spatial functionality in
// PHP. Oracle Spatial is a powerful library for adding location
// awareness to applications. This script uses the core subset of
// Spatial, called Oracle Locator, which is included in all Oracle
// Database editions.
//
// A great introduction to Oracle Locator is in the Database Express
// Edition "2 Day Plus Locator Developer Guide". Other Oracle XE guides
// are on the Oracle XE homepage.
//
// The first thing to determine is what functionality you need to do
// in PHP. Is there really a need to fetch the data to PHP? Or can
// you use pre-supplied (or your own) PL/SQL routines? It's often
// faster to keep the processing close to the data and return only the
// minimum amount of data to PHP. This lets Oracle do the data
// processing efficiently, and reduces network traffic between PHP and
// Oracle.
//
// Inserting values is simply a matter of executing the appropriate
// INSERT statement in PHP. This is left as an exercise for the reader!
//
// If you want to fetch values, here are some methods you can use.
//
// This example uses the tables created in the Oracle Database Express
// Edition "2 Day Plus Locator Developer Guide" sample scenario.
// Create these in SQL Developer or SQL*Plus before running this script.
$c = @oci_connect('hr', 'hrpwd', '//localhost/XE'); ;
if (!$c) {
$m = oci_error();
echo $m['message'], "n";
exit;
}
echo "Simple Column Typesn\n";
// Queries using basic types are no different to other PHP queries.
// The first query finds the three closest customers to the store
// with ID of 101. The query is only of NUMBER and VARCHAR2 columns,
// using an in-built Spatial function SOD_NN() to determine the
// relationship of the customers.
$sql = "SELECT /*+ ordered */
c.customer_id,
c.first_name,
c.last_name
FROM stores s, customers c
WHERE s.store_id = :sid
AND sdo_nn(c.cust_geo_location, s.store_geo_location, :nres) = 'TRUE'";
$sid = 101;
$nres = 'sdo_num_res=3';
$s = oci_parse($c, $sql);
oci_bind_by_name($s, ":sid", $sid);
oci_bind_by_name($s, ":nres", $nres);
oci_execute($s);
oci_fetch_all($s, $res); // or your favorite fetch function
var_dump($res);
// The output is:
//
// array(3) {
// ["CUSTOMER_ID"]=>
// array(3) {
// [0]=>
// string(4) "1001"
// [1]=>
// string(4) "1003"
// [2]=>
// string(4) "1004"
// }
// ["FIRST_NAME"]=>
// array(3) {
// [0]=>
// string(9) "Alexandra"
// [1]=>
// string(6) "Marian"
// [2]=>
// string(6) "Thomas"
// }
// ["LAST_NAME"]=>
// array(3) {
// [0]=>
// string(7) "Nichols"
// [1]=>
// string(5) "Chang"
// [2]=>
// string(8) "Williams"
// }
// }
echo "nSDO_UTIL.GETVERTICESn\n";
// If you want to return data to PHP, there are some inbuilt functions
// like SDO_UTIL.GETVERTICES, which return the coordinates from a
// geometry.
$sql = "select t.x, t.y
from customers,
table(sdo_util.getvertices(customers.cust_geo_location)) t
where customer_id = :cid";
$cid = 1001;
$s = oci_parse($c, $sql);
oci_bind_by_name($s, ":cid", $cid);
oci_execute($s);
oci_fetch_all($s, $res); // or your favorite fetch function
var_dump($res);
// The output is:
//
// array(2) {
// ["X"]=>
// array(1) {
// [0]=>
// string(9) "-71.48923"
// }
// ["Y"]=>
// array(1) {
// [0]=>
// string(8) "42.72347"
// }
// }
echo "nCustom functionn\n";
// Since PHP can't fetch complex Oracle types as PHP objects or
// arrays, sometimes you may want to create a PL/SQL function to
// de-compose the data into simple types. This example uses the
// COLA_MARKETS table from example 1-8. Create this table and
// insert the sample data using SQL Developer or SQL*Plus. Then
// continue with this PHP script.
//
// The example row has a polygon of (x,y) ordinates in the
// SDO_ORDINATE_ARRAY array:
//
// INSERT INTO cola_markets VALUES(
// 301,
// 'polygon',
// SDO_GEOMETRY(
// 2003, -- two-dimensional polygon
// NULL,
// NULL,
// SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)
// SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
// )
// );
//
// By looking at the SDO_GEOMETRY object structure you can query just
// the ordinate collection and create a decomposition function. Use
// an alias (also known as a "correlation name") for the table in the
// query. Thanks to Bryn LLewellyn for pointing this trick out.
$s = oci_parse($c,
"create or replace procedure myproc(
p_id in number, p_o out sdo_ordinate_array) as
begin
select v.shape.sdo_ordinates
into p_o
from cola_markets v
where mkt_id = p_id;
end;");
oci_execute($s);
// Now PHP can fetch the geometry data as a collection
$s = oci_parse($c, "begin myproc(:id, :ords); end;");
$id = 301;
oci_bind_by_name($s, ":id", $id);
$ords = oci_new_collection($c, "SDO_ORDINATE_ARRAY");
oci_bind_by_name($s, ":ords", $ords, -1, OCI_B_NTY);
oci_execute($s);
for ($i = 0; $i < $ords->size(); $i++) {
$v = $ords->getElem($i);
echo "Value: $vn";
}
// The output is the list of coordinates matching the inserted data:
//
// Value: 5
// Value: 1
// Value: 8
// Value: 1
// Value: 8
// Value: 6
// Value: 5
// Value: 7
// Value: 5
// Value: 1
?>
PHP Quebec Talks are Available
Our PHP Quebec Talks are on http://db360.blogspot.com/2008/03/my-presentations-at-php-quebec-2008.html
Thanks for the ElePHPants given away at PHP Quebec go to Oracle Technology Network - our fantastic team bringing you all the OTN content and leaders themselves in the use of new technology.
Thanks for the ElePHPants given away at PHP Quebec go to Oracle Technology Network - our fantastic team bringing you all the OTN content and leaders themselves in the use of new technology.
San Francisco PHP Meetup is tonight - free ElePHPants
The San Francisco PHP Meetup is tonight. I'll be there - with some elePHPants to give away. The scheduled talk is on Zend Framework, but I'm sure there'll be plenty of other PHP stuff being discussed.
I saw a tweet from Cal Evans that Zend Framework got a Jolt award last night - congratulations.
I saw a tweet from Cal Evans that Zend Framework got a Jolt award last night - congratulations.
Go to the PHP Quebec Conference 2008 and get an ElePHPant
The PHP Quebec conference starts on March 12th. All attendees will get an elePHPant courtesy of OTNs sponsorship. No need to say more.
New PHP PECL OCI8 1.3.1 Beta available
I've created a PECL OCI8 1.3.1 Beta bundle of the code with Connection Pooling support that I mentioned in http://blogs.oracle.com/opal/2008/01/31. You can get it from http://pecl.php.net/package/oci8. The README contains the details.
The new PECL bundle will build with PHP 5.2.x (or PHP 5.3 - but the PHP 5.3 snaps already include the code, so there is no need to use PECL for this version).
This release is still marked Beta - please test it.
The bundle also includes all the latest non-DRCP related bug fixes, e.g some Temporary LOB and cursor leak fixes, so you might want to get it just for these.
One change to look out for is a fix for persistent connection pinging (PECL Bug #12431 ). This reverts a previous patch of two years ago since we don't think there is a problem with OCIPing in Oracle, and OCIPIng is needed to get the correct behavior with dead connections. The original report was never fully investigated and a lot has been improved in the code since then. Anyway, if you have an "old" version of Oracle and see any problem with pinging in the OCI8 1.3.1 Beta extension, let me know. There are no immediate plans to merge this fix to PHP 5.2.
The new PECL bundle will build with PHP 5.2.x (or PHP 5.3 - but the PHP 5.3 snaps already include the code, so there is no need to use PECL for this version).
This release is still marked Beta - please test it.
The bundle also includes all the latest non-DRCP related bug fixes, e.g some Temporary LOB and cursor leak fixes, so you might want to get it just for these.
One change to look out for is a fix for persistent connection pinging (PECL Bug #12431 ). This reverts a previous patch of two years ago since we don't think there is a problem with OCIPing in Oracle, and OCIPIng is needed to get the correct behavior with dead connections. The original report was never fully investigated and a lot has been improved in the code since then. Anyway, if you have an "old" version of Oracle and see any problem with pinging in the OCI8 1.3.1 Beta extension, let me know. There are no immediate plans to merge this fix to PHP 5.2.



