使用PHP / oci8连接到Oracle远程数据库 - 不确定如何使用监听器

时间:2012-04-18 19:48:38

标签: php oracle oci8

我的项目的总体目标是连接到另一台服务器上的Oracle数据库,使用PHP进行查询,以便我可以使用JavaScript创建数据图表。

我的服务器正在运行CentOS

到目前为止,我已经按照Web上的说明进行操作,并在我的服务器和Oracle Insant Client上安装了oci8。

然后我创建了一个shell脚本来隧道到远程服务器。

接下来,我创建了一个测试php文件来尝试连接数据库

<?php
$conn = oci_connect('name', 'pw', 'servername/databasename');
if(!$conn){
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

oci_close($conn);

?>

当我在浏览器中加载它时,我收到以下错误

警告:oci_connect():ORA-12541:TNS:第3行/var/www/html/djc/ociConnect.php中没有侦听器致命错误:ORA-12541:TNS:/ var / www /中没有侦听器第6行的html / djc / ociConnect.php

我已经完成了对错误的研究,我知道主要的问题是     lsnrctl start

不起作用,我没有lsnrctl函数。我也没有TNSNAMES.ORA或LISTENER.ORA文件。

我不知道如何让lsnrctl在我的服务器上工作,或者我是否从正确的角度攻击这个问题。

还尝试启动sqlplus(我从rpm安装),返回找不到的命令。

有什么建议吗? 我甚至不确定我是否要在正确的庄园中实现我的目标,所以非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我以前连接过:

//Putenv("NLS_LANG=SPANISH_SPAIN.WE8ISO8859P15");
$db="(DESCRIPTION=
     (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=TCP)
         (HOST=$GLOBALS[dbhost])(PORT=$GLOBALS[dbport])
       )
     )
       (CONNECT_DATA=(SID=$GLOBALS[dbname]))
 )";
 $conn = OCILogon($GLOBALS['dbuser'],$GLOBALS['dbpasswd'],$db);

相应地更换$ GLOBALS ['dbuser'],$ GLOBALS ['dbpasswd'],$ GLOBALS [dbhost],$ GLOBALS [dbname],$ GLOBALS [dbport]。