本文将通过数据源 Teradata、Oracle、Netezza 和 IBM® DB2 for Linux, UNIX, and Windows 介绍 Big SQL V3.0 联邦功能。读者应具备一定的数据库系统知识。本文将重点介绍使用 Big SQL V3.0 联邦所需的基本配置。
Big SQL V3.0 联邦(Big SQL V3.0 的一个特性)高度可配置。这里使用的命令语法是一个工作系统的基本设置的简化版本。
回页首
Big SQL V3.0 联邦服务器支持多个数据源,如 表 1 中所示。
表 1. 支持的数据源和版本
数据库管理系统 | 版本 |
---|---|
DB2® | DB2 for Linux, UNIX, and Windows v10.5 |
Oracle | V11g R2 |
Teradata | V12 |
Netezza | V7.2 |
查找已扩展的 BigInsights 开发团队给您带来的重要资源,使用 InfoSphere BigInsights 执行开发需要这些资源。文档、产品下载、实验、代码示例、帮助、事件、专家博客 — 这里一应俱全。您还可以直接联系开发人员。立即与该团队进行交流。
因为数据分析对业务成功至关重要,所以需要能支持数据整合和联邦的数据仓库。
Big SQL(IBM InfoSphere® BigInsights™ 的一部分)是 Hadoop 文件系统的 SQL 接口。它支持存储和处理大量数据。Big SQL 联邦实现了一种混合环境,在该环境中,您可以整合大数据并联合使用来自不同数据源的实时数据。
回页首
联邦服务器的架构很简单。它包含 Big SQL V3.0 引擎、包装器和远程数据库管理系统 (DBMS) 客户端。
该引擎的一个核心元素是优化器(如图 1 所示),它负责基于成本分析来选择联邦查询的执行计划。如果需要的话,优化器还可以通过重写查询使其更高效。优化器将查询工作分布在联邦服务器和数据源上,尽可能提高该流程的成本效益。 runstats
实用程序(默认已开启)会按照每个昵称自动计算查询的成本。
图 1. Big SQL V3.0 的架构
要启用 Big SQL V3.0,您需要提供一个包装器、一个服务器、一个昵称和一个用户映射。
SELECT
操作的授权。出于安全原因,在大多数系统上,具有相同密码的相同的授权 ID 必须存在于所有机器上;因此需要使用用户映射。 完成设置后,可以通过 JSqsh 使用 Big SQL V3.0,操作过程类似于访问 Big SQL 版本的过程。要创建联邦对象,需要拥有 DBADM 授权的授权 ID。
回页首
InfoSphere BigInsights 的安装程序自动安装这些包装器并应用联邦许可。 表 2 中所示的包装器默认情况下包含在目录 $HOME/sqllib/lib/ 中。
表 2. 包装器
数据源类型 | 包装器库 | 辅助文件 |
---|---|---|
DB2 | libdb2drda.so | libdb2drdaF.so libdb2drdaU.so |
Teradata | libdb2teradata.so | libdb2STteradataF.a libdb2teradataU.so |
Oracle | libdb2net8.so | libdb2net8F.so libdb2net8U.so libdb2STnet8F.a |
Netezza | libdb2rcodbc.so | libdb2odbct.so libdb2rcodbcF.so libdb2rcodbcU.so |
回页首
Big SQL V3.0 联邦在默认情况下处于未启用状态,因此不能立即使用它。您可以使用以下命令启用它。
DB2 UPDATE DBM CFG USING FEDERATED YES
必须重新启动数据库,更改才会生效。
对于许多数据源,必须在 db2dj.ini 文件中设置一些变量。如果 db2dj.ini 存在,那么它应当位于 $HOME/sqllib/cfg 中。否则,可以使用任何编辑器创建它。执行更改后,重新加载配置文件并重新启动该实例。
实例配置文件为 $HOME/sqllib/db2profile 或 $HOME/sqllib/db2cshrc,具体情况取决于使用的是 Korn shell 还是 Bourne shell。要重新加载配置文件,可以发出以下命令,并将该文件替换为您的配置文件的名称:
. $HOME/sqllib/db2profile
要重新启动 Big SQL V3.0 联邦服务器的实例,可以运行以下代码:
$HOME/sqllib/libexec/bigsql-ctl stop $HOME/sqllib/libexec/bigsql-ctl start
要确定联邦服务器连接到哪个数据库,必须在联邦服务器系统数据库目录中为远程 DB2 数据库建立目录。
清单 1. 为远程服务器建立目录
DB2 CATALOG TCPIP NODE RMNODE REMOTE MYHOST SERVER 12345
RMNODE
是节点名称。
MYHOST
是远程机器的主机名。
是远程 DB2 服务器运行的服务,通过在远程数据源上设置 svcename
变量来定义。
为该数据库编制目录,如下所示:
清单 2. 为该数据库编制目录
DB2 CATALOG DATABASE RDB2DATA AS DB2DATA AT NODE RMNODE
RDB2DATA
是远程节点上的数据库的名称。
DB2DATA
是本地目录中的数据库的名称。
RMNODE
是节点名称。
重新启动该实例,以便刷新本地目录。
TERADATA_LIB_DIR
。 export TERADATA_LIB_DIR=/opt/teradata/client/lib64
/opt/teradata/client/lib64
是 Teradata 客户端库所在的绝对路径。
djxlinkTeradata
命令。如果该操作成功,则会在 $HOME/sqllib/lib64 目录中创建 Teradata 包装器所需的 libdb2STteradataF.a 文件。 su root <HOME>/sqllib/bin/ djxlinkTeradata
<HOME>
是 Big SQL 的主目录。
TERADATA_CHARSET
设置为数据源上使用的字符集,如下所示: TERADATA_CHARSET=ASCII
ASCII
是 Teradata 数据库使用的字符集。
ORACLE_HOME
设置为 Oracle 客户端安装位置的绝对路径,如下所示: ORACLE_HOME=/opt/oracleclient
/opt/oracleclient
是 Oracle 客户端安装位置的绝对路径。
ORACLE_HOME
,并将 Oracle 客户端库添加到实例配置文件中的 Big SQL 联邦服务器库路径变量 DB2LIBPATH
中,如下所示: export ORACLE_HOME=/opt/csdlclient export DB2LIBPATH=$ORACLE_HOME/lib:$DB2LIBPATH
/opt/oracleclient
是 Oracle 客户端安装位置的绝对路径。
tnsnames.ora
文件的位置从默认目录 $ORACLE_HOME/network/admin 移出,则需要设置 db2dj.ini 文件中的 TNS_ADMIN
变量,如下所示: TNS_ADMIN=/home/bigsql/resources
/home/bigsql/resources
是 tnsnames.ora 文件的位置的绝对路径。
这里给出了一般步骤。有关的更多细节,请查阅 通过 ODBC 驱动程序安装和配置 Netezza 访问 的完整指南。
您可以下载一个完整的包,其中包含 DataDirect ODBC Driver 和 Netezza 客户端。该包包含一个示例 odbc.ini 文件,它描述了 create server
命令上使用的 Netezza 服务器。
ln -sf $HOME/sqllib/bin/odbc.ini $HOME/.odbc.ini
$HOME/sqllib/bin/odbc.ini
是原始的 .ini 文件。
NZ_ODBC_INI_PATH
、 ODBCINI
和 LIBPATH
。 export NZ_ODBC_INI_PATH=$HOME/resources export ODBCINI=$HOME/resources/odbc.ini export LIBPATH=/opt/odbc64v51/lib
$HOME/resources
是 odbc.ini 所在的目录。
$HOME/resources/odbc.ini
是 odbc.ini 文件的路径。
/opt/odbc64/lib
是 ODBC 驱动程序库的绝对路径。
NZ_ODBC_INI_PATH=$HOME/resources ODBCINI=$HOME/resources/odbc.ini LIBPATH=/opt/odbc64v51/lib
DB2LIBPATH
中,如下所示: export DB2LIBPATH=/opt/odbc64v51/lib:$DB2LIBPATH
/opt/odbc64v51/lib
是 ODBC 驱动程序安装位置的绝对路径。
以下代码清单给出了用户在同时使用所有数据源的情况下,可能拥有的一种示例配置。
清单 3. .kshrc 的内容
export ORACLE_HOME=/opt/oracleclient export TERADATA_LIB_DIR=/opt/teradata/client/lib64 export NZ_ODBC_INI_PATH=$HOME/resources export ODBCINI=$HOME/resources/odbc.ini export LIBPATH=/opt/odbc64v51/lib
清单 4. db2dj.ini 的内容
ORACLE_HOME=/opt/oracleclient TNS_ADMIN=/home/bigsql/resources TERADATA_CHARSET=ASCII NZ_ODBC_INI_PATH=/home/bigsql/resources ODBCINI=/home/bigsql/resources/odbc.ini LIBPATH=/opt/odbc64v51/lib
清单 5. 添加到 db2profile 的代码行
export ORACLE=/opt/oracleclient export DB2LIBPATH=$ORACLE_HOME/lib:/opt/odbc64v51/lib
清单 6. tnsnames.ora 的内容
ora11gr2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora11qa.svl.ibm.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ora11qa) ) )
清单 7. odbc.ini 的内容
NZSQL = NetezzaSQL [NZSQL] Driver = /opt/netezza/lib64/libnzodbc.so Description = NetezzaSQL ODBC Servername = netz.ibm.co.uk Port = 5480 Database = DWDB Username = nzuser Password = nzuser
回页首
每种不同的数据源类型都需要一个包装器,因为每个包装器仅与单个库文件有关联。包装器可编写为 C++ 或 Java™ 应用程序。可以将它们视为两个子组件的组合:查询编译器和执行引擎。
对于使用 C++ 编写的包装器,可以将它们作为受信任的应用程序,在数据库引擎中运行它们来提高性能,这种做法支持同时运行编译器和执行引擎。
Java 包装器始终在 栅栏 (fenced mode) 模式下运行。在此模式下,编译器必须在将查询转交给某个外部进程来运行之前完成。但是,此模式的优势是,它允许仅并行运行从不同数据源读取数据的查询。在默认情况下,包装器是在受信任模式下运行的。要将它设置为栅栏模式,可在创建包装器时设置变量 DJ_FENCED
。
CREATE WRAPPER <WRAPPER_NAME> LIBRARY <WRAPPER_FILE> OPTIONS ( <OPTIONS> )
<WRAPPER_NAME>
是一个惟一的包装器名称。
<WRAPPER_FILE>
是包装器库文件。
对于大多数数据源,命令的 options (<OPTIONS>)
部分是可选的。
备注:因为 Netezza 包装器是一个一般性的 ODBC 包装器,所以必须定义 MODULE
选项。两个最相关的选项是:
MODULE
:为 Netezza 创建包装器时的必要选项。可以将它设置为 ODBC 驱动程序库的绝对路径。 DB2_FENCED
:控制包装器将在何种模式下运行:栅栏还是受信任模式。 以下示例展示了如何为每种数据源类型创建包装器。
清单 8. DB2 数据源
CREATE WRAPPER DRDA LIBRARY 'libdb2drda.so'
清单 9. Teradata 数据源
CREATE WRAPPER TERA LIBRARY 'libdb2teradata.so'
清单 10. Oracle 数据源
CREATE WRAPPER ORA LIBRARY 'libdb2net8.so'
清单 11. Netezza 数据源
CREATE WRAPPER NETZ LIBRARY 'libdb2rcodbc.so' OPTIONS(MODULE '/opt/odbc64v51/lib/libodbc.so')
备注:在前面的代码清单中, /opt/odbc64v51/lib/libodbc.so
是 ODBC 驱动程序的绝对路径。
回页首
服务器是指一个远程数据库。服务器定义必须包含服务器的类型、它运行的数据库版本或版本级别、用来与它进行通信的包装器,以及用来执行身份验证的用户和密码。
下一节将介绍每个数据源所需的最少选项和设置 collating_sequence
选项必须使用的值。Big SQL V3.0 联邦服务器仅使用二进制排序。二进制排序对空白很敏感,会区分空字符串与 null 字符串。通过检查数据源排序行为是否以同样方式处理了空白敏感性和 null 字符串,可以确定数据源的排序顺序是否与二进制排序兼容。
CREATE SERVER <SERVER_NAME> TYPE <SERVER_TYPE> VERSION <VERSION> WRAPPER <WRAPPER_NAME> AUTHORIZATION <REMOTE_USER> PASSWORD <USER_PASSWORD> OPTIONS (<SERVER OPTIONS>)
<SERVER_NAME>
是一个惟一的服务器名称。
<SERVER_TYPE>
是数据源类型。
<VERSION>
是数据源。
<WRAPPER_NAME>
是 create wrapper 命令定义的惟一的包装器名称。
<REMOTE_USER>
是一个有效的远程用户。
<USER_PASSWORD>
是 <REMOTE_USER>
的密码。
<SERVER OPTIONS>
定义了所创建的服务器的各个选项。
<SERVER TYPE>
和 <SERVER VERSION>
的值可以在下一节中的各个数据源类型中找到。
DB2 服务器的 <TYPE>
指定为 db2/<SUBTYPE>
,其中 SUBTYPE
是您的平台。DB2 for Linux, UNIX, and Windows 是惟一受支持的平台;因此类型为 db2/udb
。
完全受支持的 <VERSION>
为 10.5。
在空和 null 字符串的处理上,DB2 身份排序的行为与二进制排序相同。它对空白不敏感,因此,它与二进制排序不兼容。
Oracle 兼容性模式下的 DB2 在填补了空白的对比上是兼容的。但在这种模式下,空和 null 字符串被视为相同;因此它与二进制排序不兼容。
要在任一种情况下实现下推 (pushdown),则必须将 COLLATING_SEQUENCE
设置为 N
。
表 3. DB2 for Linux, UNIX, and Windows 选项参考
选项 | 描述 |
---|---|
DBNAME | (始终需要。)指定要用于远程 DB2 数据库初始连接的特定数据库。这个特定的数据库是在环境设置说明中提及的联邦服务器上建立了目录的远程 DB2 数据库的数据库别名。 |
PUSHDOWN | 指定联邦服务器是否允许数据源估算各个操作。有效值为 Y 和 N 。默认值为 Y ;数据源会估算各个操作。 N 告诉联邦服务器发送仅包含具有列名称的 SELECT 的 SQL 语句。 |
COLLATING_SEQUENCE | (如果 PUSHDOWN 被设置为 Y ,则需要)指定数据源是否使用相同的默认排序顺序作为联邦数据库。必须将它设置为 N ,因为 DB2 中目前没有与 Big SQL V3.0 二进制排序兼容的排序。 |
Teradata 服务器的 <TYPE>
为 teradata
。
完全受支持的 <VERSION>
为 12。
Teradata 排序兼容 ANSI。这意味着空字符串会被视为与 null 字符串不同;因此,它与二进制排序兼容,但它对空白不敏感。
要启用下推,必须将 COLLATING_SEQUENCE
设置为 N
。
表 4. Teradata 选项参考
选项 | 描述 |
---|---|
NODE | (始终需要。)指定 Teradata 服务器。可以将它设置为服务器别名、IP 地址或完全限定的域名。 |
PUSHDOWN | 指定联邦服务器是否允许数据源估算各个操作。有效值为 Y 和 N 。默认值为 Y ;数据源会估算各个操作。 N 告诉联邦服务器发送仅包含具有列名称的 SELECT 的 SQL 语句。 |
COLLATING_SEQUENCE | (如果 PUSHDOWN 被设置为 Y ,则需要)指定数据源是否使用相同的默认排序顺序作为联邦数据库。必须将它设置为 N 。 |
Oracle 中的 <TYPE>
为 oracle
。
完全受支持的 <VERSION> 为 11。
Oracle 的对比操作对空白敏感。它甚至拥有与二进制排序兼容的自己的二进制排序方式,但在 Oracle 中,无论采用何种排序,空字符串都会被视为与 null 字符串相同;因此它们不能被视为兼容。
要启用下推,必须将 COLLATING_SEQUENCE
设置为 N
。
表 5. Oracle 选项参考
选项 | 描述 |
---|---|
NODE | (始终需要。)指定 tnsnames.ora 文件中的一个条目 |
PUSHDOWN | 指定联邦服务器是否允许数据源估算各个操作。有效值为 Y 和 N 。默认值为 Y ;数据源会估算各个操作。 N 告诉联邦服务器发送仅包含具有列名称的 SELECT 的 SQL 语句。 |
COLLATING_SEQUENCE | (如果 PUSHDOWN 被设置为 Y ,则需要)指定数据源是否使用相同的默认排序顺序作为联邦数据库。必须将它设置为 N ,因为 Oracle 中目前没有与 Big SQL V3.0 二进制排序兼容的排序。 |
Netezza 的对比操作对空白敏感,而且因为不支持 null 字符串,所以它与二进制排序兼容。
表 6. Netezza 选项参考
选项 | 描述 |
---|---|
NODE | (始终需要。)指定分配给 odbc.ini 文件中定义的 ODBC 数据源的节点名称或系统 DSN 名称。该值是区分大小写的。 |
PUSHDOWN | 指定联邦服务器是否允许数据源估算各个操作。有效值为 Y 和 N 。默认值为 Y ;数据源会估算各个操作。 N 告诉联邦服务器发送仅包含具有列名称的 SELECT 的 SQL 语句。 |
以下代码清单展示如何为各种数据源创建一个服务器。
清单 12. DB2
CREATE SERVER LUWSERV TYPE DB2/UDB VERSION 10.5 WRAPPER DRDA AUTHORIZATION /”db2user/” PASSWORD /”db2user/” OPTIONS (DBNAME 'DB2DATA', PUSHDOWN 'Y', COLLATING_SEQUENCE 'N')
清单 13. Teradata
CREATE SERVER TERASERV TYPE TERADATA VERSION 12 WRAPPER TERA AUTHORIZATION /”terauser/” PASSWORD /”terauser/” OPTIONS (NODE 'TERANODE', PUSHDOWN 'Y', COLLATING_SEQUENCE 'N')
清单 14. Oracle
CREATE SERVER ORASERV TYPE ORACLE VERSION 11 WRAPPER ORA AUTHORIZATION /”orauser/” PASSWORD /”orauser/” OPTIONS (NODE 'TNSNODENAME', PUSHDOWN 'Y', COLLATING_SEQUENCE 'N')
清单 15. Netezza
CREATE SERVER NZSERV TYPE ODBC VERSION 7 WRAPPER NETZ AUTHORIZATION /"nzuser/" PASSWORD /"nzuser/" OPTIONS ( NODE 'NZSQL')
回页首
在 Big SQL V3.0 中,昵称是远程对象(比如一个表或视图)的本地目标。要创建昵称,发出命令的用户必须映射到数据源上的一个有效用户。映射将在下一节中介绍。
以下示例将展示如何为各种实体创建昵称。
清单 16. 显式地为现有表创建昵称
CREATE NICKNAME <LOCAL_NAME> FOR <SERVER>.<SCHEMA>.<REMOTE_NAME>
<LOCAL_NAME>
是位于本地的对象的名称。
<SERVER>
是一个惟一服务器名称。
<SCHEMA>
是对象在远程数据库中创建时所采用的模式。
<REMOTE_NAME>
是对象在远程服务器上的名称。
清单 17. 通过在数据源上创建一个表来显式创建一个昵称
CREATE TABLE <TABLE_NAME> (<COLUMN_DEFINITION>) OPTIONS (REMOTE SERVER <SERVER>, REMOTE_SCHEMA <SCHEMA>)
<TABLE_NAME>
是昵称名称和远程表名称。
<SERVER>
是一个惟一服务器名称。
<SCHEMA>
是该表在创建时将会采用的远程模式。
清单 18. 为 teradata 数据源上现有的表 nicktbl 创建一个昵称
CREATE NICKNAME NICK1 FOR TERASERV.TERAUSER.NICKTBL
清单 19. 在 Netezza 服务器上创建一个表,并隐式地创建昵称
CREATE TABLE "NZTBL1" ("C1" INTEGER , "C2" CHAR(20) ) OPTIONS(REMOTE_SERVER 'NZSERV', REMOTE_SCHEMA 'NZUSER')
回页首
除了昵称(它们特定于表等对象)之外,还可以为用户和数据类型创建映射。
对于 Oracle 等数据源,要求将本地用户映射到远程服务器上的有效用户。
用户映射定义联邦服务器上的用户 ID 和密码与数据源上相应的用户 ID 和密码之间的关联,如下面的代码清单所示。
清单 20. 在联邦服务器与数据源上的用户 ID 和密码之间定义一种关联。
CREATE USER MAPPING FOR <LOCAL_ID> OPTIONS (REMOTE_AUTHID <REMOTE_ID>, REMOTE_PASSWORD <REMOTE_PASSWORD>
<LOCAL_ID>
是一个本地授权 ID。它也可以是特殊寄存器 USER
或 PUBLIC
之一,其中 USER
对应于当前连接到数据库的 ID, PUBLIC
对应于所有有效的授权 ID。
<REMOTE_ID>
是远程数据源中的一个有效的授权 ID。
<REMOTE_PASSWORD>
是 <REMOTE_ID>
的密码。
以下示例展示了如何创建用户映射。
清单 21. 将本地用户 ID foo
映射到 DB2 服务器用户 ID db2user
和密码 db2user
CREATE USER MAPPING FOR foo SERVER LUWSERV OPTIONS (REMOTE_AUTHID 'db2user', REMOTE_PASSWORD 'db2user')
清单 22. 将本地用户 ID orauser 映射到 Oracle 用户 ID orauser 和密码 orauser
CREATE USER MAPPING FOR orauser SERVER ORASERV OPTIONS ( REMOTE_PASSWORD 'orauser')
清单 23. 将当前的授权 ID 映射到 Teradata 用户 terauser
和密码 terauser
CREATE USER MAPPING FOR USER SERVER TERASERV OPTIONS (REMOTE_AUTHID 'terauser', REMOTE_PASSWORD 'terauser')
清单 24. 将所有有效的授权 ID 映射到 Netezza 用户 nzuser
和密码 nzuser
CREATE USER MAPPING FOR PUBLIC SERVER NZSERV OPTIONS (REMOTE_AUTHID 'nzuser', REMOTE_PASSWORD 'nzuser')
数据类型映射将联邦的数据库数据类型与数据源上的数据类型相关联。这些映射可以是正向映射或反向映射,具体情况取决于一种数据类型在从数据源发送或抓取时是否会被转换。
如果本地不存在这种数据类型,或者数据类型不兼容,那么可能有必要建立这种关联。
例如,在使用 Oracle 数据源时:
NUMBER(8,0)
在 Big SQL V3.0 中不是有效的数据类型。可以将它映射到等效的 INT
数据类型。 date
数据类型映射到 local date
数据类型。 数据类型映射可在服务器或昵称级别上创建。
服务器级数据类型映射,应用于所有具有使用某种特定数据类型的数据源的事务。创建一个具有指定的 <TYPE>
的服务器时,默认情况下会创建一些数据类型映射。请参阅默认映射的完整列表。
清单 25. 特定服务器上的映射语法
CREATE TYPE MAPPING <TYPE-MAPPING-NAME> TO/FROM <LOCAL-DATA-TYPE> FROM/TO SERVER <SERVERNAME> REMOTE TYPE <REMOTE-DATA-TYPE>
清单 26. 一种服务器类型上的映射语法
CREATE TYPE MAPPING <TYPE-MAPPING-NAME> TO/FROM <LOCAL-DATA-TYPE> FROM/TO SERVER TYPE <SERVERTYPE> REMOTE TYPE <REMOTE-DATA-TYPE>
<TYPE-MAPPING-NAME>
是映射的惟一名称。
<LOCAL-DATA-TYPE>
是 Big SQL V3.0 中的一个有效的数据类型。
<SERVERNAME>
是使用 create server 命令创建的服务器名称。
<SERVERTYPE>
是服务器类型。
<REMOTE-DATA-TYPE>
是数据源上的一个有效的数据类型。
昵称级映射仅影响包含所映射的列的事务。昵称级映射总是双向的,而且是在特定列上完成的。
清单 27. 通过修改现有昵称来建立映射
ALTER NICKANAME <NICKNAME> SET COLUMN <COLUMN> LOCAL TYPE <TYPE>
<NICKNAME>
是一个现有昵称的名称。
<COLUMN>
是 <NICKNAME>
的列名。
<TYPE>
是一种有效的本地数据类型。
以下代码展示了如何为不同实体建立映射。
清单 28. 将 Oracle 日期映射到所有 Oracle 服务器的本地日期
CREATE TYPE MAPPING MY_ORACLE_DATE FROM LOCAL TYPE SYSIBM.DATE TO SERVER TYPE ORACLE REMOTE TYPE DATE
清单 29. 将日期映射到服务器 LUWOMSERV
(一个使用 Oracle 兼容性模式的 DB2 for Linux, UNIX, and Windows 服务器)的本地日期
CREATE TYPE MAPPING MY_ORACLE_DATE FROM LOCAL TYPE SYSIBM.DATE TO SERVER LUWOMSERV REMOTE TYPE DATE
清单 30. 将昵称 nick1
的 decimal(7,2) 列 dec72 映射到一种双精度数据类型
ALTER NICKNAME NICK1 SET COLUMN dec72 LOCAL DATA TYPE DOUBLE
回页首
SQL20076N The instance for the database is not enabled for the specified action or operation. Reason code = "1". SQLSTATE=0A502
使用以下命令,启用联邦并重新启动服务器:
db2 update dbm cfg using federated yes $BIGSQL_HOME/sqllib/libexec/bigsql-ctl stop $BIGSQL_HOME/sqllib/libexec/bigsql-ctl start
SQL5182N A required environment variable, "ORACLE_HOME", has not been set.
SQL30090N Operation invalid for application execution environment.Reason code = "31".SQLSTATE=25000
执行 “设置与 Oracle 的连接” 下的设置步骤。
使用 Oracle 数据源时,获得以下消息:
SQL1097N The node name was not found in the node directory. SQLSTATE=42720
如果 tnsnames.ora 是在与默认设置不同的位置创建的,则将 db2dj.ini 中的 TNS_ADMIN
变量设置为该位置。
TNS_ADMIN=/home/bigsql/cfgfiles/
/home/bigsql/cfgfiles/
是 tnsnames.ora 文件的绝对路径。