Visit Our UNIX and Linux User Community


From perl program query is not executed.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting From perl program query is not executed.
# 8  
Old 03-04-2015
export is a shell builtin, remove the line that starts with "export" and change the declaration like this:
Code:
my $ORACLE_HOME = "/oracle/product/10.2.0";
$ENV{ORACLE_HOME} = $ORACLE_HOME;

# 9  
Old 03-04-2015
I have did as per request but the still the error throws as below.
Code:
DBD::Oracle::st execute failed: ORA-03106: fatal two-task communication protocol error (DBD ERROR: OCIStmtExecute) [for Statement "select tname from tab where tname='CQC_TEST_CASES'"] at testDB.pl line 19.
DBD::Oracle::st fetchrow_array failed: ERROR no statement executing (perhaps you need to call execute first) [for Statement "select tname from tab where tname='CQC_TEST_CASES'"]

Could you please confirm whether any NLS_LANG or LANG settings need to be changed.

---------- Post updated at 04:29 AM ---------- Previous update was at 04:27 AM ----------

Code:
#!/usr/bin/perl
use strict;
use DBI;
my $ORACLE_HOME = "/oracle/product/10.2.0";
$ENV{ORACLE_HOME} = $ORACLE_HOME;
my $user= "user";
my $passwd= "passwd";
my $sid = "TMT";
my $host = "SS.com";
my $dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid;port=1588",$user,$passwd) or die "Couldn't able to connect to database $@\n";

my $sql ="select tname from tab where rownum <6";

my $sth = $dbh->prepare($sql);
$sth->execute();
while (my $row = $sth->fetchrow_array)
{
  print $row . "\n";
}
$dbh->disconnect;

# 10  
Old 03-04-2015
Try addning the ORACLE SID:
Code:
my $ORACLE_SID="your_sid";
$ENV{ORACLE_SID}=$ORACLE_SID;

# 11  
Old 03-04-2015
I Use the same code and its gets connected in the 11g schema.

but when I tried with 10g database its not connected.
# 12  
Old 03-04-2015
Do you get the error while executing the script interactively - on the command line - or you get it on a scheduled execution (via cron)?
# 13  
Old 03-04-2015
Its not getting scheduled via crontab.

I tried interactively through on the command line by executing the perl script & it throws error.

Code:
Perl program.pl

The sql database is connected when I tried connecting manually.

Code:
sqlplus  user/passwd@db

---------- Post updated at 06:28 AM ---------- Previous update was at 05:13 AM ----------

In the below script while printing the date its works.
Code:
 
#!/usr/bin/perl
use strict;
use DBI;
my $ORACLE_HOME = "/oracle/product/10.2.0";
$ENV{ORACLE_HOME} = $ORACLE_HOME;
my $ORACLE_SID="bpmardbd";
$ENV{ORACLE_SID}=$ORACLE_SID;
my $user= "userc";
my $passwd= "passwd";
my $sid = "dba";
my $host = "king.info.com";
my $dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid;port=1588",$user,$passwd) or die "Couldn't able to connect to database $@\n";
my $sql ="select sysdate from dual";
#my $sql ="select tname from tab where rownum <6";
#my $sql ="select tname from tab where tname='CQC_TEST_CASES'";
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my $row = $sth->fetchrow_array)
{
  print $row . "\n";
}
$dbh->disconnect;

When I tried to execute the below query I am getting the below error.

Code:
 
#my $sql ="select tname from tab where rownum <6";

---------- Post updated at 06:58 AM ---------- Previous update was at 06:28 AM ----------

[error]
Code:
DBD::Oracle::st execute failed: ORA-03106: fatal two-task communication protocol error (DBD ERROR: OCIStmtExecute) [for Statement "select tname from tab where rownum <6"] at testDB.pl line 21.
DBD::Oracle::st fetchrow_array failed: ERROR no statement executing (perhaps you need to call execute first) [for Statement "select tname from tab where rownum <6"] at testDB.pl line 22.

---------- Post updated at 07:47 AM ---------- Previous update was at 06:58 AM ----------

i am not sure whether any character set need to be changed. since due to the below query its not connected in the perl program.

Code:
#my $sql ="select tname from tab where rownum <6";

It works if i print sysdate as below.

Code:
my $sql ="select sysdate from dual";

# 14  
Old 03-04-2015
I suppose you'll need to change you LD_LIBRARY_PATH when switching between Oracle versions.
I would use a wrapper shell script to invoke the Perl script correctly,something like this:
Code:
#!/bin/bash

