您的位置:首页 > 运维架构 > Linux

老孟 DB2 V9.7 ESE(二)实例及DB创建连接 基于centOS 6.4

2013-11-20 13:00 387 查看

1.概念

1.1全局图



1.2版本

同一台计算机可以安装多个版本DB2程序,就是可以存在不同版本的DB2实例。

1.3实例

实例是逻辑数据库管理器环境,是管理数据库,辅助数据库用滴。

实例可以包含多个数据库

每台服务器可以有多个实例

用途:实例1开发,实例2生产

每个实例有SYSADM、SYSCTRL、SYSMAINT角色,拥有不同用户。说白了就是完全没关系的。

每个实例可以定义不同的TCPIP连接端口。就是说,你要远程连接DB2数据库,需要通过实例连接。实例1下有DB1 DB2 DB3,那么这三个数据库都通过一个端口通信。说白了就是提供的外部连接服务在实例上

实例建立好后有个目录,sqllib,这个目录包含数,节点目录,节点配置文件,调试信息(大名鼎鼎的db2diag.log)。

节点编目信息:./sqllib/sqlnodir/

数据库编目信息:./sqllib/sqldbdir

分区配置文件:/sqllib/db2nodes.cfg

调试信息文件:./sqllib/db2dump/db2diag.log

实例也包含据库管理器的配置文件,系统数据库目录,比如说在这个实例中建立一个数据库,那么会在指定的数据库目录下生成一个实例名的目录(实例名与实例用户相同,比如说db2inst1),这个目录下会有真正的数据库目录 NODE0000 ....

1.4数据库

有表、表空间、缓冲池、模式、约束、索引、序列、触发器、视图等

1.5DAS 

管理服务器。比如说其他机器想用控制台自动搜索网络中存在的实例,DAS会暴露出本地拥有的实例内容。当然还有一些其他功能,比如说HADR环境下或者分区环境下,每台计算机都需要安装DAS,用作通信协调。每台计算机仅存在一个DAS,不管是否有多个不同版本的实例存在,DAS管理当前版本(建立DAS程序的DB2产品版本)以下的实例。换句话说,单机实例数据库实验不需要这个。

2关于DB2用到的用户

生产系统一般有3个用户

db2inst1:实例用户。实例拥有者,默认拥有SYSADM权限

dasusr1:das用户。das拥有者

db2fenc1:fenc用户。用来执行用户自定义存储过程和用户自定义函数的用户

为了测试,我们暂时仅仅建立一个用户

useradd db2inst1

passwd db2inst1

3创建实例

[root@centos-0 ~]# cd /opt/ibm/db2/V9.7/instance/
[root@centos-0 instance]# ./db2icrt -u db2inst1 db2inst1
DBI1070I  Program db2icrt completed successfully.


这样在你机器上的第一个实例就创建完毕了,你可以su - 到db2inst1

在db2inst1 用户根目录下就会有个sqllib的目录,这个和概念中的实例是匹配的

3.1查看版本

你可以执行db2level 查看当前的实例版本

[root@centos-0 instance]# su - db2inst1
[db2inst1@centos-0 ~]$ db2level
DB21085I  This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and DB2 code release "SQL09078" with level
identifier "08090107".
Informational tokens are "DB2 v9.7.0.8", "s130316", "IP23433", and Fix Pack
"8".
Product is installed at "/opt/ibm/db2/V9.7".


3.2实例的重要配置

你可以通过db2 get dbm cfg 查看实例的配置,这里面有个重要的参数

TCP/IP Service name                          (SVCENAME) =
这个是指实例启动外部连接监听的服务端口。比如说我用java 程序,db2的driver type4 进行连接的时候,需要制定这个端口,连接URL应该这样写
ds = new BasicDataSource();
ds.setDriverClassName("com.ibm.db2.jcc.DB2Driver");
ds.setUsername(dbuser);
ds.setPassword(dbpwd);
ds.setUrl("jdbc:db2://" + dbip + ":" + dbport + "/" + dbname);
其中的dbport就是这个svcname,dbname 是要连接的数据库名称

