使用 OCI8 连接到 Oracle 18c 数据库
Connecting to Oracle 18c Database with OCI8
我已经设置了一个 Oracle 18c 数据库并试图从一个 php 文件连接到它,但是当我 运行 进行一个简单的连接测试时,我收到一个服务器错误,但它不能'似乎没有联系。我 运行 print_r(getLoaded_extensions());
并且从输出数组中它显示我目前没有按照我的意愿使用 oci8 扩展。我的连接测试文件包含以下
#!/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 文件的正确位置,或者我是否需要首先安装扩展。谢谢
最有可能的是,18c 默认安装会创建一个名为 ORCL 和 PDB1(可插拔数据库)的容器数据库 (CDB)。
运行 lsnrctl stat 查找创建的服务。
然后,在数据库连接中,使用 service_name 而不是 SID 进行连接。 service_name的值可以在lsnrctl stat
的输出中看到
示例。
$db = "(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.domain.com)
)
)" ;
既然你说你检查了你当前使用的扩展并且 OCI8 不存在,我会继续安装模块并在你的服务器上启用它
我已经设置了一个 Oracle 18c 数据库并试图从一个 php 文件连接到它,但是当我 运行 进行一个简单的连接测试时,我收到一个服务器错误,但它不能'似乎没有联系。我 运行 print_r(getLoaded_extensions());
并且从输出数组中它显示我目前没有按照我的意愿使用 oci8 扩展。我的连接测试文件包含以下
#!/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 文件的正确位置,或者我是否需要首先安装扩展。谢谢
最有可能的是,18c 默认安装会创建一个名为 ORCL 和 PDB1(可插拔数据库)的容器数据库 (CDB)。 运行 lsnrctl stat 查找创建的服务。 然后,在数据库连接中,使用 service_name 而不是 SID 进行连接。 service_name的值可以在lsnrctl stat
的输出中看到示例。
$db = "(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = patronus.domain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.domain.com)
)
)" ;
既然你说你检查了你当前使用的扩展并且 OCI8 不存在,我会继续安装模块并在你的服务器上启用它