ORACLE_HOME=$1
PATH=$ORACLE_HOME/perl/bin:$PATH
PERL5LIB=$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl
LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_HOME PATH PERL5LIB LD_LIBRARY_PATH
/path/perl_script

I would define the shebang of the Perl script like this: #!/usr/bin/env perl

And I would execute it like this:
Code:
./script_name /oracle/product/10.2.0

or:
Code:
./script_name /oracle/product/11.2.x


Previous Thread | Next Thread
Test Your Knowledge in Computers #869
Difficulty: Medium
Fortran introduced the concept of automatic garbage collection.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl program get a response before the program quits

I created a program, so a kid can practice there math on it. It dispenses varies math problems and the kid must input an answer. I also want it to grade the work they have done, but I can't find the best place for it to print out the grade. I have: if ( $response =~ m/^/ ) { $user_wants_to_quit... (1 Reply)
Discussion started by: germany1517
1 Replies

2. Shell Programming and Scripting

To check if the JAVA Program is successfully executed in sh shell scripting

Hi , I have written a shell script to call a java program say load_id.sh .This sh script indeed is executed implicitly in other sh script which calls 2 more sh scripts one by one. I need to check if the load_id.sh (which calls java program) is executed successfully only then continue with... (1 Reply)
Discussion started by: preema
1 Replies

3. Programming

A simple C program query ...

Given the following code inside the function ext3_write_super(): (It's there in Linux kernel 2.6.27.59) static void ext3_write_super (struct super_block * sb) { if (mutex_trylock(&sb->s_lock) != 0) BUG(); sb->s_dirt = 0; } The conditional test at if... (2 Replies)
Discussion started by: Praveen_218
2 Replies

4. Homework & Coursework Questions

Calling compiled C program with Perl program

Long story short: I'm working inside of a Unix SSH under a bash shell. I have to code a C program that generates a random number. Then I have to call the compiled C program with a Perl program to run the C program 20 times and put all the generated random #s into a text file, then print that text... (1 Reply)
Discussion started by: jdkirby
1 Replies

5. Shell Programming and Scripting

How to get the return code of subroutines executed as standalone as command line in Perl ?

How to do I get the return code of a subroutine in a perl module if invoke the subroutine as standalone, I have an module say TestExit.pm and in that i have a subroutine say myTest() which is returns 12, if i were to call the subroutine from command line like CASE:1 ( Without an explict... (2 Replies)
Discussion started by: ennstate
2 Replies

6. Shell Programming and Scripting

Unique constraint violated within stored procedure executed from Perl

Hi! I got an strange trouble executing a stored procedures that goes inserting line by line on a table. I mus integrate it with perl for an specific task... the hole process is controlled by e Perl script that: Load a text file calling sqlldr. Call a stored procedure that process the... (2 Replies)
Discussion started by: jparra
2 Replies

7. Shell Programming and Scripting

how to find status of last executed cmd in perl?

In shell we can find the status of last executed command by $? In perl what is the command to find the status of last executed command... Can any one please say??????????????? Thanks, Prabhu (1 Reply)
Discussion started by: prsampath
1 Replies

8. Shell Programming and Scripting

How to find pid of PS which executed by perl system function

hello All, I need to invoke by perl script some program/command and monitor it for 5 minutes . In case it still running for more then 5 min I need to send a signal which will stop it. I implemeted this as shown below by using eval & alarm and I'd like to know if there is a better way to... (1 Reply)
Discussion started by: Alalush
1 Replies

9. Shell Programming and Scripting

pro*c program for sql query

Hi all, I have sql query as follows. Please write a pro*c program for the following query. select sp1.cost_change ||','|| sp1.cost_change_desc ||','|| sp1.reason ||','|| to_char(sp1.active_date,'DD-MON-YYYY HH24:MI:SS') ||','|| sp1.status ||','|| sp1.cost_change_origin... (0 Replies)
Discussion started by: user71408
0 Replies

10. Shell Programming and Scripting

perl - why is the shell script executed before the print command?

i'm writing some simple scripts to help me learn perl. why does the print command get called after the shell script is executed? the purpose of the shell script is to simply echo to the screen "script run". which is does, but before the print command, you can clearly see the shell script is... (3 Replies)
Discussion started by: mjays
3 Replies

Featured Tech Videos