可以通过如下命令更改SVCENAME值,重启实例后生效

db2 update dbm cfg using svcename 50000


就是说实例启动后,会开通50000端口上的监听。这个值也可以是一个字符串,字符串需要在/etc/services中定义,比如说

DB2_custPort        50000/tcp
db2 update dbm cfg using svcename DB2_custPort


3.3用户的重要配置

如果需要从实例用户直接连接实例,那么需要设置DB2的通信方式

db2set DB2COMM=TCPIP


任何时候用户都可以通过db2set命令查看当前实例的db2set情况

3.4实例的启动

配置好实例的启动端口和实例用户的通信方式后,这个实例就可以启动了

[db2inst1@centos-0 ~]$ db2start
11/20/2013 09:16:39     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.


3.5实例的停止

实例可以通过如下命令停止

[db2inst1@centos-0 ~]$ db2stop
11/20/2013 09:17:15     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.


如果实例在停止之前,还有人在连接(其他备份等情况暂不考虑),那么会提示

[db2inst1@centos-0 ~]$ db2stop
11/20/2013 09:18:09     0   0   SQL1025N  The database manager was not stopped because databases are still active.
SQL1025N  The database manager was not stopped because databases are still active.


这个时候会有三中方式停止

1、客户端(连接的客户端)发起,中断连接,等待所有连接资源释放后执行db2stop

2、强制关闭:db2stop force,不保证现有事务的完整性

3、服务端发起停止应用后,执行db2stop 。就是可以通过执行db2 force applications all 命令终止应用,这个终止不是马上终止,是指客户端事务完成后终止,例如

[db2inst1@centos-0 ~]$ db2 force applications all
DB20000I  The FORCE APPLICATION command completed successfully.
DB21024I  This command is asynchronous and may not be effective immediately.

[db2inst1@centos-0 ~]$ db2stop
11/20/2013 09:21:25     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
哈哈哈,实例我们准备好了

4创建DB

接下来实例是管理用的,真正我要用的是数据库,别急,马上,咱来最简单的

[root@centos-0 ~]# su - db2inst1.
[db2inst1@centos-0 ~]$ db2start.
11/20/2013 09:23:03     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful
[db2inst1@centos-0 ~]$ db2 create db firstdbDB20000I  The CREATE DATABASE command completed successfully.


这个时间可能会有那么一点点长,毕竟需要建立数据库表空间文件、容器、缓冲池、日志文件等好,我的第一个DB已经创建好了。

5连接DB

db2inst1 实例用户下

db2 connect to firstdb
   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.8
 SQL authorization ID   = DB2INST1
 Local database alias   = FIRSTDB
释放连接

db2 connect reset


列出当前表

db2 list tables


OK,有实例、库了,接下来建个表呗,db2 CLP命令有两种方式

1、db2 "命令内容"

比如db2 "create table tab1(c1 int)",当然了,之前的db2 "connect to first" 也可以这样

2、先敲入db2 回车,进入db2前导符状态,再输入命令

[db2inst1@centos-0 ~]$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 9.7.8

You can issue database manager commands and SQL statements from the command 
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside 
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => connect to firstdb

   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.8
 SQL authorization ID   = DB2INST1
 Local database alias   = FIRSTDB


6其他客户端连接

有的时候需要在客户机安装DB2管理客户端,以便可以连接数据库,这个时候可以使用远程编目的方法,编目远程节点和数据库信息到本地。图形界面的配置助手操作略。

以下WIN系统安装DB2管理客户端之后的命令编目方式。

当然你也可以在实验的centOS上再增加一个用户db2inst2,新建一个实例,然后在新用户下编目db2inst1的数据库,都是一样的。

6.1编目节点

开始-运行,输入db2cmd,开启db2命令行窗口

db2 catalog tcpip node $nodename remote $ip server $port


6.2编目DB

db2 catalog db $remotedbname as $localdbalias at node $nodename

6.3连接

db2 connect to $localdbname user $username using $passwd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: