db2 call level interface develope env

在开发用户下安装基本的DB2客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[mlp@localhost ~] ls
DB2_v10.1fp5_linuxx64_server.tar.gz server
[mlp@localhost ~] cd server/
[mlp@localhost server] ls
db2 db2ckupgrade db2_deinstall db2_install db2ls db2prereqcheck db2setup doc installFixPack
[mlp@localhost server] ./db2_install
DB2 数据库 "Server" 的需求不匹配。版本:"10.1.0.5"。
当前系统上未满足的先决条件的摘要:
DBT3514W db2prereqcheck 实用程序未能找到以下 32 位库文件:"/lib/libpam.so*"。
DBT3514W db2prereqcheck 实用程序未能找到以下 32 位库文件:"libstdc++.so.6"。
DBI1324W 不推荐支持 db2_install 命令。有关更多信息,请参阅 DB2 信息中心。
DBI1244I DB2 的非 root 安装目录 /home/mlp/sqllib
指定下列其中一个关键字以安装 DB2 产品。
AESE
ESE
CONSV
WSE
EXP
CLIENT
RTCL
输入 "help" 以重新显示产品名称。
输入 "quit" 以退出。
CLIENT
DB2 数据库 "Server" 的需求不匹配。版本:"10.1.0.5"。
当前系统上未满足的先决条件的摘要:

DBT3514W db2prereqcheck 实用程序未能找到以下 32 位库文件:"/lib/libpam.so*"。
DBT3514W db2prereqcheck 实用程序未能找到以下 32 位库文件:"libstdc++.so.6"。
DBI1160I 正在执行非 root 安装。
正在初始化 DB2 安装。
要执行的任务总数为:29
要执行的所有任务的总估计时间为:1086 秒
任务 #1 启动
描述:正在检查许可协议的接受情况
估计时间 1 秒
任务 #1 结束
任务 #2 启动
描述:没有 root 用户特权的情况下进行安装时的基本客户机支持
估计时间 3 秒
任务 #2 结束
......
任务 #30 启动
描述:正在注册 DB2 更新服务
估计时间 30 秒
任务 #30 结束
任务 #31 启动
描述:正在更新全局概要文件注册表
估计时间 3 秒
任务 #31 结束
已成功完成执行。
有关更多信息,请参阅 "/tmp/db2_install_mlp.log" 上的 DB2
安装日志。
DBI1272I 要开始使用 DB2 实例 mlp,必须设置 DB2 实例环境,其方法是:在 sqllib 目录中查找 db2profile 或 db2cshrc,也可以对 DB2 实例用户打开新的登录窗口。
说明:
在找到 db2profile(对于 Bourne 或 Korn shell 用户)或者 db2cshrc(对于 C shell 用户)之前无法访问 DB2 实例。
用户响应:
要设置 DB2 实例环境,可采用拥有该 DB2 实例的标识打开新的登录窗口,或者采用拥有该 DB2 实例的标识运行下面的适当命令来查找 DB2 实例环境: . $HOME/sqllib/db2profile source $HOME/sqllib/db2cshrc 其中 $HOME 表示拥有该 DB2 实例的用户标识的主目录。
[mlp@localhost server] ls ~/
DB2_v10.1fp5_linuxx64_server.tar.gz isus server sqllib
[mlp@localhost server]

设置DB2客户端的全局变量
export DB2_HOME=/home/mlp/sqllib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/sqllib/lib64
设置客户端连接远程DB的编目和别名

1
2
3
4
5
6
7
8
9
10
11
12
[mlp@localhost dbconn]db2
(c)CopyrightIBMCorporation1993,2007
CommandLineProcessorforDB2Client10.1.5
db2=> catalog tcpip node MUIP remote 182.207.129.68 server 60000
DB20000I The CATALOG TCPIP NODE command completed successfully.
DB21056W Directory changes maynot beeffective until the directory cache is refreshed.
db2=> catalog database MUIP as test at node MUIP
DB20000I The CATALOG DATABASE command completed successfully.
DB21056W Directory changes maynot beeffective until the directory cache is refreshed.
db2=> terminate
DB20000I The TERMINATE command completed successfully.
[mlp@localhost dbconn]

连接DB数据时,如果操作table时未指定schema则操作的是用户所指定的默认schema下的table。
编目catalog,是在本地或远程建立客户端到服务端的数据库连接的过程。其目的在于获取编目信息,即生成用来访问数据库的目录。系统数据库目录包含一个列表和指针,通过目录可以使DB2能够找到已知的数据库,无论它们是在本地系统上,还是在远程系统上。如果没有编目信息,应用程序就无法连接数据库,所以在使用DB2时必须要先进行编目。
个人理解就是将server端有关数据库的相关信息加载到本地。为何要这样做?原因是部署后的数据库装在服务器端,这个数据库可能在不同的服务器上,现在要操作这个远程数据库,就需要连接到远程数据库。而且要通过一定方式把远程数据库信息获取到本地来,这个过程称为编目。
编目包括两个过程:

  1. 将服务器映射到客户端,即编目节点。
    通过编目节点,DB2在本地的SQLNODIR文件中把远程数据库的服务器信息记录下来,所以编目节点其实就是把远程服务器映射到本地,通过SQLNODIR中的记录能够找到远程服务器和实例,类似于指向远程服务器和实例的地址指针。
  2. 将服务器实例下的数据库映射到客户端,即编目数据库。
    编目数据库后,在本地SQLDBDIR文件中记录远程数据库的信息。

一些编目操作命令:
增加节点编目: db2 catalog tcpip node NODE_NAME remote SERVER_IP server SERVER_PORT
查看节点编目: db2 list node directory
删除节点编目: db2 uncatalog node NODENAME
增加数据库编目: db2 catalog db REMOTE_DB_NAME as DB_ALISE_NAME at node NODE_NAME
查看数据库编目: db2 list db directory
删除数据库编目: db2 uncatalog db DB_ALISE_NAME
C/C++引入DB2 CLI头文件和lib库

坚持原创技术分享,如果觉得文章对你有帮助,给点鼓励更好!