2015-05-25 158 views
0

我需要连接oracle 11g数据库与我的xampp服务器,我需要本地和远程连接。为此我首先安装了oracle 11g express版和下载的instantclient-basic-nt-11.2.0.4.0,并将提取的文件夹instantclient_11_2置于C:\,然后设置环境变量(系统变量),我的路径值看起来像这样path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2与oracle连接问题(xampp)

然后我从php.ini文件中删除了extension=php_oci8.dllextension=php_oci8_11g.dll之前的;。那么首先我想用我的本地数据库连接:

$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc 
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc 

$conn = oci_connect('system', 'cibl123*#', $tns_turjo); 
if($conn) { 
    echo "connected"; 
} 
else { 
    echo "not"; 
} 

当我通过$tns_ishrak呼应connected但是当我试图访问另一台PC上的Oracle数据库即使用$tns_turjo则呼应not和错误是

Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred 

我也改变了用户名和密码,而连接到另一台电脑。

N.B.在启动Apache后,从php.ini文件启用.dll扩展名后,我在弹出的xampp中发出警告,它是:Module 'oci8' is already loaded

如何解决远程连接问题?

回答

0

您不需要安装InstantClient; Oracle XE包含一个完整的Oracle客户端。

可能有许多原因的远程连接不工作,但最常见的(在我的经验)是:

  1. 您的PC上的防火墙阻止了连接。
  2. 远程PC上的防火墙正在阻止连接。
  3. TNS监听器未在远程PC上运行。
  4. 连接字符串错误。

您可以连接到没有PHP的远程PC吗?您是否通过SQL * Plus或仅仅使用了tnsping命令?


N.B.从php.ini文件中启用.dll扩展名的后,每当我启动Apache,我得到一个弹出的XAMPP这是Module 'oci8' is already loaded

那是相当的警告言自明的:你要加载的模块OCI超过一旦。您应该只启用一个 OCI模块,所以如果你在php.ini文件已经像下面那么这就是问题所在:

extension=php_oci8.dll 
extension=php_oci8_11g.dll 

只有php_oci8_11g.dll应该启用,因为这是你所安装的版本。

+0

@jishan有没有反馈意见?这对你有帮助吗? – timclutton