DB2入门教程笔记(二)

DB2入门教程笔记(二)_第1张图片

创建实例:db2icrt

root@nimei:/opt/ibm/db2/V9.7/instance# ls
common   daslist  dasutil   db2ckupgrade  db2iauto  db2icrt   db2idrop  db2ilist  db2instcfg  db2isetup  db2istrt  db2iupgrade  db2prechk  native
dascrt   dasmigr  db2chkf   db2clpid      db2icknm  db2idbm   db2iexec  db2imchk  db2ipcld    db2isrv    db2iuadm  db2iutil     db2uit
dasdrop  dasupdt  db2ckmig  db2dbmchk     db2ickts  db2idefs  db2iinfo  db2imigr  db2iset     db2istop   db2iupdt  db2iver      disp_msg
root@nimei:/opt/ibm/db2/V9.7/instance# ./db2icrt -u db2fenc1 db2inst1
DBI1070I  Program db2icrt completed successfully.

注意:必须有和实例同名的用户和用户组。

db2inst1@nimei:~$ cat .bashrc
# The following three lines have been added by UDB DB2.
if [ -f /home/db2inst1/sqllib/db2profile ]; then
    . /home/db2inst1/sqllib/db2profile
fi

可以看到实例目录中的配置文件中存在了上面的一段代码

db2inst1@nimei:~$ ps -elf|grep db2inst1
4 S root     14121 12824  0  80   0 - 17706 wait   09:53 pts/12   00:00:00 su - db2inst1
4 S db2inst1 14122 14121  0  80   0 -  7022 wait   09:53 pts/12   00:00:00 -su
4 S root     19054 10784  0  80   0 - 17705 wait   13:46 pts/12   00:00:00 su - db2inst1
4 S db2inst1 19055 19054  0  80   0 -  7024 wait   13:46 pts/12   00:00:00 -su
0 R db2inst1 19855 19055  0  80   0 -  5661 -      13:50 pts/12   00:00:00 ps -elf
0 S db2inst1 19856 19055  0  80   0 -  3985 pipe_w 13:50 pts/12   00:00:00 grep --color=auto db2inst1
4 S root     22774 21617  0  80   0 - 17705 wait   10:31 pts/10   00:00:00 su - db2inst1
4 S db2inst1 22775 22774  0  80   0 -  7024 wait   10:31 pts/10   00:00:00 -su
0 S db2inst1 23379  2667  0  80   0 - 37263 msgrcv 10:32 pts/10   00:00:00 /home/db2inst1/sqllib/bin/db2bp 22775A1004 5 A
注意:ps -e表示列出所有的进程;-l表示长格式显示;-f表示完整格式的显示

由上可知有很多当前实例的进程

root@nimei:/home/db2inst1# netstat -anp | grep db2
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN      10656/db2sysc 0

当前实例的端口是6666

netstat -a表示列出所有的监听的和非监听的套接字,-n表示以数字形式显示地址和端口号;-p表示显示出套接字所属进程的PID

db2inst1@nimei:~$ db2 get dbm cfg|grep db2
 Java Development Kit installation path       (JDK_PATH) = /home/db2inst1/sqllib/java/jdk64
 Diagnostic data directory path               (DIAGPATH) = /home/db2inst1/sqllib/db2dump/
 Size of rotating db2diag & notify logs (MB)  (DIAGSIZE) = 0
 Default database path                       (DFTDBPATH) = /home/db2inst1
 db2start/db2stop timeout (min)        (START_STOP_TIME) = 10
可以查看实例参数,在实例参数中可以查看数据库的默认安装路经

3.4 特别注意:

手动建立的实例并不会像GUI建立的实例那样,会自动设定实例参数。 如果要使实例能够被正确attach,必须设定三个地方:

更改环境变量:

[db2inst1@ibm1 ~]$ db2set DB2COMM=tcpip


更改实例参数

[db2inst1@ibm1 ~]$ db2 update dbm cfg using SVCENAME DB2_db2inst1
DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.

