Java/JDBC slow compared to Perl/DBD-Oracle

Hopefully the subject is inflammatory enough to get some responses :-)
I'm thinking about converting a database-intensive Perl application to Java, but it's fairly database intensive. Things look pretty straightforward, but Oracle's OCI JDBC driver seems to run at about 2/3 the speed of Perl with the DBD-Oracle driver.
For comparison, here's the Java version:
=== SelectTest.java
import java.sql.*;
import oracle.jdbc.driver.*;
public class SelectTest {
public static void main(String args[]) throws Exception {
int count = Integer.parseInt(args[0]);
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:oci8:@orcl.world",
"scott", "tiger");
String statement = "select * from dual";
OraclePreparedStatement stmt =
(OraclePreparedStatement) conn.prepareStatement(statement);
stmt.defineColumnType(1, Types.VARCHAR);
stmt.setRowPrefetch(1);
for (int i = 0; i < count; i++) {
ResultSet rset = stmt.executeQuery();
rset.next();
String s = rset.getString(1);
rset.close();
stmt.close();
=== End of SelectTest.java
and here's the Perl version:
=== select_test.pl
#!/usr/bin/perl -w
use strict;
use DBI;
my $dbh = DBI->connect('dbi:Oracle:dev.cag', 'cag', 'gac');
my $sth = $dbh->prepare('select * from dual');
for (1 .. $ARGV[0]) {
$sth->execute;
my @data = $sth->fetchrow;
$sth->finish;
=== End of select_test.pl
On my Linux box at home, 'time java SelectTest 1' gives me:
1.120u 0.140s 0:01.35 93.3% 0+0k 0+0io 4334pf+0w
and 'time java SelectTest 1000' gives me:
2.290u 0.370s 0:03.87 68.7% 0+0k 0+0io 4334pf+0w
So the OCI driver can execute about 400 execute/next's per second.
In comparison, 'time select_test.pl 1' gives:
0.550u 0.070s 0:00.74 83.7% 0+0k 0+0io 1638pf+0w
and 'time select_test.pl 1000' gives:
1.210u 0.220s 0:02.41 59.3% 0+0k 0+0io 1638pf+0w
So the Perl/DBD-Oracle runs at about 600 execute/fetch's per second.
The results are similar on our Sun 3500.
I'm at a loss to explain this. I'm explicitly setting the prefetch, using the Oracle defineColumnType extension, and preparing the statement outside the loop. Amazingly, the Perl program beats it with practically no optimization.
This is actually a best-case scenario for the JDBC driver. In the worst-case scenario, the same program running against a table with 50 columns runs about 6 times faster with Perl/DBD than with Java/JDBC. (Large records seem to be a particularly bad case for the JDBC driver).
These tests are actually highly important for our application, which frequently issues single-row selects.
I'm desperate to increase the JDBC performance. Every other test I've run shows Java running several times faster than Perl. Once I can get this ironed out, we should be all set.
For the record, the tests were run using JDK1.2 against classes111.zip. The results were similar using classes12.zip.
Does anyone have any suggestions? I'm hoping there's something obvious I'm missing that will speed up my code to acceptable levels.

ddankwerth,
Actually, we're using persistent connections with mod_perl, so I'm not anticipating a big speed boost there.
Do you have a code example where the thin driver outperforms the OCI driver? In my tests, it's at least 30% slower.
One thing I noticed after posting my question was that the total idle time for the JDBC code was about 50% higher than for the Perl code. This makes me think that the JDBC driver is making more calls to the DBMS than necessary.
Is Oracle actively tuning the JDBC drivers? I get the impression from the classes12 README that the development is focusing more on keeping up with the JDBC standard than with performance.
Does anyone know if there any plans to improve performance?

Similar Messages

  • Yasql and perl-DBD-Oracle for RH7

    Hi
    I have installed yasql-1.61-1.noarch.rpm on RH7 but am having problems locating an appropriate perl-DBD-Oracle compatable with perl 5.6.0 for RH7.
    Any pointers (or alternatives) on getting this running for RH7 and perl 5.6.0 would be much appreciated.

    If you installed the base rdbms and PRO*C and Networking,
    BDB-Oracle-0.5[56789] should build out of the box.
    Follow the instructions in the READMEs and you should be fine.
    There is a mailing list (referenced in the DBD-Oracle docs)
    where you should be able to get help.
    For your TNS problem. Check to make sure
    that your listenr.ora and tnsnames.ora files are correct.
    Also, you might check that your listener is running.
    It looks like an install on a system not connected to
    a network does not do that - this will cause all kinds of
    TNS problems
    Garth
    Joao Pedro Gonalves (guest) wrote:
    : Hi, i've been trying to install Oraperl with no success,
    : firstly, i found out that there were missing header files
    : (oratypes.h... ) and got them out of an NT 7.x CD.
    : DBD::Oracle compiles finely but when i try to use it i get the
    : following error:
    : install_driver(Oracle) failed: Can't load
    : '/usr/lib/perl5/site_perl/i586-linux/auto/DBD/Oracle/Oracle.so'
    : for module DBD::Oracle: File not found at
    : /usr/lib/perl5/i586-linux/5.00404/DynaLoader.pm line 166.
    : Oracle.so was not created in any way by the DBD::Oracle so i
    : don't know what could be wrong.
    : I have set all the vars correctly (ORACLE_HOME, ORACLE_SID,
    etc)
    : BTW,
    : how do i get oracle to resolve names and why do i get this
    : message while trying to connect through the listener:
    : ORA-12505: TNS:listener could not resolve SID given in connect
    : descriptor
    : sqlplus seems to be sending "SID=*" , how do i change this out?
    : Thanks in advance,
    : joao
    null

  • Problems to compile Perl DBD::Oracle with InstantClient 11.1.0.7

    machine:~/.cpan/build/DBD-Oracle-1.22-WXjXWy# perl Makefile.PL
    Using DBI 1.607 (for perl 5.010000 on x86_64-linux-gnu-thread-multi) installed in /usr/local/lib/perl/5.10.0/auto/DBI/
    Configuring DBD::Oracle for perl 5.010000 on linux (x86_64-linux-gnu-thread-multi)
    Remember to actually READ the README file! Especially if you have any problems.
    Installing on a linux, Ver#2.6
    Using Oracle in /usr/lib/oracle/11.1/client64
    DEFINE SQLPLUSRELEASE = "1101000700" (CHAR)
    Oracle version 11.1.0.7 (11.1)
    Found /usr/share/oracle/11.1/client64/demo.mk
    Found /usr/share/oracle/11.1/client64/demo.mk
    Using /usr/share/oracle/11.1/client64/demo.mk
    Your LD_LIBRARY_PATH env var is set to '/usr/lib/oracle/11.1/client64/lib'
    Reading /usr/share/oracle/11.1/client64/demo.mk
    WARNING: Oracle /usr/share/oracle/11.1/client64/demo.mk doesn't define a 'build' rule.
    WARNING: I will now try to guess how to build and link DBD::Oracle for you.
    This kind of guess work is very error prone and Oracle-version sensitive.
    It is possible that it won't be supported in future versions of DBD::Oracle.
    PLEASE notify dbi-users about exactly why you had to build it this way.
    Found header files in /usr/include/oracle/11.1/client64.
    Checking for functioning wait.ph
    System: perl5.010000 linux excelsior 2.6.26-1-vserver-amd64 #1 smp sat nov 8 20:24:14 utc 2008 x86_64 gnulinux
    Compiler: cc -O2 -g -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
    Linker: /usr/bin/ld
    Sysliblist:
    Oracle makefiles would have used these definitions but we override them:
    CC: /usr/bin/g++
    LDFLAGS: -g
    [-g]
    Linking with -L../../ -locci -lclntsh -lpthread [from $(CCLIB)]
    Checking if your kit is complete...
    Warning: the following files are missing in your kit:
    META.yml
    Please inform the author.
    Warning: -L../../ changed to -L/root/.cpan/build/DBD-Oracle-1.22-WXjXWy/../../
    LD_RUN_PATH=/usr/lib/oracle/11.1/client64/lib
    Using DBD::Oracle 1.22.
    Using DBD::Oracle 1.22.
    Using DBI 1.607 (for perl 5.010000 on x86_64-linux-gnu-thread-multi) installed in /usr/local/lib/perl/5.10.0/auto/DBI/
    Writing Makefile for DBD::Oracle
    *** If you have problems...
    read all the log printed above, and the README and README.help.txt files.
    (Of course, you have read README by now anyway, haven't you?)
    Everything works fine right now ;-) but now:
    machine:~/.cpan/build/DBD-Oracle-1.22-WXjXWy# make
    Skip blib/lib/DBD/Oracle.pm (unchanged)
    Skip blib/lib/oraperl.ph (unchanged)
    Skip blib/arch/auto/DBD/Oracle/dbdimp.h (unchanged)
    Skip blib/arch/auto/DBD/Oracle/ocitrace.h (unchanged)
    Skip blib/lib/Oraperl.pm (unchanged)
    Skip blib/arch/auto/DBD/Oracle/Oracle.h (unchanged)
    Skip blib/lib/DBD/Oracle/GetInfo.pm (unchanged)
    Skip blib/arch/auto/DBD/Oracle/mk.pm (unchanged)
    cc -c -I/usr/include/oracle/11.1/client64 -I/usr/local/lib/perl/5.10.0/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" -fPIC "-I/usr/lib/perl/5.10/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"11.1.0.7\" Oracle.c
    Oracle.xsi: In function 'XS_DBD__Oracle__db_disconnect':
    Oracle.xsi:306: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:306: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    Oracle.xsi: In function 'XS_DBD__Oracle__db_DESTROY':
    Oracle.xsi:352: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:352: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    Oracle.xsi:380: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:380: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    Oracle.xsi: In function 'XS_DBD__Oracle__st_finish':
    Oracle.xsi:675: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:675: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    Oracle.xsi: In function 'XS_DBD__Oracle__st_DESTROY':
    Oracle.xsi:752: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:752: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    Oracle.xsi:766: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    Oracle.xsi:766: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    cc -c -I/usr/include/oracle/11.1/client64 -I/usr/local/lib/perl/5.10.0/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" -fPIC "-I/usr/lib/perl/5.10/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"11.1.0.7\" dbdimp.c
    dbdimp.c: In function 'ora_db_login6':
    dbdimp.c:528: warning: format '%d' expects type 'int', but argument 8 has type 'size_t'
    dbdimp.c:535: warning: format '%d' expects type 'int', but argument 8 has type 'size_t'
    dbdimp.c:738: warning: format '%d' expects type 'int', but argument 7 has type 'size_t'
    dbdimp.c:738: warning: format '%d' expects type 'int', but argument 9 has type 'long unsigned int'
    dbdimp.c:787: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    dbdimp.c:787: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    dbdimp.c: In function 'ora_st_cancel':
    dbdimp.c:842: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    dbdimp.c: In function 'ora_db_disconnect':
    dbdimp.c:879: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    dbdimp.c:879: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    dbdimp.c: In function 'ora_db_STORE_attrib':
    dbdimp.c:976: warning: value computed is not used
    dbdimp.c: In function 'createxmlfromstring':
    dbdimp.c:1058: warning: format '%d' expects type 'int', but argument 3 has type 'STRLEN'
    dbdimp.c:1066: warning: format '%ld' expects type 'long int', but argument 2 has type 'int'
    dbdimp.c:1077: warning: passing argument 4 of 'OCILobWriteAppend' from incompatible pointer type
    dbdimp.c: In function 'dbd_preparse':
    dbdimp.c:1243: warning: value computed is not used
    dbdimp.c: In function 'dbd_rebind_ph_varchar2_table':
    dbdimp.c:1546: warning: format '%d' expects type 'int', but argument 3 has type 'STRLEN'
    dbdimp.c:1554: warning: format '%d' expects type 'int', but argument 3 has type 'STRLEN'
    dbdimp.c:1584: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'long unsigned int'
    dbdimp.c:1584: warning: format '%u' expects type 'unsigned int', but argument 8 has type 'long unsigned int'
    dbdimp.c: In function 'dbd_rebind_ph_number_table':
    dbdimp.c:1991: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'long unsigned int'
    dbdimp.c:1991: warning: format '%u' expects type 'unsigned int', but argument 8 has type 'long unsigned int'
    dbdimp.c: In function 'dbd_rebind_ph_char':
    dbdimp.c:2197: warning: format '%d' expects type 'int', but argument 5 has type 'IV'
    dbdimp.c: In function 'pp_exec_rset':
    dbdimp.c:2412: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    dbdimp.c:2412: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    dbdimp.c: In function 'ora_bind_ph':
    dbdimp.c:2743: warning: format '%d' expects type 'int', but argument 2 has type 'IV'
    dbdimp.c:2752: warning: format '%d' expects type 'int', but argument 2 has type 'IV'
    dbdimp.c:2786: warning: format '%d' expects type 'int', but argument 3 has type 'IV'
    dbdimp.c:2799: warning: unknown conversion type character '_' in format
    dbdimp.c: In function 'ora_st_execute':
    dbdimp.c:3018: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    dbdimp.c:3018: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    dbdimp.c: In function 'ora_st_execute_array':
    dbdimp.c:3328: warning: unused variable 'sv2'
    dbdimp.c: In function 'ora_st_finish':
    dbdimp.c:3473: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    dbdimp.c:3473: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    dbdimp.c:3491: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    dbdimp.c: In function 'ora_st_destroy':
    dbdimp.c:3587: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    dbdimp.c: In function 'ora_st_STORE_attrib':
    dbdimp.c:3672: warning: value computed is not used
    dbdimp.c: In function 'ora_st_FETCH_attrib':
    dbdimp.c:3720: warning: value computed is not used
    cc -c -I/usr/include/oracle/11.1/client64 -I/usr/local/lib/perl/5.10.0/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" -fPIC "-I/usr/lib/perl/5.10/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"11.1.0.7\" oci8.c
    oci8.c: In function 'fetch_cleanup_rset':
    oci8.c:974: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    oci8.c:974: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    oci8.c: In function 'fetch_func_rset':
    oci8.c:1031: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    oci8.c:1031: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    oci8.c: In function 'dbd_rebind_ph_lob':
    oci8.c:1095: warning: format '%ld' expects type 'long int', but argument 2 has type 'ub4'
    oci8.c: In function 'get_attr_val':
    oci8.c:1655: warning: unknown conversion type character 'O' in format
    oci8.c:1655: warning: format '%s' expects type 'char *', but argument 6 has type 'size_t *'
    oci8.c:1655: warning: too many arguments for format
    oci8.c:1672: warning: unknown conversion type character 'O' in format
    oci8.c:1672: warning: format '%s' expects type 'char *', but argument 6 has type 'size_t *'
    oci8.c:1672: warning: too many arguments for format
    oci8.c: In function 'get_object':
    oci8.c:1911: warning: format '%d' expects type 'int', but argument 6 has type 'struct OCIIter **'
    oci8.c: In function 'fetch_get_piece':
    oci8.c:2024: warning: format '%d' expects type 'int', but argument 6 has type 'ub1 *'
    oci8.c:2047: warning: format '%d' expects type 'int', but argument 7 has type 'ub4 *'
    oci8.c:2056: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    oci8.c:2061: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    oci8.c:2061: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    oci8.c: In function 'ora_describe':
    oci8.c:2823: warning: format '%ld' expects type 'long int', but argument 2 has type 'ub4'
    oci8.c:2963: warning: format '%d' expects type 'int', but argument 6 has type 'void *'
    oci8.c: In function 'ora_st_fetch':
    oci8.c:3048: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    oci8.c:3063: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    oci8.c:3074: warning: format '%lu' expects type 'long unsigned int', but argument 8 has type 'int'
    oci8.c:3085: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    oci8.c:3085: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    oci8.c:3092: warning: format '%ld' expects type 'long int', but argument 2 has type 'I32'
    oci8.c:3092: warning: format '%ld' expects type 'long int', but argument 3 has type 'I32'
    oci8.c: In function 'init_lob_refetch':
    oci8.c:3474: warning: value computed is not used
    oci8.c:3549: warning: value computed is not used
    oci8.c:3556: warning: format '%ld' expects type 'long int', but argument 2 has type 'ub4'
    oci8.c:3596: warning: format '%ld' expects type 'long int', but argument 2 has type 'int'
    Running Mkbootstrap for DBD::Oracle ()
    chmod 644 Oracle.bs
    rm -f blib/arch/auto/DBD/Oracle/Oracle.so
    LD_RUN_PATH="/usr/lib/oracle/11.1/client64/lib" cc -shared -O2 -g -L/usr/local/lib Oracle.o dbdimp.o oci8.o -o blib/arch/auto/DBD/Oracle/Oracle.so \
    -L/usr/lib/oracle/11.1/client64/lib -L/root/.cpan/build/DBD-Oracle-1.22-WXjXWy/../.. -locci -lclntsh -lpthread \
    chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so
    cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs
    chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs
    /usr/bin/perl "-Iblib/arch" "-Iblib/lib" ora_explain.PL ora_explain
    Extracted ora_explain from ora_explain.PL with variable substitutions.
    cp ora_explain blib/script/ora_explain
    /usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/ora_explain
    Manifying blib/man1/ora_explain.1p
    Manifying blib/man3/DBD::Oracle.3pm
    Manifying blib/man3/DBD::Oraperl.3pm
    Some clues or just forget it!
    Thanx, Alejandro

    I'm also a PostgreSQL man, so it should be easy to communicate.
    I can reproduce your problem with DBD::Oracle, and I guess that your problem is that the database is on a different machine, while "make test" assumes that it is on the same machine (like when you unset PGHOST in PostgreSQL).
    The error message means that for a local database Oracle expects a local "database name" in the environment variable ORACLE_SID, but the environment variable is unset (roughly equivalent to PGDATABASE).
    When you encounter connection problems with DBI, it's always a good idea to try to connect in the same way with the command line utility "sqlplus".
    In your case, I would say that the equivalent connection attempt with sqlplus would be:
    sqlplus scott/tiger
    which will probably give you the same error message, right?
    With your tnsnames.ora, I would recommend that you set the environment variable TWO_TASK to "caw".
    Then Oracle will look for the entry "caw" in tnsnames.ora (this is roughly comparable to setting PGSERVICE in PostgreSQL, where PGSYSCONFDIR corresponds to Oracle TNS_ADMIN).
    If your test login is not "scott/tiger", set ORACLE_USERID as described in README.login.txt.
    Yours,
    Laurenz Albe

  • Instant Client 11.1.0.1, Perl DBD::Oracle, and Kerberos

    Hi all,
    I'm trying to get an Instant Client working so I can connect to remote server and sync the data up with our own. It works, but there is a problem. Basically, if I connect via the Perl DBI and DBD::Oracle, Kerberos authentication bits get screwed up for the rest of the process. If I connect to the remote server, and then a local non-Oracle service via Kerberos, the latter fails. Note that, if done separately, they work fine.
    Looking into it, it appears that it wants to open the file /krb5/krb.conf, which doesn't exist for me (/etc/krb5.conf is the Kerberos config file). I found something online (http://download-west.oracle.com/docs/cd/B10501_01/network.920/a96573/asoappb.htm) that suggests that I should change some KERBEROS* parameters in $ORACLE_HOME/network/admin/sqlnet.ora. Either I'd like to have it try to open the right Kerberos config, or just ignore Kerberos altogether. Unfortunately, I have an old sqlnet.ora, that appears to have been generated by some external interface, and I'd like to maybe do this again, the "right way".
    [koczan@ator] ~ $ cat /s/oracle-csl/network/admin/sqlnet.ora
    # SQLNET.ORA Network Configuration File: /local.gazoo/oracle/network/admin/sqlnet.ora
    # Generated by Oracle configuration tools.
    NAMES.DEFAULT_DOMAIN = cs.wisc.edu
    NAMES.DIRECTORY_PATH= (TNSNAMES)
    The other thing I'm wondering is why it's even looking at Kerberos. Doing ldd on the sqlplus binary, the libraries, and the DBD::Oracle shared library showed no reference to Kerberos.
    [koczan@ator] ~ $ ldd /s/oracle-csl/perl5/lib/site_perl/5.8.6/i686-linux-64int/auto/DBD/Oracle/Oracle.so
    linux-gate.so.1 => (0x0043d000)
    libclntsh.so.11.1 => /s/oracle-csl-0/lib/libclntsh.so.11.1 (0x00783000)
    libocci.so.11.1 => /s/oracle-csl-0/lib/libocci.so.11.1 (0x00110000)
    libociei.so => /s/oracle-csl-0/lib/libociei.so (0x02cf2000)
    libc.so.6 => /lib/libc.so.6 (0x00272000)
    libnnz11.so => /s/oracle-csl-0/lib/libnnz11.so (0x004ea000)
    libdl.so.2 => /lib/libdl.so.2 (0x003b2000)
    libm.so.6 => /lib/libm.so.6 (0x003b6000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x003dd000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x003f4000)
    libaio.so.1 => /usr/lib/libaio.so.1 (0x0040b000)
    libstdc++.so.6 => /s/gcc-3.4.4/i386_cent40/lib/libstdc++.so.6 (0x0215a000)
    libgcc_s.so.1 => /s/gcc-3.4.4/i386_cent40/lib/libgcc_s.so.1 (0x0040d000)
    /lib/ld-linux.so.2 (0x004cf000)
    So, is there something I'm missing? What would be a good way to make everything happy? I tried looking online for this, and asking the DBD::Oracle people, and I couldn't find anything.
    I'm running Instant Client 11.1.0.1 on Red Hat Enterprise Linux 5.1, Perl 5.8.8, DBI 1.602, DBD::Oracle 1.19, Kerberos 1.6.2.
    Thanks. I know this was a lot of info and questions for this, but any help would be appreciated.

    There's no SQLNET.AUTHENTICATION_SERVICES set in my sqlnet.ora. I assume it's using some sort of default or trying everything, is there a way to tell what it's doing even though nothing is set?
    All I need to do is connect via password-based authentication to a remote server. What should SQLNET.AUTHENTICATION_SERVICES be set to for that?
    I couldn't find any clear resource documenting SQLNET.AUTHENTICATION_SERVICES, if you could point me to one that would be excellent.
    Thanks.
    P.S. Here's the entirety of my sqlnet.ora file.
    # SQLNET.ORA Network Configuration File
    # Generated by Oracle configuration tools.
    # Originally on gazoo - /local.gazoo/oracle/network/admin/sqlnet.ora
    # Modified for use with Oracle InstantClient
    NAMES.DEFAULT_DOMAIN = cs.wisc.edu
    NAMES.DIRECTORY_PATH= (TNSNAMES)
    SQLNET.KERBEROS5_CONF=/etc/krb5.conf

  • Why Java is slow?

    I am learning Java. I heard many people saying that Java is slow compared to other languages C,C++. What does that really mean?

    Java is run on top of what they call a Java Virtual Machine (JVM). When you compile your code, javac produces a class file which contains a byte-code that can be interpreted and run by JVM later on (using java command). So, your java program run on (controlled by) another progam (JVM), unlike C/C++ excutables, which are run on the hardware. This scenario ensures compatibility with any platform you run your Java code on.
    Basically it's like this :
    | Java Classes |
    |
    | | |
    | JVM for Win | | JVM for UNIX | | JVM for MacOS |
    | | |
    | Hardware |
    But, no matter what your friends say, Java is a pefrectly suitable for almost any program that you'd write :))

  • Cannot install DBD::Oracle perl module with Oracle 11.2.0.3 client

    Hi
    I have been trying to install DBD::Oracle perl module on a Centos 5.7 server which is running Oracle client version 11.2.0.3. I have installed all dependencies prior to attempting installing the same and I am running into the following error -
    /usr/bin/ld: skipping incompatible /app/utiba/oracle/client/lib//libclntsh.so when searching for -lclntsh
    /usr/bin/ld: cannot find -lclntsh
    collect2: ld returned 1 exit status
    make: *** [blib/arch/auto/DBD/Oracle/Oracle.so] Error 1Here are the complete details of my attempt of installation of the perl module -
    [root@tch1testuview1 DBD-Oracle-1.50]# perl Makefile.PL
    Using DBI 1.52 (for perl 5.008008 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/
    Configuring DBD::Oracle for perl 5.008008 on linux (x86_64-linux-thread-multi)
    Remember to actually *READ* the README file! Especially if you have any problems.
    Installing on a linux, Ver#2.6
    Using Oracle in /app/utiba/oracle/client
    DEFINE _SQLPLUS_RELEASE = "1102000300" (CHAR)
    Oracle version 11.2.0.3 (11.2)
    Found /app/utiba/oracle/client/rdbms/lib/ins_rdbms.mk
    Using /app/utiba/oracle/client/rdbms/lib/ins_rdbms.mk
    Your LD_LIBRARY_PATH env var is set to '/app/utiba/oracle/client/lib:/lib:/usr/lib'
    Reading /app/utiba/oracle/client/rdbms/lib/ins_rdbms.mk
    Reading /app/utiba/oracle/client/rdbms/lib/env_rdbms.mk
    WARNING: Oracle /app/utiba/oracle/client/rdbms/lib/ins_rdbms.mk doesn't define a 'build' rule.
    WARNING: I will now try to guess how to build and link DBD::Oracle for you.
             This kind of guess work is very error prone and Oracle-version sensitive.
             It is possible that it won't be supported in future versions of DBD::Oracle.
             *PLEASE* notify dbi-users about exactly _why_ you had to build it this way.
    Found header files in /app/utiba/oracle/client/rdbms/public.
    client_version=11.2
    DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.3\" -DORA_OCI_102 -DORA_OCI_112
    Checking for functioning wait.ph
    System: perl5.008008 linux builder10.centos.org 2.6.18-53.el5 #1 smp mon nov 12 02:14:55 est 2007 x86_64 x86_64 x86_64 gnulinux
    Compiler:   gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
    Linker:     /usr/bin/ld
    Sysliblist: -ldl -lm -lpthread -lnsl -lirc -lipgo
    Oracle makefiles would have used these definitions but we override them:
      CC:       $(GCC)
      CFLAGS:   $(GFLAG) $(OPTIMIZE) $(CDEBUG) $(CCFLAGS) $(PFLAGS)\
            $(SHARED_CFLAG) $(USRFLAGS)
               [$(GFLAG) -O2 $(CDEBUG) $(CCFLAGS) -I/app/utiba/oracle/client/rdbms/demo -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/plsql/public -I/app/utiba/oracle/client/network/public -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLDAP_CM $(LPFLAGS) $(PLSQLNCGFLAGS) $(USRFLAGS)]
      LDFLAGS:  -o $@ $(LDOBJSZ) $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) $(LDPATHFLAG)$(LIBHOME)stubs/ $(LDPATHFLAG)$(LIBHOME) $(LLIBIRC)
               [-o $@ -m32 -L/app/utiba/oracle/client/rdbms/lib/ -L$(LIBHOME) -L$(LIBHOME)stubs/ -L$(LIBHOME) -lirc -lipgo ]
    Linking with  -lclntsh -ldl -lm -lpthread -lnsl -lirc -lipgo -ldl -lm  [from $(OCISHAREDLIBS)]
    LD_RUN_PATH=/app/utiba/oracle/client/lib
    Using DBD::Oracle 1.50.
    Using DBD::Oracle 1.50.
    Using DBI 1.52 (for perl 5.008008 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/
    Writing Makefile for DBD::Oracle
    ***  If you have problems...
         read all the log printed above, and the README and README.help.txt files.
         (Of course, you have read README by now anyway, haven't you?)
    [root@tch1testuview1 DBD-Oracle-1.50]# make
    Skip blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod (unchanged)
    Skip blib/lib/DBD/Oracle.pm (unchanged)
    Skip blib/lib/oraperl.ph (unchanged)
    Skip blib/arch/auto/DBD/Oracle/Oracle.h (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Vms.pod (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Linux.pod (unchanged)
    Skip blib/lib/DBD/Oracle/GetInfo.pm (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting.pod (unchanged)
    Skip blib/arch/auto/DBD/Oracle/dbdimp.h (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Hpux.pm (unchanged)
    Skip blib/arch/auto/DBD/Oracle/ocitrace.h (unchanged)
    Skip blib/lib/Oraperl.pm (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Sun.pod (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Macos.pod (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Aix.pod (unchanged)
    Skip blib/lib/DBD/Oracle/Object.pm (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Win64.pod (unchanged)
    Skip blib/arch/auto/DBD/Oracle/mk.pm (unchanged)
    Skip blib/lib/DBD/Oracle/Troubleshooting/Win32.pod (unchanged)
    gcc -c  -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/rdbms/demo -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/plsql/public -I/app/utiba/oracle/client/network/public -I/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"1.50\" -DXS_VERSION=\"1.50\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.3\" -DORA_OCI_102 -DORA_OCI_112 Oracle.c
    gcc -c  -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/rdbms/demo -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/plsql/public -I/app/utiba/oracle/client/network/public -I/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"1.50\" -DXS_VERSION=\"1.50\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.3\" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c
    dbdimp.c: In function ‘fb_ary_cb_alloc’:
    dbdimp.c:324: warning: comparison is always false due to limited range of data type
    dbdimp.c:325: warning: comparison is always false due to limited range of data type
    dbdimp.c:326: warning: comparison is always false due to limited range of data type
    dbdimp.c:327: warning: comparison is always false due to limited range of data type
    dbdimp.c:328: warning: comparison is always false due to limited range of data type
    dbdimp.c: In function ‘fb_ary_alloc’:
    dbdimp.c:344: warning: comparison is always false due to limited range of data type
    dbdimp.c:345: warning: comparison is always false due to limited range of data type
    dbdimp.c:346: warning: comparison is always false due to limited range of data type
    dbdimp.c:347: warning: comparison is always false due to limited range of data type
    gcc -c  -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/rdbms/demo -I/app/utiba/oracle/client/rdbms/public -I/app/utiba/oracle/client/plsql/public -I/app/utiba/oracle/client/network/public -I/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"1.50\" -DXS_VERSION=\"1.50\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.3\" -DORA_OCI_102 -DORA_OCI_112 oci8.c
    oci8.c: In function ‘ora_blob_read_mb_piece’:
    oci8.c:1804: warning: comparison is always false due to limited range of data type
    oci8.c: In function ‘describe_obj_by_tdo’:
    oci8.c:3256: warning: comparison is always false due to limited range of data type
    oci8.c: In function ‘ora_describe’:
    oci8.c:3480: warning: comparison is always false due to limited range of data type
    oci8.c: In function ‘ora_st_fetch’:
    oci8.c:3953: warning: unused variable ‘imp_xxh’
    Running Mkbootstrap for DBD::Oracle ()
    chmod 644 Oracle.bs
    rm -f blib/arch/auto/DBD/Oracle/Oracle.so
    LD_RUN_PATH="/app/utiba/oracle/client/lib" gcc  -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic Oracle.o dbdimp.o oci8.o  -o blib/arch/auto/DBD/Oracle/Oracle.so  \
               -L/app/utiba/oracle/client/lib/ -lclntsh -ldl -lm -lpthread -lnsl -lirc -lipgo -ldl -lm      \
    /usr/bin/ld: skipping incompatible /app/utiba/oracle/client/lib//libclntsh.so when searching for -lclntsh
    /usr/bin/ld: cannot find -lclntsh
    collect2: ld returned 1 exit status
    make: *** [blib/arch/auto/DBD/Oracle/Oracle.so] Error 1I am sure that installing a previous(older) version of oracle client will fix this issue i.e. either 11.2.0.1 or older (that is tested) but I want to know if it is possible to resolve the above issue with a work around and not having to install a previous version.
    Fyi.. I've tried to install DBD::Oracle version 1.24 and 1.50 but that doesn't seem to make any difference. I couldn't find any related thread either for this error so I desperately need a solution to the same(if any).
    If anyone can help here, would really appreciate it or else, I will have no choice but to install previous version of oracle client.
    Thanks
    Edited by: 956308 on Aug 31, 2012 6:55 AM
    Edited by: 956308 on Aug 31, 2012 6:57 AM

    Contents of the response file:
    oracle.install.responseFileVersion=http://www.oracle.com/2007/install/rspfmt_clientinstall_response_schema_v11_2_0
    ORACLE_HOSTNAME=slc00caz
    UNIX_GROUP_NAME=oracle
    INVENTORY_LOCATION=/home/psadm1/oraInventory
    SELECTED_LANGUAGES=en
    ORACLE_HOME=/opt/oracle/psft/pt/oracle-client/11.2.0.x
    ORACLE_BASE=/opt/oracle/psft/pt/oracle-client
    oracle.install.client.installType=Custom
    oracle.install.client.upgrading=false
    oracle.install.client.customComponents=oracle.rdbms.util:11.2.0.3.0,oracle.javavm.client:11.2.0.3.0,oracle.sqlplus:11.2.0.3.0,oracle.dbjava.jdbc:11.2.0.3.0,oracle.rdbms.oci:11.2.0.3.0,oracle.xdk:11.2.0.3.0,oracle.network.aso:11.2.0.3.0,oracle.assistants.oemlt:11.2.0.3.0,oracle.network.client:11.2.0.3.0,oracle.odbc:11.2.0.3.0,oracle.dbdev:11.2.0.3.0
    oracle.install.client.schedulerAgentHostName=
    oracle.install.client.schedulerAgentPortNumber=
    oracle.installer.autoupdates.option=SKIP_UPDATES
    oracle.installer.autoupdates.downloadUpdatesLoc=
    AUTOUPDATES_MYORACLESUPPORT_USERNAME=
    AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
    PROXY_HOST=
    PROXY_PORT=0
    PROXY_USER=
    PROXY_PWD=
    PROXY_REALM=

  • How To Store pdf or doc file in Oracle Database using Java Jdbc?

    can any one help me out How To Store pdf or doc file in Oracle Database using Java Jdbc in JSP/Serlet? i tried like anything. using blob also i tried. but i am able 2 store images in DB not files. please if u know or else if u have some code like this plz send that to me, and help me out plz. i need that urgent.

    Hi.. i am not getting error, But i am not getting the original contents from my file. i am getting all ASCII vales, instead of my original data. here i am including my code.
    for Adding PDF in DB i used image.jsp
    Database table structure (table name. pictures )
    Name Null? Type
    ID NOT NULL NUMBER(11)
    IMAGE BLOB
    <%@ page language="java" import="java.util.*,java.sql.*,java.io.*" pageEncoding="ISO-8859-1"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%
    try{
         Class.forName("oracle.jdbc.driver.OracleDriver");
         Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.135:1521:orcl","scott","tiger");
         PreparedStatement ps,pstmt,psmnt;
         ps = con.prepareStatement("INSERT INTO pictures VALUES(?,?)");
    File file =
    new File("D:/info.pdf");
    FileInputStream fs = new FileInputStream(file);
    ps.setInt(1,4);
    ps.setBinaryStream(2,fs,fs.available());
    int i = ps.executeUpdate();
    if(i!=0){
    out.println("<h2>PDF inserted successfully");
    else{
    out.println("<h2>Problem in image insertion");
    catch(Exception e){
    out.println("<h2>Failed Due To "+e);
    %>
    O/P: PDF inserted successfully
    i tried to display that pdf using servlet. i am giving the code below.
    import java.io.IOException;
    import java.sql.*;
    import java.io.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class DispPDF extends HttpServlet {
         * The doGet method of the servlet. <br>
         * This method is called when a form has its tag value method equals to get.
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         public void service(HttpServletRequest request, HttpServletResponse response)
                   throws ServletException, IOException {
              //response.setContentType("text/html"); i commented. coz we cant use response two times.
              //PrintWriter out = response.getWriter();
              try{
                   InputStream sPdf;
                   Class.forName("oracle.jdbc.driver.OracleDriver");
                        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.135:1521:orcl","scott","tiger");
                        PreparedStatement ps,pstmt,psmnt;
                   psmnt = con.prepareStatement("SELECT image FROM pictures WHERE id = ?");
                        psmnt.setString(1, "4"); // here integer number '4' is image id from the table.
                   ResultSet rs = psmnt.executeQuery();
                        if(rs.next()) {
                   byte[] bytearray = new byte[1048576];
                        //out.println(bytearray);
                        int size=0;
                        sPdf = rs.getBinaryStream(1);
                        response.reset();
                        response.setContentType("application/pdf");
                        while((size=sPdf.read(bytearray))!= -1 ){
                        //out.println(size);
                        response.getOutputStream().write(bytearray,0,size);
                   catch(Exception e){
                   System.out.println("Failed Due To "+e);
                        //out.println("<h2>Failed Due To "+e);
              //out.close();
    OP
    PDF-1.4 %âãÏÓ 2 0 obj <>stream xœ+är á26S°00SIá2PÐ5´1ôÝ BÒ¸4Ü2‹ŠKüsSŠSŠS4C²€ê P”kø$V㙂GÒU×713CkW )(Ü endstream endobj 4 0 obj <>>>/MediaBox[0 0 595 842]>> endobj 1 0 obj <> endobj 3 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 0000000000 65535 f 0000000325 00000 n 0000000015 00000 n 0000000413 00000 n 0000000168 00000 n 0000000464 00000 n 0000000509 00000 n trailer <<01b2fa8b70ac262bfa939cc786f8770c>]/Root 5 0 R/Size 7/Info 6 0 R>> startxref 641 %%EOF
    plz help me out.

  • DBD::Oracle works via perl CLI but not thru Apache

    Hi -
    I'm beating my head against a wall.
    We're trying to transition from our old Solaris machines to newer, virtual Linux machines. We're running CentOS, x86-64.
    Oracle Instant Client v11.2
    Perl: ActivePerl 5.14.2 built for x86_64-linux-thread-multi
    Apache: Apache/2.2.19 (Unix)
    DBI: v1.617
    DBD::Oracle v1.30
    I downloaded and installed the Oracle Instant Client RPMs - basic, devel, and sqlplus for 64-bit Linux.
    I can connect to a database via SQL*Plus just fine.
    I can run the following Perl script from the command line just fine.
    #!/bin/env perl
    BEGIN {
       $ENV{'ORACLE_BASE'} = "/usr/lib/oracle";
       $ENV{'ORACLE_HOME'} = "$ENV{'ORACLE_BASE'}/11.2/client64";
       $ENV{'LD_LIBRARY_PATH'} = "$ENV{'ORACLE_HOME'}";
       $ENV{'TNS_ADMIN'} = $ENV{'ORACLE_HOME'}
    use DBI;
    #use DBD::Oracle;
    use CGI;
    my $q = new CGI();
    print $q->header();
    print $q->start_html("Oracle Test");
    print "Hello World!";
    print $q->p(`which perl`);
    print $q->p("PATH: " . $ENV{'PATH'}) . "\n";
    print $q->p("ORACLE_BASE: " . $ENV{'ORACLE_BASE'}) . "\n";
    print $q->p("ORACLE_HOME: " . $ENV{'ORACLE_HOME'}) . "\n";
    print $q->p("LD_LIBRARY_PATH: " . $ENV{'LD_LIBRARY_PATH'}) . "\n";
    print $q->p("TNS_ADMIN: " . $ENV{'TNS_ADMIN'}) . "\n";
    print "\n";
    my $dbh = DBI->connect("dbi:Oracle:my-oracle-server.com:1521/mydatabase",
       "username", "password") || die $DBI::errstr;
    my $sql = "SELECT * FROM cs_empnums";
    my $ary_ref = $dbh->selectall_arrayref($sql);
    print $q->table({border=>1, cellpadding=>5, cellspacing=>0});
    foreach my $row (@{$ary_ref})  {
       print $q->TR($q->td($row)) . "\n";
    print $q->end_table();
    print $q->end_html();However, when I run it from a browser thru Apache, I get the following output:
    Hello World!
    /var/www/apps/ActivePerl/bin/perl
    PATH: /var/www/apps/ActivePerl/bin:/usr/bin:/bin
    ORACLE_BASE: /usr/lib/oracle
    ORACLE_HOME: /usr/lib/oracle/11.2/client64
    LD_LIBRARY_PATH: /usr/lib/oracle/11.2/client64
    TNS_ADMIN: /usr/lib/oracle/11.2/client64
    and the following in my apache error log:
    [Thu Mar 01 18:51:47 2012] [error] [client 172.22.15.177] install_driver(Oracle) failed: Can't load '/var/www/apps/ActivePerl-5.14/lib/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /var/www/apps/ActivePerl-5.14/lib/DynaLoader.pm line 191.
    [Thu Mar 01 18:51:47 2012] [error] [client 172.22.15.177]  at (eval 13) line 3
    [Thu Mar 01 18:51:47 2012] [error] [client 172.22.15.177] Compilation failed in require at (eval 13) line 3.
    [Thu Mar 01 18:51:47 2012] [error] [client 172.22.15.177] Perhaps a required shared library or dll isn't installed where expected
    [Thu Mar 01 18:51:47 2012] [error] [client 172.22.15.177]  at /var/www/web_sites/htdocs/cgi-bin/oracle_test.pl line 27For one thing, I'm not sure why it's looking for libclntsh.so.10.1, when i have OIC v11 installed. But I symlinked the libclntsh.so file via libclntsh.so.10.1, which is enabling my script to run from the command line.
    But it's still not working thru Apache.
    I confirmed that all the environment variables are set correctly - tho I have to set them explicitly in my Perl script - for some reason it's not picking them up in my envvars file... just the PATH variable.
    Any ideas?

    You do not need ORACLE_BASE or ORACLE_HOME with instant client.
    If DBD::Oracle is looking for libclntsh.so.10.1, that means that the binary you used was built against Oracle 10.
    Usually creating a symbolic link to a different library version is a big no-no, but in this very special case it is ok, since event Oracle's documentation states that they are binary compatible.
    As to your main problem, I can't guess what causes this.
    Have you tried putting the Instant Client path into /etc/ld.so.conf and running ldconfig? Maybe that solves the problem.
    If you can "strace" the process, you would see for what file it is looking and where. Maybe that gives you a clue.
    Hmmm... I just looked at http://perldoc.perl.org/DynaLoader.html , and I get the idea that it does not consult LD_LIBRARY_PATH.
    Rather, it uses @dl_library_path which is initialized with LD_LIBRARY_PATH, presumably when the module is loaded.
    Now if httpd, as a setuid program, ignores your LD_LIBRARY_PATH, @dl_library_path would not contain your Instant Client directory.
    So try either to change @dl_library_path in your Perl script or SetEnv LD_LIBRARY_PATH in your httpd.conf.
    All of this is guesswork since I know too little about Perl or Apache.
    Yours,
    Laurenz Albe

  • Can I connect to Oracle server7.1  through Java-JDBC using the latest thin drivers???

    Hey Gurus,
    Please help me .
    MY Current requirement is to connect to multiple oracle 7.1( and other variants) servers running on different operating systems, through Java/JDBC.
    My FIrst question is, can i connect to older versions of database using latest drivers?
    I could connect to the server running on SCO-oracle 7.1 using SQLNet8.1.7 under windows. But the same is not happening when the client is on Linux.But I need to connect from linux
    It says ORA-03113 - End of communication channel.
    What may be th problem.
    If any one could show some pointers where I can get more information about this problem would be helpfull
    THanks
    Lokesh

    I tried the classpath suggestion above (not the one modifying the .xml file) , but it didnt work for me , I am using WLI 10.3.1 and trying to connect DB on 8.1.7 V . I downloaded the classes12.jar and the ojdbc14.jar file from the oracle and placed in lib and the even included the classpath , but i again got the same exception .
    All this while i was selecting the option Oracle Driver Thin from the DataBase Driver when creating the connection pool from console . I tried with "BEA Oracle Driver (Type 4)" and it worked for me .. Although the option "BEA Oracle Driver (Type 4)" lists only the DBs from 9.0.1 to 11 G , but in my case using this driver i am able to connect to Oracle DB 8.1.7 . So all you guys if it classpath doesnt fix the issue try out by selecting Driver , "BEA Oracle Driver (Type 4)" .
    Manoj , this will fix the Connection pool part of the ques, but for the java part Try to load the Driver class "weblogic.jdbc.oracle.OracleDriver" before connecting to DB with Class.forName.
    Thx
    Yatin Mehta

  • Can't install perl modul DBD::Oracle with XE

    Hello,
    I have installed oracle 10.2.0.1 XE and want now install the perl modul DBD::Oracle.
    After running
    perl Makefile.PL
    I get the message:
    Unable to locate an oracle.mk, proc.mk or other suitable *.mkfile in your Oracle installation. (I looked in
    /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/lib/oracle.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/demo/oracle.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/otrace/demo/atmoci.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/precomp/demo/proc/proc.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/precomp/demo/proc/demo_proc.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/proc/lib/proc.mk /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/proc16/lib/proc16.mk)
    And the program is right!!
    I do not have any of this files on my Computer.
    I also looked in the files
    oracle-instantclient-basic-10.2.0.1-1.i386.rpm
    oracle-instantclient-devel-10.2.0.1-1.i386.rpm
    where I also can't find these files.
    Could you please help and tell me, where I can get these files?
    Thank you,
    Marc

    See the thread on Perl with XE in Re: How can I get CPAN  DBD::Oracle to install with XE?
    -- cj

  • b font color ='red' Java JDBC and Oracle DB URGENT HELP PLEASE /font /b

    Hello, I am a newbie. I'm very interested in Java in relation to JDBC, Oracle and SAP.I am trying to connect to an Oracle DB and I have problems to display the output on the consule in my application. What am I doing wrong here . Please help me. This is my code: Please Explain
    import java.sql.*;
    import java.sql.DriverManager;
    import java.sql.Connection;
    public class SqlConnection {
         public static void main(String[] args) {
              Class.forName("oracle.jdbc.driver.OracleDriver"); //Loading the Oracle Driver.
              Connection con = DriverManager.getConnection
              ("jdbc:orcle:thin:@34.218.5.3:1521:ruka","data","data"); //making the connection.
              Statement stmt = con.createStatement ();// Sending a query to the database
              ResultSet rs = stmt.executeQuery("SELECT man,jean,test,kok FROM sa_kostl");
              while (rs.next()) {
                   String man = rs.getString("1");
                   String jean = rs.getString("2");
                   String test = rs.getString("3");
                   String kok = rs.getString("4");
                   System.out.println( man, jean, test,kok );//here where my the
                                                 //compiler gives me errors
              stmt.close();
              con.close();
    }

    <b><font color ='red'>Java JDBC and Oracle DB URGENT HELP PLEASE</font></b>Too bad your attempt at getting your subject to have greater attention failed :p

  • Get sql*net to use perl module (DBI and DBD::Oracle)

    Hi,
    I'm doing a perl script which tests oracle database availability
    Now to install it on a Unix computer i need some Oracle files to use the DBI and DBD::Oracle module
    I saw in differents forums that i need to install SQL*NET to have those files but i know few things about Oracle products and then i don't know which package i have to download to have it.
    If someone have the answer please mail me !!([email protected])
    Thanks a lot
    Nicolas Minant

    Ok, so i got it working as below. putting the details steps for someone to refer (or may myself in future if i forget)
    - Install Perl DBI module
    - install below 3 rpm for oracle instant client from (http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html)
    oracle-instantclient11.2-basic-11.2.0.3.0-1
    oracle-instantclient11.2-devel-11.2.0.3.0-1
    oracle-instantclient11.2-sqlplus-11.2.0.3.0-1
    I am using 64 bit linux box, so choose your RPM accordingly.
    - set below variables:
    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
    ORACLE_HOME=/usr/lib/oracle/11.2/client64
    also add ORACLE_HOME to your PATH variable
    - download DBD::Oracle ver 1.44 from
    - untar the module and run below commands in given sequence:
    perl Makefile.PL
    make
    make install
    DONE !!!
    Issues I had faced were due to the wrong LD_LIBRARY_PATH. i had set it to "/usr/lib/oracle/11.2/client64" whereas the correct value is "/usr/lib/oracle/11.2/client64/lib"
    certainly, this was a great learning for a newbie like me. i have spent 8 years as Linux sysadmin and have done a lot of perlscripting bt never had to deal with oracle stuff ever. hence this was a learning for me.
    Thanks everyone for your responses. you guys pushed me to right direction. thanks for the Great HELP.

  • JAVA JDBC code for Oracle 9i

    I need java jdbc code for oracle 9i as soon as possible.

    All the information you need is on the web. For some of it, you'll need to register with Oracle. It's free and they don't send annoying emails (at least to me).
    Sample code:
    http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/index.html
    Code templates:
    http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/htdocs/templates.htm
    Oracle JDBC FAQ:
    http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm
    Oracle9i JDBC Developer's Guide and Reference (for 9.2)
    http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/toc.htm
    Oracle general documentation
    http://www.oracle.com/technology/documentation/index.html
    Oracle SQLJ/JDBC forum
    http://forums.oracle.com/forums/forum.jspa?forumID=99

  • Perl DBI and DBD::Oracle

    Has anyone had any exerience with using Perl, DBI and DBD::Oracle to access Oracle databases on NT? I'll be starting a project that requires this kind of configuration and I was wondering if anyone has pointers.
    TIA!

    try cpan.org

  • How would java compare to Perl for processing large txt files

    I guess what I am asking is that I write a lot of scripts in perl for processing txt files with large amounts of data in them ( >1 MB or >100K Lines of data )
    Stuff like searching for strings, deleting chuncks of the file, replacing strings, extracting strings, lines etc.
    The reason I used perl is that I was under the impression it would be the fastest for the job but I never considered java. Now I am trying to get up to speed in Java so want to use these small jobs as practice?
    Thanks ... J

    Mod (Compiled) Perl is faster than Java I think. Also, perl has been optimized for this sort of thing. Plus, if you're creating a lot of small to medium size scripts, as you mentioned, perl will be a lot easier to support for you and who ever comes after you. Stick with what you know

Maybe you are looking for