下一页 上一页 目录

7. TAS 和 ODBC

7.1 Solaris

Solaris 版 Tango 包含了 Merant ODBC 驱动程序包,Tango 可以使用它连接到各种数据库,例如 Informix、Sybase、Oracle,以及现在的 Microsoft SQL Server。

`.odbc.ini` 文件(见下文)应该位于 Tango 用户帐户的主目录中。它可以存储在其他位置,以便集中管理或其他目的,并可以使用名为 ODBCINI 的环境变量来定位。

7.2 Linux

Linux 版 Tango 2000 包含了 iODBC 驱动程序管理器,并且 Pervasive.SQL for Linux 包含了 Pervasive.SQL 驱动程序。它也可以与 Postgres SQL 和 MySQL 驱动程序一起工作。其他驱动程序可在 http://www.unixodbc.comhttp://www.iodbc.org 找到

`.odbc.ini` 文件(见下文)应该位于 `/usr/local/tango/etc/odbc.ini`,如果同时安装了两者,可以符号链接到 `/usr/local/psql/etc/odbc.ini`。

7.3 odbc.ini 配置文件

驱动程序由一个名为 `.odbc.ini` 的 ini 文件控制(注意文件名前面的句点;在 Solaris 系统上,这是一个隐藏文件)。

该文件包含一个数据源名称列表,后跟一个定义部分。它是一种标准的 INI 文件格式。只要 TAF 使用的 DSN 名称在此文件中列出,并且数据库模式与开发机器上的模式相同,数据库访问就可以透明地工作。

这是一个 `.odbc.ini` 文件的示例,其中包含一个名为 MyOracleDatabase 的 DSN,它指向 TNS 名称为 'LocalOracleDatabase' 的 Oracle 数据库。

[ODBC Data Sources]
MyOracleDatabase=
[MyOracleDatabase]
Driver=/opt/PVSWtango/odbc/lib/VQor815.so
ServerName=LocalOracleDatabase

所有条目至少都有一行 Driver;这指向一个 `.so` 共享对象,它是实际的 ODBC 驱动程序。还会有其他行,具体取决于驱动程序本身;服务器配置、特殊标志等等。请参阅自述文件和 odbchelp.pdf 文件(在 Solaris 上)或特定驱动程序的文档,了解这些设置以及所需的任何环境变量设置。

请注意,ODBC 驱动程序仍然经常需要特定于数据库的客户端软件;例如,ODBC Oracle 驱动程序需要与 Tango 原生 Oracle 连接所需的相同的 Oracle OCI 客户端软件。必须安装 Sybase 客户端软件才能使 Sybase ODBC 驱动程序正常工作,依此类推。同样,请参阅 odbchelp.pdf 文件或驱动程序文档以获取详细信息。

任何想要编写关于配置特定数据库以通过 ODBC 与 Solaris 或 Linux 版 Tango 一起工作的小抄的人,请随时发送给我,它们将被包含在本 HOWTO 中,并完全注明出处。

7.4 Solaris、ODBC 和 Oracle

某些版本的 Oracle 客户端缺少 Oracle ODBC 驱动程序以及 Tango 原生 Oracle 驱动程序所需的关键功能。

检查这种情况的最简单方法是使用 'ivtestlib' 程序尝试加载 Oracle ODBC 驱动程序。成为 Tango 用户,并移动到 $TANGO_HOME/lib。查找带有 'or7'(用于 Oracle 7)或 'or8'(用于 Oracle 8)的驱动程序。根据您的 Tango 版本,完整名称可能是 'IVor714.so' 或 'VQor714.so'。`.so` 之前的最后一个数字是 ODBC 版本。

获得此文件名后,向上移动一个目录,然后进入 'bin' 目录。在那里,使用文件名作为参数执行 'ivtestlib' 程序。


$ cd $TANGO_HOME/odbc/lib
$ ls *or8*
VQor814.so
$ cd ../bin
$ ./ivtestlib ../lib/VQor814.so
Load of ../lib/VQor814.so successful, qehandle is 0xFF24120

如果 Oracle 驱动程序需要修补,您将看到一条长消息,最后说明存在“undefined symbol slpmprodstab”(未定义的符号 slpmprodstab)。这将阻止 Tango 原生 Oracle 连接以及 ODBC 正常工作。在 $TANGO_HOME/odbc/src/oracle 目录中,有一个 readme.ora 文件和两个脚本,一个用于 Oracle 7,另一个用于 Oracle 8。readme 文件详细说明了如何创建一个新的 'libclntsh.so' 文件,它是主要的 Oracle 客户端库。简而言之,请确保已定义 ORACLE_HOME,并为您的 Oracle 版本运行相应的脚本。这将创建 `.so` 文件并默认将其放置到 $TANGO_HOME/odbc/lib 中。然后,确保该路径出现在您的 LD_LIBRARY_PATH 中,在任何对 $ORACLE_HOME/lib 的引用之前。您也可以将 libclntsh.so 文件移动到您的 $ORACLE_HOME/lib 目录,或者在 $ORACLE_HOME/lib/libclntsh.so 和您刚刚创建的文件之间创建一个链接;预先存在的 libclntsh.so 无论如何都是指向另一个库的链接。


下一页 上一页 目录