spfalz/tnsparser

用于解析Oracle TNS文件(tnsnames.ora)的类。

1.0.1 2018-06-17 10:46 UTC

This package is auto-updated.

Last update: 2024-09-24 04:49:26 UTC


README

最后更新于 2016-06-02

简介

这个类是为了轻松解析Oracle TNS文件而构建的,主要为了我自己的OIS2应用程序能够自动检测TNS名称。它遵循BSD许可协议,所以你可以随意使用它,但请保留版权声明,谢谢!

这个类接收一个tnsnames.ora文件,将其解析到所有组件,并返回一个关联数组,包含所有解析数据,通过TNS名称索引。

由于TNS名称内部可能指定了多个组件,因此返回的数组值也是数组。以下是一个结果数组的示例

Array
(
    [ORADEV] => Array
        (
            [PROTOCOL] => Array
                (
                    [0] => TCP
                )

            [HOST] => Array
                (
                    [0] => 192.168.255.2
                )

            [PORT] => Array
                (
                    [0] => 1521
                )

            [SERVER] => Array
                (
                    [0] => DEDICATED
                )

            [SERVICE_NAME] => Array
                (
                    [0] => ORADEV.LOCAL
                )
        )
)

这是以下原始TNS条目的解析结果

ORADEV =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.255.2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORADEV.LOCAL)
    )
  )

这个发行版提供了一个从Oracle文档中取出的示例,包含多个主机指定,因此你可以确切地看到这一切是如何工作的。

用法

使用很简单,从类中创建一个新的实例,并使用包含你的Oracle tnsnames.ora文件路径的公共方法 "ParseTNS()",即

$TNS = new TNSParser;
$rc = $TNS->ParseTNS('/opt/oracle/product/11.2/network/admin/tnsnames.ora');
print_r($rc);

如果发生错误,该方法会抛出异常,因此你应该使用try/catch块来处理错误。

结语

我已经成功测试了这个类与多个不同且相对复杂的TNSnames文件,然而,没有任何软件是完全没有错误的,所以如果你发现错误或对这个类有改进的想法,你可以自己修改,或者可以自由地在我的主页上联系我,主页地址如下

http://www.saschapfalz.de

没有更多要说的了,我怀疑没有人会真正看到这个文件的最后,所以继续编码吧:D