【问题标题】:connecting php and oracle 11gr2 express连接php和oracle 11gr2 express
【发布时间】:2016-06-02 02:04:45
【问题描述】:

我一直在做一个需要 oracle 数据库和 php 的新项目,我正在使用 Xampp,我已经下载并安装了所有必要的配置,但是我得到了下面的错误,无论有多少解决方案,这些错误都被证明是忙碌的我在网上找到并尝试过,我该如何解决这个问题

Warning: oci_connect(): ORA-12514: TNS:listener does not currently know of service requested in connect descriptor in C:\xampp\htdocs\Dos\index.php on line 3

Warning: oci_parse() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Dos\index.php on line 6

Warning: oci_error() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Dos\index.php on line 8

Fatal error: in C:\xampp\htdocs\Dos\index.php on line 9

我的连接代码

<?php

$conn = oci_connect('blue','password','localhost/XE');

// Prepare the statement
$stid = oci_parse($conn, 'SELECT * FROM  persons');
if (!$stid) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Fetch the results of the query
print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";


?>

TSNAMES.ORA

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = JACKSOM.COM)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

LISTENER.ORA

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = JACKSON.COM)(PORT = 1522))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

SQLNET.ORA

SQLNET.AUTHENTICATION_SERVICES = (NTS)

我是甲骨文的新手,请帮助我解决这个问题..谢谢

【问题讨论】:

  • $conn = oci_connect('blue','password','XE'); 怎么样?
  • 我收到这些错误警告:oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in C:\xampp\htdocs\Dos\index.php on line 3 致命错误:第 3 行的 C:\xampp\htdocs\Dos\index.php 中超过 30 秒的最大执行时间
  • 我很确定 tnsnames.ora 中 XE 下的 HOST = JACKSOM.COM 应该是 HOST = 127.0.0.1
  • 在通过 PHP 连接之前,您是否检查了与 Oracle 的正常 ODBC 连接是否有效?

标签: php oracle11g oracle-call-interface


【解决方案1】:

您在tnsnames.ora 中的数据库名称是XE,而不是localhost/XE,这意味着您的连接线应该是;

$conn = oci_connect('blue','password','XE');

另外,在tnsnames.ora 中,数据库的主机设置为JACKSOM.COM,并且应该是127.0.0.1 以连接到本地主机上的XE,即;

XE =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = XE)
   )
 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2015-01-26
    • 2018-03-05
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多