繁体   English   中英

使用PHP 5.4和OCI8检查多个Oracle DB连接

[英]Check multiple Oracle DB conenction using PHP 5.4 and OCI8

我想创建一个简单的网页,使用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处于启动状态,而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情况并继续,但是看起来在这一阶段,break退出了整个代码!

这是完整的代码和结果:

<?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!

问候,

拉尔夫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM