I have strace, but don't know how to use it.

On Wed, Jun 26, 2013 at 2:01 PM, Martin J. Evans <boh...@ntlworld.com>wrote:

> On 26/06/2013 19:35, Dan Bent wrote:
>
>> Big thanks!
>>
>> I did this:
>> ldd
>> /opt/perl_32/lib/site_perl/5.**8.8/PA-RISC1.1-thread-multi/**
>> auto/DBD/ODBC/ODBC.sl
>>
>> and got:
>>
>>   /usr/local/liant/lib/libodbc.**sl.1 =>    /usr/local/liant/lib/libodbc.
>> **sl.1
>>          /usr/lib/libc.2 =>      /usr/lib/libc.2
>>          /usr/lib/libdld.2 =>    /usr/lib/libdld.2
>>          /usr/lib/libc.2 =>      /usr/lib/libc.2
>>          /usr/lib/libpthread.1 =>        /usr/lib/libpthread.1
>>
>
> hmm - never heard of "liant". It looks like the unixODBC driver manager
> but I've never seen it installed in that location. Also, I see you've got
> isql and that comes with unixODBC. Have you also got a binary called
> odbcinst and if you have output from odbcinst -j would be useful.
>
>
>  I tried isql -v prod1 username password
>>
>> and it just hung like other attempts to access the database. No error
>> messages.
>>
>
> OK, so we've ruled out a change in Perl and DBI and DBD::ODBC as it is
> still going wrong without them. If this really is unixODBC you should have
> an odbc.ini and odbcinst.ini file probably in /usr/local/liant/etc or
> /usr/local/etc of /etc. What is in those files? There may also be a
> .odbc.ini in the users home dir.
>
> When we see the contents of those files we'll have a better idea of what
> driver you are using and the shared library used so you can check that too
> to see if it has been updated.
>
> You could enable unixODBC tracing but it rarely outputs much before
> connection is complete. I think you need to find the equivalent of strace
> on HPUX and run it on the isql command to see what system calls are being
> made.
>
> Did you say everything is on one box, so networking off that box cannot be
> the issue?
>
> Martin
>
>
>>
>>
>> On Wed, Jun 26, 2013 at 12:11 PM, Martin J. Evans <boh...@ntlworld.com
>> <mailto:boh...@ntlworld.com>> wrote:
>>
>>     On 26/06/2013 17:28, Dan Bent wrote:
>>
>>         I suddenly lost the ability to connect to my ODBC database
>>         yesterday,
>>         after years of using the same function to establish a connection:
>>
>>         sub dbaseconnect {
>>               if (defined($testing)) {
>>                   if ($testing eq "YES") {
>>                       $dsn =  'dbi:ODBC:test1' ;
>>                       print "Using test database\n" ;
>>                   } elsif ($testing eq "TRAIN") {
>>                       $dsn =  'dbi:ODBC:train1' ;
>>                       print "Using train1 database\n" ;
>>                   } else {
>>                       $dsn =  'dbi:ODBC:prod1' ;
>>                   }
>>               } else {
>>                   $dsn =  'dbi:ODBC:prod1' ;
>>               }
>>               $user =  'USER' ;
>>               $passwd =  'PASSWORD' ;
>>               my %adrivers = DBI->available_drivers();
>>               print join(", ", %adrivers), "\n" ;
>>
>>               print "connecting to DATABASE $dsn  $user $passwd\n" ;
>>               $dbh = DBI->connect($dsn, $user, $passwd,
>>                           {RaiseError => 1, AutoCommit => 0})
>>                   or die "Could not connect to database: " . DBI->errstr ;
>>               print "connected to DATABASE $dsn \n" ;
>>         }
>>
>>         So, to gather information about where the failure is, I ran the
>>         following program:
>>
>>         #! /usr/bin/perl
>>
>>         use DBI ;
>>         use DBD::ODBC ;
>>         use strict ;
>>         use warnings ;
>>
>>         print "Available Drivers: " ;
>>         my @adrivers = DBI->available_drivers();
>>         print join(", ", @adrivers), "\n" ;
>>
>>         print "Data Sources: " ;
>>         foreach my $driver ( @adrivers ) {
>>               print "Driver: $driver\n";
>>               my @dataSources = DBI->data_sources( $driver );
>>               foreach my $dataSource ( @dataSources ) {
>>                   print "\tData Source is $dataSource\n";
>>               }
>>               print "\n";
>>         }
>>
>>         and the output I got was:
>>
>>         Available Drivers: DBM, ExampleP, File, ODBC, Proxy, Sponge
>>         Installed Drivers:
>>         Data Sources: Driver: DBM
>>                   Data Source is DBI:DBM:f_dir=.
>>                   Data Source is DBI:DBM:f_dir=CIGNA
>>                   Data Source is DBI:DBM:f_dir=Logs
>>                   Data Source is DBI:DBM:f_dir=ONCOURSE
>>                   Data Source is DBI:DBM:f_dir=autemp
>>                   Data Source is DBI:DBM:f_dir=config
>>                   Data Source is DBI:DBM:f_dir=fh.cob
>>                   Data Source is DBI:DBM:f_dir=perlscripts
>>                   Data Source is DBI:DBM:f_dir=pndspndwk
>>                   Data Source is DBI:DBM:f_dir=prgrun_dir
>>                   Data Source is DBI:DBM:f_dir=scripts
>>
>>         Driver: ExampleP
>>                   Data Source is dbi:ExampleP:dir=.
>>
>>         Driver: File
>>                   Data Source is DBI:File:f_dir=.
>>                   Data Source is DBI:File:f_dir=CIGNA
>>                   Data Source is DBI:File:f_dir=Logs
>>                   Data Source is DBI:File:f_dir=ONCOURSE
>>                   Data Source is DBI:File:f_dir=autemp
>>                   Data Source is DBI:File:f_dir=config
>>                   Data Source is DBI:File:f_dir=fh.cob
>>                   Data Source is DBI:File:f_dir=perlscripts
>>                   Data Source is DBI:File:f_dir=pndspndwk
>>                   Data Source is DBI:File:f_dir=prgrun_dir
>>                   Data Source is DBI:File:f_dir=scripts
>>
>>         Driver: ODBC
>>
>>         and the program just hangs when it looks for data sources using
>>         the ODBC
>>         driver. So, I suspect that there are issues with the ODBC
>>         driver. Here
>>         are the versions of the various DBI module components:
>>
>>            perl -MDBI -e 'DBI->installed_versions'
>>             Perl            : 5.008008    (PA-RISC1.1-thread-multi)
>>             OS              : hpux        (11.00)
>>             DBI             : 1.50
>>             DBD::Sponge     : 11.10
>>             DBD::Proxy      : install_driver(Proxy) failed: Can't locate
>>         RPC/PlClient.pm in @INC
>>             DBD::ODBC       : 1.14
>>             DBD::File       : 0.33
>>             DBD::ExampleP   : 11.12
>>             DBD::DBM        : 0.03
>>
>>         I imagine that I may not have the latest versions of everything,
>> and
>>         updates are probably in order, but, while updates are desirable,
>> I'd
>>         like to be sure that I'm addressing the root cause of the
>>         problem, so I
>>         get it resolved. This issue affects a lot of programs, and is
>>         critical
>>         to our business.
>>         Any help or suggestions will be greatly appreciated.
>>
>>
>>     You are in deed running VERY old versions - especially of DBD::ODBC.
>>
>>     You first need to think about what Jonathan said - he's probably
>>     right that working out what changed yesterday is probably going to
>>     give the quickest result.
>>
>>     Assuming you cannot find anything here are some suggestions.
>>
>>     DBD::ODBC is usually linked to an ODBC driver manager but back in
>>     the days of 1.14 people still linked directly to an ODBC driver
>>     sometimes - ODBC drivers did not support enumerating DSNs - only the
>>     driver manager does that. So first thing is hwo was DBD::ODBC built?
>>     If you don't know that look for ODBC.so in your perl tree and run
>>     the HPUX equivalent of Linux's ldd command on it to find what
>>     libraries it depends on (right now I cannot remember what the
>>     command is).
>>
>>     Once you've done that if the answer is libodbc.so.something then you
>>     are probably using the unixODBC driver manager. In that case you
>>     should hopefully have an isql binary and you should have an odbc.ini
>>     and odbcinst.ini defining your drivers and DSNs. What is in those
>>     files. Can you run:
>>
>>     isql -v TEST1 username password
>>     isql -v TRAIN1 username password
>>     isql -v PROD1 username password
>>
>>     as you didn't say which one you are using?
>>
>>     If you get back with this info I'll help more.
>>
>>     Martin
>>     --
>>     Martin J. Evans
>>     Wetherby, UK
>>
>>
>>
>
>

Reply via email to