连接到Oracle 10G R2时出现PHP错误

时间:2011-04-18 09:39:24

标签: php oracle ora-12170

我有这段代码:

ociinternaldebug(1);


// try connecting to the database
 $conn = oci_new_connect('username', 'password', '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.1.1 )(PORT = 1521)) (CONNECT_DATA = (SID = dpsid)))');

// check for any errors
 if (!$conn)
 {
  $e = oci_error();
  print htmlentities($e['message']);
  exit;
 } 

// else there weren't any errors
 else
 {
  echo 'connected.';
 } 

我收到此错误:

    OCI8 DEBUG: OCINlsEnvironmentVariableGet at (ext\oci8\oci8.c:1758) OCI8 DEBUG: OCIEnvNlsCreate at (ext\oci8\oci8.c:2708) OCI8 DEBUG: OCIHandleAlloc at (ext\oci8\oci8.c:2568) OCI8 DEBUG: OCIHandleAlloc at (ext\oci8\oci8.c:2580) OCI8 DEBUG: OCISessionPoolCreate at (ext\oci8\oci8.c:2598) OCI8 DEBUG: OCIAttrSet at (ext\oci8\oci8.c:2610) OCI8 DEBUG L1: create_spool: (0x1dde4f0) at (ext\oci8\oci8.c:2626) OCI8 DEBUG L1: using shared pool: (0x1dde4f0) at (ext\oci8\oci8.c:2904) OCI8 DEBUG: OCIHandleAlloc at (ext\oci8\oci8.c:2915) OCI8 DEBUG: OCIHandleAlloc at (ext\oci8\oci8.c:2925) OCI8 DEBUG: OCIAttrGet at (ext\oci8\oci8.c:2958) OCI8 DEBUG: OCIAttrGet at (ext\oci8\oci8.c:2959) OCI8 DEBUG L1: (numopen=0)(numbusy=0) at (ext\oci8\oci8.c:2961) OCI8 DEBUG: OCISessionGet at (ext\oci8\oci8.c:2972) OCI8 DEBUG: OCIErrorGet at (ext\oci8\oci8.c:1571) 
Warning: oci_new_connect() [function.oci-new-connect]: ORA-12170: TNS:Connect timeout occurred in C:\wamp\www\view\test.php on line 21
OCI8 DEBUG: OCIHandleFree at (ext\oci8\oci8.c:2150) OCI8 DEBUG: OCIHandleFree at (ext\oci8\oci8.c:2153) OCI8 DEBUG: OCIErrorGet at (ext\oci8\oci8.c:1571) ORA-12170: TNS:Connect timeout occurred

我正在尝试连接到远程Oracle数据库,但我收到此错误,我不知道为什么

问题是什么?

2 个答案:

答案 0 :(得分:2)

问题很明显,sqlnet超时。原因并不总是那么明显。

首先检查主机连接: telnet 1.1.1.1 1521 如果您出现空白屏幕而不是错误消息,则主机连接正常。 如果拒绝连接:您的侦听器未运行,或者至少未在指定端口上运行。 如果您没有得到任何响应,请检查防火墙[s]。

如果可以的话,我们可以深入挖掘。

答案 1 :(得分:0)

连接超时表示无法到达您提供的目的地(IP地址)。

这可能是因为:

  • 您要连接的服务器受防火墙限制
  • 您使用的IP地址和/或端口不正确
  • 服务器本身目前已关闭。