我想创建一个简单的网页,使用PHP 5.4和OCI 8检查我实验室中几个Oracle实例的可用性。
一般情况下,它适用于所有已启动的实例,但如果我有一个实例,该实例是脚本退出并且其他实例未被检查!
让我告诉你我的小代码:
<?php
$c1_ORCL11 = oci_connect("system", "mypassword", 'ORCL11');
$c2_ORCL21 = oci_connect("system", "mypassword", 'ORCL21');
$c3_ORCL23 = oci_connect("system", "mypassword", 'ORCL23');
function check_connect ($conn, $sid)
{
if (!$conn) {
$m = oci_error();
echo $m['message'], "\n";
break;
}
else {
print "$sid: Connected to Oracle!<BR>";
}
// Close the Oracle connection
oci_close($conn);
}
check_connect($c1_ORCL11,'ORCL11');
check_connect($c3_ORCL23,'ORCL23');
check_connect($c2_ORCL21,'ORCL22');
?>
实例ORCL11和ORCL21为UP,ORCL23为DOWN。如果我执行代码,我得到以下输出:
ORCL11: Connected to Oracle!
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
我的想法是获得“ORCL21:连接到Oracle!”,但如果我无法连接到实例,代码将退出。如果我将订单更改为:
check_connect($c1_ORCL11,'ORCL11');
check_connect($c2_ORCL21,'ORCL21');
check_connect($c3_ORCL23,'ORCL23');
我得到以下输出:
ORCL11: Connected to Oracle!
ORCL21: Connected to Oracle!
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
如果我将订单更改为:
check_connect($c3_ORCL23,'ORCL23');
check_connect($c1_ORCL11,'ORCL11');
check_connect($c2_ORCL21,'ORCL21');
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
所以,如果我有一堆实例并且列表中的第一个是DOWN,那么即使有UP并且正在运行,其他实例也不会显示在我的网页上:-(
任何想法如何解决这一问题?
在此先感谢您的帮助!
问候,
拉尔夫
在发布问题之后,我看到了我的错误...很奇怪,在几个小时之前看了一眼并没有找到它......无论如何......在删除“休息”之后它工作得很好if案例中的命令。我的假设只是突破if的情况并继续,但看起来这个阶段退出整个代码!
这是完整的代码和结果:
<?php
$c1_ORCL11 = oci_connect("system", "<mypasswd>", 'ORCL11');
$c2_ORCL21 = oci_connect("system", "<mypasswd>", 'ORCL21');
$c3_ORCL23 = oci_connect("system", "<mypasswd>", 'ORCL23');
function check_connect ($conn, $sid)
{
if (!$conn) {
$m = oci_error();
echo "$sid: ", $m['message'], "<BR>";
//break;
}
else {
print "$sid: Connected to Oracle!<BR>";
}
// Close the Oracle connection
oci_close($conn);
}
check_connect($c3_ORCL23,'ORCL23');
check_connect($c1_ORCL11,'ORCL11');
check_connect($c2_ORCL21,'ORCL21');
?>
输出:
ORCL23: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORCL11: Connected to Oracle!
ORCL21: Connected to Oracle!
问候,
拉尔夫