Over the years I've worked very closely with the Oracle Database Access Group and have a lot of respect for them. I'm happy to share that they are hiring C developers.
To apply, go to irecruitment.oracle.com and enter the code IRC2401606 or IRC2403582 (depending where you want to work) in the Keyword search box.
Here is an excerpt from the job posting:
The Database Access group at Oracle is responsible for providing functionally comprehensive, reliable, high performance, secure and highly available access to the Oracle Database from various client drivers, including proprietary, standards-based and open-source drivers. The group works on the high level drivers, the Oracle Call Interface (OCI) layer, the Oracle wire protocol (TTC) and highly scalable server side protocol handlers that together connect an application written in any language securely to the Oracle Database Server to provide full featured access to the Oracle Database.
Some of the listed requirements are:
Strong C programming experience.
I believe it when they also say "Work is non-routine and very complex, involving the application of advanced technical/business skills in area of specialization". Check out the postings for all the details. I look forward to working with you.
Addendum: IRC2401606 is also available.
I've released PHP OCI8 2.0.7 which has oci_bind_by_name() support for binding PL/SQL's BOOLEAN type to PHP's boolean. The feature is available when PHP OCI8 2.0.7 is linked-with and connects-to Oracle Database 12c. (The necessary Oracle C library support for binding BOOLEAN was introduced in 12c).
Following the existing PHP OCI8 convention, there are two new constants usable with oci_bind_by_name(): SQLT_BOL and OCI_B_BOL. They have identical values. The former mirrors the underlying Oracle library constant's name (yes, it only has one "O"). The latter follows the PHP OCI8 style of having OCI_B_-prefixed names for bind constants. Note the constants can't be used for array binding with oci_bind_array_by_name().
An example usng the new PHP OCI8 2.0.7 feature is:
<?php /* Precreate this PL/SQL function: create or replace function is_valid(p in number) return boolean as begin if (p < 10) then return true; else return false; end if; end; / */ $c = oci_connect('hr', 'welcome', 'localhost/pdborcl'); $sql = "begin :r := is_valid(40); end;"; $s = oci_parse($c, $sql); oci_bind_by_name($s, ':r', $r, -1, SQLT_BOL); // no need to give length oci_execute($s); var_dump($r); // Outputs: bool(false) ?>
Prior to OCI8 2.0.7 you had to write a wrapper PL/SQL block that mapped the PL/SQL true or false values to 1 or 0.
Code without using OCI8 2.0.7:
$sql = "begin if (is_valid(40) = true) then :r := 1; else :r := 0; end if; end;"; $s = oci_parse($c, $sql); oci_bind_by_name($s, ':r', $r, -1, SQLT_INT); oci_execute($s); echo "Result is " . ($r ? "true" : "false") . "\n"; // Outputs: Result is false
The new functionality removes one small pain point and makes your interaction with Oracle Database 12c PL/SQL cleaner and easier.
My colleague, Gavin Bowe, has released a new Oracle Linux 6 DTrace Tutorial. It is available in HTML, PDF and ePub from http://docs.oracle.com/cd/E37670_01/index.html.
Chapter 3 on "Tracing User-Space Applications" has some PHP examples.