Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于perl-dbd-oracle_Perl - Fatal编程技术网

关于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

我有两个问题

  • 当我运行下面的perl脚本时,我得到下面的错误
  • 无法连接: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的库。有人能帮我解决第二个问题吗?请检查我在回答第二个问题时的评论。