关于perl-dbd-oracle
我有两个问题关于perl-dbd-oracle,perl,Perl,我有两个问题 当我运行下面的perl脚本时,我得到下面的错误 无法连接:ORA-12154:TNS:无法解析指定的连接标识符(DBD错误:OCIServerAttach) 我无法修改tnsnames.ora,因为我没有访问权限。我知道tnsnames.ora没有testdb数据库的条目。有解决办法吗。我想我正在使用IP地址访问远程solaris机器中的数据库,因此不需要在本地solaris机器tnsnames.ora中输入 $platform = "Oracle"; $database = "t
无法连接:ORA-12154:TNS:无法解析指定的连接标识符(DBD错误: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,我需要在本地计算机中安装Sybase。因为我正在访问远程服务器数据库,所以我想为什么需要在本地安装oracle/sybase库?您的dsn语法是错误的。请尝试使其看起来如下所示:
$dsn = "dbi:$platform:host=$host;sid=$sid;port=$port";
上面的语法在我使用过的许多情况下都很有效,我使用了
DBD::Oracle
,非常感谢。现在可以了。请看一下我关于安装DBD模块的第二个问题。DBD需要在安装相关perl模块之前安装本地客户端。对于oracle,您需要在安装DBD::oracle
之前安装和配置oracle instant client;对于MSSQL,您需要在安装DBD::ODBC
之前安装和配置unixodbc
和freetds
。也就是说,本地客户机需要进行配置,并且应该能够访问数据库。因此,在考虑为DB2安装相关的DBD perl模块之前,我非常确定DB2需要一个本地客户机。我想perl DBD将拥有所有连接到oracle的库。有人能帮我解决第二个问题吗?请检查我在回答第二个问题时的评论。