首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OCI8连接到Oracle18c数据库

用OCI8连接到Oracle18c数据库
EN

Stack Overflow用户
提问于 2019-01-25 19:31:46
回答 2查看 1.8K关注 0票数 0

我已经建立了一个Oracle 18c数据库,并试图从php文件连接到它,但是当我运行一个简单的连接测试时,我会收到一个服务器错误,它似乎无法连接。我运行了print_r(getLoaded_extensions());,从输出数组中可以看出,我目前没有按我的意愿使用oci8扩展。我的连接测试文件包含以下内容

代码语言:javascript
复制
#!/usr/local/bin/php
<?php
putenv("ORACLE_HOME=/usr/lib/oracle/18.3/client64")

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.*.**)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;

    if($c = OCILogon("username", "password", $db))
    {
        echo "Successfully connected to Oracle.\n";
        OCILogoff($c);
    }
    else
    {
        $err = OCIError();
        echo "Connection failed." . $err[text];
    }

我不确定是否将putenv()设置为oci.dll文件的正确位置,或者是否需要首先安装扩展名。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-05 14:47:56

既然您说您检查了当前使用的扩展,并且OCI8不存在,我将继续安装该模块,并在您的服务器上启用它。

票数 1
EN

Stack Overflow用户

发布于 2019-01-25 22:44:34

很可能,18c默认安装会创建一个名为ORCL和PDB1 (可插拔DB )的容器DB (CDB)。运行lsnrctl以查找创建的服务。然后,在DB连接中,使用service_name代替SID进行连接。在lsnrctl的输出中可以看到service_name的值。

举例说明。

代码语言:javascript
复制
 $db = "(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = pdb1.domain.com)
        )
      )" ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54371729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档