[db2inst1@ibm1 ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.

terminate:断开与数据库的连接

在 /etc/services 确认有与SVCENAME对应的条目

db2inst1@nimei:~$ cat /etc/services|grep db2
DB2_db2inst    60000/tcp
DB2_db2inst_1    60001/tcp
DB2_db2inst_2    60002/tcp
DB2_db2inst_END    60003/tcp
DB2_db2inst1    60004/tcp
DB2_db2inst1_1    60005/tcp
DB2_db2inst1_2    60006/tcp
DB2_db2inst1_END    60007/tcp

可以看到刚才的服务实例已经创建成功

[root@nimei ~]# /opt/ibm/db2/V9.7/instance/db2iauto -on db2inst1

让实例跟随着系统启动一块启动

DAS 是Database Administration Service的缩写,如果某个DB2实例希望被远程管理,那么数据库本地必须配置DAS,才能被远端的Control Center进行注册,类似于Oracle 9i enterprise console中的agent (oracle 9i之后就淘汰了)

linux上DAS的管理员是dasusr1, 属于组dasadm1.

DAS的创建与删除、更新均是由root完成的,基本上都是 /opt/ibm/db2/V10.1/instance/ 下das开头的命令

root@nimei:/opt/ibm/db2/V9.7/instance# groupadd dasusr1
root@nimei:/opt/ibm/db2/V9.7/instance# useradd -m -s /bin/bash -d /home/dasuser1 -g dasusr1 dasuser1
root@nimei:/opt/ibm/db2/V9.7/instance# ./dascrt -u dasuser1
SQL4406W  The DB2 Administration Server was started successfully.
DBI1070I  Program dascrt completed successfully.

linux下启动与关闭DAS需要具有DASADM权限的用户登录操作,因此要使用dasuser1:

dasuser1@nimei:~$ db2admin stop
SQL4407W  The DB2 Administration Server was stopped successfully.

dasuser1@nimei:~$ db2admin start
SQL4406W  The DB2 Administration Server was started successfully.

DB2入门教程笔记(二)_第2张图片

DB2入门教程笔记(二)_第3张图片

DB2入门教程笔记(二)_第4张图片

DB2入门教程笔记(二)_第5张图片

1. 数据库逻辑上有大到小是 instance - database - tablespace - container - extent - datapage

2. container实际上类似于Oracle datafile的概念。一个tablespace可以跨多个container,

3. 其中extent是由连续的datapage组成 (类似Oracle中,extent与block的关系),一个extent不能跨表!是写container的最小单位

4. extentsize 实际上是间接指定其包含多少个datapage

5. datapage是DB2最小IO单位 (类似Oracle 的block),其size类似 Oracle的blocksize,也有4k 8k 16k 32k 几种

数据库操作:

创建数据库后,本地数据库目录结构如下:

db2inst1@nimei:~$ db2 create database mydb1
DB20000I  The CREATE DATABASE command completed successfully.
db2inst1@nimei:~$ ls
db2inst1  examples.desktop  sqllib
db2inst1@nimei:~$ cd db2inst1/
db2inst1@nimei:~/db2inst1$ ls
NODE0000
db2inst1@nimei:~/db2inst1$ cd NODE0000/

重要文件讲解

1. SQLBP.1 和SQLBP.2 包含缓冲池信息。这两个文件互为备份。

2. SQLSPCS.1 和SQLSPCS.2 文件中包含表空间信息。这两个文件互为备份。

3. SQLSGF.1 和 SQLSGF.2 包含与数据库的自动存储有关的存储路径信息,两个文件互为备份。

4. SQLDBCONF 包含数据库配置信息,切勿手动编辑此文件。

5. SQLLOGCTL.LFH 是日志控制文件,崩溃恢复处理过程中使用这些文件的信息确定要在日志中退回多远开始崩溃恢复。

6. DB2RHIST.ASC 历史记录文件及其备份 DB2RHIST.BAK 中包含关于备份,复原,表装入,表重组,表空间改变和其它数据库更改的历史记录。

7. SQLINSLK 确保一个数据库只能由数据库管理器的一个实例使用。

总结:手动创建实例的

1. DB2 Instance Creation
2. Create new entry in /etc/services
3. Update DBM configuration file for TCP/IP
4. Auto start DB2 Instance
5. ReStart DB2 Instance

你可能感兴趣的:(数据库DB2)