in reply to DBI->connect problem

You are not checking the status when trying to open your log file. I'd not use the FileHandle module (but that's just my preference), so I'd do:
open(my $fh, ">", $ichs_logs) or die "Can't open $ichs_logs: $!";
On the DBI connect, I'd just use RaiseError:
my $db = DBI->connect("dbi:Oracle:prch", "User", "PW", { RaiseError => 1, });
Then you don't have to check every DBI method and add "or die $dbh->errstr". If you want to warn instead of die on some methods, you can wrap them in an eval block and use $@ as the error message.

Oh, and I second Mr. Muskrat's question about using Oraperl. With DBI, there should be no need for it anymore.