2

我有两个疑问

  1. 当我运行以下 perl 脚本时,出现以下错误

Unable to connect: ORA-12154: TNS:could not resolve the connect identifier specified (DBD ERROR: OCIServerAttach)

我无法修改 tnsnames.ora,因为我没有访问权限。我知道 tnsnames.ora 没有 testdb 数据库的条目。有没有解决办法。以为我正在使用 IP 地址访问远程 solaris 机器中的数据库,因此不需要在本地 solaris 机器 tnsnames.ora 中输入。

$platform = "Oracle";
$database = "testdb";
$host = "testdb.dev.test.com.au";
$port = "2000";
$user = "scott";
$pw = "tiger";


$dsn = "dbi:$platform:$database:$host:3306";
print "$dsn" . "\n";

# PERL DBI CONNECT (RENAMED HANDLE)
my $dbstore = DBI->connect($dsn, $user, $pw) or die "Unable to connect: $DBI::errstr\n";

2 我对 DBD 模块的理解是,即使本地机器上没有安装 oracle,DBD 模块也应该可以工作。但是我在安装时注意到它使用了 oracle 客户端库。因此,如果我安装 DBD::Sybase,我是否需要在本地机器上安装 sysbase。既然我正在访问远程服务器数据库,我想为什么需要本地安装 oracle/sybase 库?

4

1 回答 1

3

你的 dsn 语法错误。尝试使其如下所示:

$dsn = "dbi:$platform:host=$host;sid=$sid;port=$port";

上面的语法在我使用过的许多情况下都对我有用DBD::Oracle

于 2013-01-08T07:00:56.513 回答