PEPPLER.ORG
Michael Peppler
Sybase Consulting
Menu
Home
Sybase on Linux
Install Guide for Sybase on Linux
General Sybase Resources
General Perl Resources
Freeware
Sybperl
Sybase::Simple
DBD::Sybase
BCP Tool
Bug Tracker
Mailing List Archive
Downloads Directory
FAQs
Sybase on Linux FAQ
Sybperl FAQ
Personal
Michael Peppler's resume

sybperl-l Archive

Up    Prev    Next    

From: "Ashish Gupta" <ashish dot gupta at mizuho-sc dot com>
Subject: RE: sybperl, cron and environment variables
Date: Apr 17 2006 3:33AM

Hi Michael,

Thanks a lot for your informative email.

Now things are working fine.

I tried rebuilding sybperl, but the problem persisted.
The reason seems to be as follows.

The library files installed by the ASE under OCS-12_5/lib had been
overwritten by another set which came with RS.

These files which came with RS seem to want the env to be set.

I again installed the library files from the ASE distribution. And now,
the envrionment variables are not needed any more.


Thanks again.

Best regards,
Ashish



-----Original Message-----
From: michael.peppler@bnpparibas.com
[mailto:michael.peppler@bnpparibas.com] 
Sent: Thursday, April 13, 2006 8:26 PM
To: ashish.gupta@mizuho-sc.com
Cc: lucv@az.vub.ac.be; sybperl-l@peppler.org
Subject: RE: sybperl, cron and environment variables


The issue lies with the open client library versions, and the way Client
Library apps initialize the "context" in which they are to run.

dbschema.pl still works because it used DBlibrary, which isn't as
dependant
on this issue (mainly becase DBlibrary hasn't been updated to handle all
the recent changes in functionality).

> guptaash@tktecwsd20:/export/home/guptaash/my_scripts/exp/bin> a.pl
> Sybase::CTlib initialize: ct_init(12500) failed at
> /export/home/guptaash/perl/lib/5.8.6/DynaLoader.pm line 253.
> Compilation failed in require at a.pl line 3.
> BEGIN failed--compilation aborted at a.pl line 3.

The most likely problem here is that the Sybase::CTlib module was built
with an older version of OpenClient. When no env. variables are set it
may
try to use Sybase library files that are different from the ones in your
normal installation. If you are on Solaris you can test this with the
ldd
command. Find the CTlib.so file in the perl site-lib tree and run ldd on
that file - it will tell you which libraries will get loaded given the
current environment.

For example, on linux I get:

[pepm01a@gvas1tkc6001 sql]$ ldd
/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/auto/Sybase/CTlib
/CTlib.so
        linux-gate.so.1 =>  (0x00372000)
        /etc/libcwait.so (0x00390000)
        libsybct_r.so => /pvar/sybase/15.0/OCS-15_0/lib/libsybct_r.so
(0x00de0000)
        libsybcs_r.so => /pvar/sybase/15.0/OCS-15_0/lib/libsybcs_r.so
(0x00516000)
        libsybtcl_r.so => /pvar/sybase/15.0/OCS-15_0/lib/libsybtcl_r.so
(0x006ba000)
        libsybcomn_r.so =>
/pvar/sybase/15.0/OCS-15_0/lib/libsybcomn_r.so (0x00f84000)
        libsybintl_r.so =>
/pvar/sybase/15.0/OCS-15_0/lib/libsybintl_r.so (0x00426000)
        libsybblk_r.so => /pvar/sybase/15.0/OCS-15_0/lib/libsybblk_r.so
(0x005ca000)
        libm.so.6 => /lib/libm.so.6 (0x0078c000)
        libc.so.6 => /lib/libc.so.6 (0x00ab6000)
        libdl.so.2 => /lib/libdl.so.2 (0x003cc000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00570000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x005e8000)
        libsybunic.so => /pvar/sybase/15.0/OCS-15_0/lib/libsybunic.so
(0x00198000)
        /lib/ld-linux.so.2 (0x007f3000)
[pepm01a@gvas1tkc6001 sql]$

This will tell you if the libraries that the dynamic loader wants to use
are the ones you expected (i.e  the ones under $SYBASE/$SYBASE_OCS/lib.

Michael

PS. If you want to clear things without any hassle you could just
rebuild
sybperl...





Internet
ashish.gupta@mizuho-sc.com@peppler.org - 13/04/2006 07:18


Please respond to ashish.gupta@mizuho-sc.com

Sent by:    owner-sybperl-l@peppler.org

To:    lucv

cc:    sybperl-l


Subject:    RE: sybperl, cron and environment variables


Hi Luc,

Thanks for your reply.
And sorry for not replying earlier, there were many problems in the
office related to an application which was earlier handed over to me in
about 30 minutes worth of discussions!

Coming back to my sybperl problem:

The following are some points:

(a) the scripts were running fine from the cron
(b) since the day i installed an RS, they stopped working
(c) from "man cron", i found that cron does not set any env variables
for the programs it executes
(d) even now, the scripts fail if no env variables are set, but run fine
if env variables are set.
(e) dbschema.pl works fine even if no env variables are set.

what is confusing is:

(a) why did my scripts work fine earlier - even from the cron, where no
env variables were set
(b) why does dbschema.pl work fine, but a simple script which i make
(pasted below) does not


simple script which fails (even though with the same env, dbschema.pl
works fine)
------------------------------------------------------------------------
--------------------------------------------------

#!/export/home/guptaash/perl/bin/perl -w

use Sybase::CTlib;

$server = "SYB_DBA61_TKD";
$user = "sa";
$pass = "xxxxxx";

$me = "test_script";
$charset = "iso_1";
$host = "tktecwsd20";

$dbh = Sybase::CTlib->ct_connect($user, $pass, $server, $me,
     {      CON_PROPS =>      {
CS_SYB_CHARSET  => "$charset",

CS_HOSTNAME       => "$host"

}
     } );

@array_of_rows = $dbh->ct_sql("select @@version");
$result = $array_of_rows[0][0];

print "$result\n";



outputs
------------------------------------------
guptaash@tktecwsd20:/export/home/guptaash/my_scripts/exp/bin> a.pl
Sybase::CTlib initialize: ct_init(12500) failed at
/export/home/guptaash/perl/lib/5.8.6/DynaLoader.pm line 253.
Compilation failed in require at a.pl line 3.
BEGIN failed--compilation aborted at a.pl line 3.
guptaash@tktecwsd20:/export/home/guptaash/my_scripts/exp/bin> cd
guptaash@tktecwsd20:/export/home/guptaash> cd dbschema
guptaash@tktecwsd20:/export/home/guptaash/dbschema> dbschema.pl -Usa -S
SYB_DBA61_TKD -D sybsystemprocs -T p -t sp_who
Password:
Extraction started at:  Thu Apr 13 14:13:30 2006
ASE Version 12.5.2
Running dbschema.pl(2.4.2) on database 'sybsystemprocs' on Thu Apr 13
14:13:30 2006
Create procedures...done.

Extraction finished at: Thu Apr 13 14:13:45 2006

Looks like I'm all done!
guptaash@tktecwsd20:/export/home/guptaash/dbschema>




Thanks for your kind help.

Best regards,
Ashish





-----Original Message-----
From: Luc Van der Veurst [mailto:lucv@az.vub.ac.be]
Sent: Thursday, April 06, 2006 4:17 PM
To: ashish.gupta@mizuho-sc.com
Cc: sybperl-l@peppler.org
Subject: Re: sybperl, cron and environment variables



Hi,

How do you set your sybase environment variables in your profile ?

Do you source a script comparable to Sybase.csh ?

It seems that the installation of the repserver has overwritten
a script, or made changes in your profile (or whatever script
you source into your cronjobs) so that your cronjobs are using
a different sybase environment.

Check the modification dates of your .profile(s) and scripts that
are sourced in them.

That's my guess,
Luc.


> From: "Ashish Gupta" 
> To: 
> Subject: sybperl, cron and environment variables
> Date: Thu, 6 Apr 2006 15:06:05 +0900
> X-Barracuda-Spam-Score: -1.88
>
> Hi,
>
> Please can you help me with a problem probably regarding environment
> variables.
>
> I had written some scripts in perl and sybperl and put them in the
cron.
> examples:
>
> ----------------------------------------------------------------
> 01 20 * * * /home/sybase/dbalib/bin/run_dbcc     -s SYB_DBA61_TKD
> 01 21 * * * /home/sybase/dbalib/bin/update_stats -s SYB_DBA61_TKD
> 01 22 * * * /home/sybase/dbalib/bin/dump_db      -s SYB_DBA61_TKD
> -syb_zip
> #
> 01  6 * * * /home/sybase/dbalib/bin/check_space  -s SYB_DBA61_TKD
> ----------------------------------------------------------------
>
> They were working fine.
>
> Then, I think I installed Replication Server.
> And these scripts stopped working!
>
> I get an error of the following type:
>
> ----------------------------------------------------------------
> Your "cron" job on tktecwsd20
> /home/sybase/dbalib/bin/run_dbcc     -s SYB_DBA61_TKD
>
> produced the following output:
>
> Sybase::CTlib initialize: ct_init(12500) failed at
> /home/sybase/perl/lib/5.8.6/sun4-solaris-thread-multi/DynaLoader.pm
line
> 253.
> Compilation failed in require at
> /home/sybase/dbalib/bin/../lib/DBAlib.pm line 86.
> BEGIN failed--compilation aborted at
> /home/sybase/dbalib/bin/../lib/DBAlib.pm line 86.
> Compilation failed in require at /home/sybase/dbalib/bin/run_dbcc line
> 11.
> BEGIN failed--compilation aborted at /home/sybase/dbalib/bin/run_dbcc
> line 11.
> ----------------------------------------------------------------
>
> When I run the script interactively, by default I get this error.
> But if I set the environment variables related to sybase correctly -
via
> SYBASE.csh - then the scripts work fine.
>
> What I do not understand is: why were the cron jobs working fine
earlier
> on? and why do they fail now.
>
>
> Thanks for your kind help.
>
> Best regards,
> Ashish
>
>

Note: This e-mail contains privileged and confidential information and is for the sole use of the intended recipient(s).  If you are not an intended recipient, you are hereby kindly requested to refrain from printing, copying, or distributing the information contained herein.  Furthermore, any other use of the information contained herein is strictly prohibited.  If you have received this transmission in error, please kindly notify the sender immediately and destroy all copies of the original message.