大多数据库的设计与管理方式是相通的。DB2与Oracle的结构与管理维度比较类似,核心在于Instance与database的管理。 这里迅速回忆一下:

一. DB2中OS,Instance,Database的关系:

1. “环境变量”有3个层级,OS level ,DB2 Global level ,DB2 Istance level.   其中后两者可配置的参数完全一致,但是以-g  -i 区分,配置工具为 db2set.

2. DB2 配置参数是分别在实例级与数据库级配置的,两个级别设置的内容不相同。

3. DB2一个实例可打开多个数据库,一个数据库只能被一个实例打开。 这与Oracle不同

4. Linux下,使用instance owner操作实例,不需要特别环境变量DB2INSTANCE会自动被配置; 而在Windows下,需要set db2instance=db2inst1 ,这与oracle类似。

二. Instance的基本管理

1. 创建实例

Windows:  

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2icrt.exe inst1
DB20000I  The DB2ICRT command completed successfully.

它会在windows service创建一个服务,服务打开则实例开启;这与windows下的oracle类似。但是严格的说,Oracle的服务启动时,实例是不一定被打开的。这是两个概念!

DB2的若干环境变量与配置、实例信息都会记录在注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\IBM\DB2]

Linux:

linux下创建实例之前,必须在操作系统创建一个与实例名相同的操作系统账户。

[root@ibm1 ~]# userdel -r db2inst2

[root@ibm1 ~]# useradd -g db2iadm1 -G db2iadm1,dasadm1 db2inst2
[root@ibm1 ~]# passwd db2inst2
Changing password for user db2inst2.
New UNIX password:
Retype new UNIX password:
Sorry, passwords do not match.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@ibm1 ~]# su - db2inst2
[db2inst2@ibm1 ~]$ ls -l
total 0

[root@ibm1 instance]# ./db2icrt -u db2fenc1 db2inst2
DBI1446I  The db2icrt command is running.

DB2 installation is being initialized.

Total number of tasks to be performed: 4
Total estimated time for all tasks to be performed: 309 second(s)

Task #1 start
Description: Setting default global profile registry variables
Estimated time 1 second(s)
Task #1 end

Task #2 start
Description: Initializing instance list
Estimated time 5 second(s)
Task #2 end

Task #3 start
Description: Configuring DB2 instances
Estimated time 300 second(s)
Task #3 end

Task #4 start
Description: Updating global profile registry
Estimated time 3 second(s)
Task #4 end

The execution completed successfully.

For more information see the DB2 installation log at "/tmp/db2icrt.log.18636".
Required: Review the following log file also for warnings or errors:
"/tmp/db2icrt_local.log.*"
DBI1070I  Program db2icrt completed successfully.

可以发现,操作系统账户db2inst2的环境变量已经悄然变化:
[root@ibm1 instance]# su - db2inst2
[db2inst2@ibm1 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
[db2inst2@ibm1 ~]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# User specific aliases and functions

# The following three lines have been added by UDB DB2.
if [ -f /home/db2inst2/sqllib/db2profile ]; then
    . /home/db2inst2/sqllib/db2profile
fi

可以看见后台进程已经启动:

[db2inst2@ibm1 ~]$ ps -elf | grep db2inst2

.........

4 S db2inst1  3003  3001  0  80   0 - 254280 futex_ 14:07 ?       00:00:05 db2sysc 
........

当前实例占用了50000端口:

[root@ibm1 ~]# netstat -anp | grep db2
tcp        0      0 0.0.0.0:50000               0.0.0.0:*                   LISTEN      3003/db2sysc

2.启动、停止实例

Windows:     db2stop , db2stop force,   db2start

Linux:   db2stop, db2stop force,   db2start

3. 查看,管理实例参数

3.1 查看实例参数: (类似Oracle 的show parameter,支持模糊匹配)

例如,Linux下在实例参数中查看数据库默认安装路径:

[db2inst2@ibm1 ~]$ db2 get dbm cfg | grep DB
 Max number of concurrently active databases     (NUMDB) = 32
 SYSADM group name                        (SYSADM_GROUP) = DB2IADM1
 Default database path                       (DFTDBPATH) = /home/db2inst2
 SSL server keydb file                         (SSL_SVR_KEYDB) =
 SSL client keydb file                           (SSL_CLNT_KEYDB) =

Windows下过滤方式稍有区别:

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 get dbm cfg | find /i "DB"
 Max number of concurrently active databases     (NUMDB) = 8
 Default database path                       (DFTDBPATH) = C:
 TCP/IP Service name                          (SVCENAME) = db2c_DB2
 db2start/db2stop timeout (min)        (START_STOP_TIME) = 10

3.2 改变实例参数,并更新实例配置(很重要):

$db2 update dbm cfg using ......

$ db2 TERMINATE
DB20000I  The TERMINATE command completed successfully.

# ./db2iupdt db2inst1

3.3 重置实例参数:

$db2 reset dbm cfg

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.

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

[root@ibm1 ~]# cat /etc/services | grep db2
ibm-db2        523/tcp                # IBM-DB2
ibm-db2        523/udp                # IBM-DB2
questdb2-lnchr    5677/tcp            # Quest Central DB2 Launchr
questdb2-lnchr    5677/udp            # Quest Central DB2 Launchr
DB2_db2inst1    60000/tcp       #有可能在实例创建时,会自动添加好。
DB2_db2inst1_1    60001/tcp
DB2_db2inst1_2    60002/tcp
DB2_db2inst1_END    60003/tcp


重启db2inst1实例后,可查看到实例端口已经启动

[db2inst1@ibm1 ~]$ db2stop
10/17/2013 17:09:17     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@ibm1 ~]$ db2start
10/17/2013 17:09:23     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@ibm1 ~]$ su -
Password:
[root@ibm1 ~]# netstat -anp | grep db2
tcp        0      0 0.0.0.0:60000               0.0.0.0:*                   LISTEN      24195/db2sysc0

4.让实例随操作系统自动启动

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

5.删除实例

Windows:

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2idrop.exe inst1

Linux:

[root@ibm1 instance]# ./db2idrop db2inst2

三. DAS的基本管理

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

Windows:   das管理主要是db2admin、dasupdt命令

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin stop
SQL4407W  The DB2 Administration Server was stopped successfully.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin start
SQL4406W  The DB2 Administration Server was started successfully.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin creat
SQL4403N  The syntax of the command is invalid.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin create
SQL4405W  The DB2 Administration Server already exists.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin drop                                                  (dropDAS之前,必须先停止它)
SQL4408N  The DB2 Administration Server was not dropped because it is active.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin stop
SQL4407W  The DB2 Administration Server was stopped successfully.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin drop
SQL4402W  The DB2ADMIN command was successful.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin create
SQL4402W  The DB2ADMIN command was successful.

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2admin start
SQL4406W  The DB2 Administration Server was started successfully.

C:\Program Files (x86)\IBM\SQLLIB\BIN>dasupdt.exe
SQL22266N  The DB2 Administration Server is already installed under the current DB2 Copy.

Linux:

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

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

[root@ibm1 instance]# ./dasupdt
DBI1070I  Program dasupdt completed successfully.

[root@ibm1 instance]# ./dasdrop
DBI1070I  Program dasdrop completed successfully.

[root@ibm1 instance]# ./dascrt -u dasusr1
DBI1070I  Program dascrt completed successfully.

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

[root@ibm1 instance]# su - dasusr1
[dasusr1@ibm1 ~]$ db2admin stop
SQL4407W  The DB2 Administration Server was stopped successfully.
[dasusr1@ibm1 ~]$ db2admin start
SQL4406W  The DB2 Administration Server was started successfully.

三. Database的基本管理

1.DB2数据库物理结构与逻辑结构

这几张图非常清晰,主要有以下几点内容:

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 几种

实际上DB2的自动存储类似与Oracle的OMF!

2.创建数据库

db2 CREATE DATABASE TEST1 AUTOMATIC STORAGE YES  USING CODESET UTF-8 TERRITORY US ;
db2 UPDATE DB CFG FOR TEST1 USING AUTO_MAINT ON;
db2 UPDATE DB CFG FOR TEST1 USING AUTO_TBL_MAINT ON;
db2 UPDATE DB CFG FOR TEST1 USING AUTO_RUNSTATS ON;
db2 UPDATE ALERT CFG FOR DATABASE ON TEST1 USING db.db_backup_req SET THRESHOLDSCHECKED YES;
db2 UPDATE ALERT CFG FOR DATABASE ON TEST1 USING db.tb_reorg_req SET THRESHOLDSCHECKED YES;
db2 UPDATE ALERT CFG FOR DATABASE ON TEST1 USING db.tb_runstats_req SET THRESHOLDSCHECKED YES;

 创建数据库后,本地数据库目录结构如下 ,即: <user database path>/<instance path>/NODE0000/SQL00001

db2 => create database mydb1
DB20000I  The CREATE DATABASE command completed successfully.
db2 => quit
DB20000I  The QUIT command completed successfully.
[db2inst2@ibm1 ~]$ ls -l db2inst2/NODE0000/
MYDB1/    SQL00001/ sqldbdir/
[db2inst2@ibm1 ~]$ ls -l db2inst2/NODE0000/
total 12
drwx--x--x 5 db2inst2 db2iadm1 4096 Jul 23 15:50 MYDB1
drwxr-x--- 5 db2inst2 db2iadm1 4096 Jul 23 15:49 SQL00001
drwxrwxr-x 2 db2inst2 db2iadm1 4096 Jul 23 15:49 sqldbdir

[db2inst2@ibm1 SQL00001]$ pwd
/home/db2inst2/db2inst2/NODE0000/SQL00001
[db2inst2@ibm1 SQL00001]$ ls -l
total 1900
-rw-r----- 1 db2inst2 db2iadm1   1024 Jul 23 15:49 db2rhist.asc
-rw-r----- 1 db2inst2 db2iadm1   1024 Jul 23 15:49 db2rhist.bak
drwxr-x--- 4 db2inst2 db2iadm1   4096 Jul 23 15:49 HADR
drwxr-x--- 2 db2inst2 db2iadm1   4096 Jul 23 15:49 LOGSTREAM0000
drwxr-x--x 4 db2inst2 db2iadm1   4096 Jul 23 15:50 MEMBER0000
-rw-r----- 1 db2inst2 db2iadm1  16384 Jul 23 15:50 SQLDBCONF
-rw------- 1 db2inst2 db2iadm1  24576 Jul 23 15:50 SQLOGCTL.GLFH.1
-rw------- 1 db2inst2 db2iadm1  24576 Jul 23 15:50 SQLOGCTL.GLFH.2
-rw-r----- 1 db2inst2 db2iadm1      0 Jul 23 15:49 SQLOGCTL.GLFH.LCK
-rw------- 1 db2inst2 db2iadm1 135168 Jul 23 15:49 SQLSGF.1
-rw------- 1 db2inst2 db2iadm1 135168 Jul 23 15:49 SQLSGF.2
-rw------- 1 db2inst2 db2iadm1 786432 Jul 23 15:50 SQLSPCS.1
-rw------- 1 db2inst2 db2iadm1 786432 Jul 23 15:50 SQLSPCS.2
[db2inst2@ibm1 SQL00001]$ ls -l MEMBER0000/
total 92
drwxr-x--- 3 db2inst2 db2iadm1  4096 Jul 23 15:49 db2event
drwxr-x--- 4 db2inst2 db2iadm1  4096 Jul 23 15:49 HADR
-rw------- 1 db2inst2 db2iadm1   512 Jul 23 15:50 SQLBP.1
-rw------- 1 db2inst2 db2iadm1   512 Jul 23 15:50 SQLBP.2
-rw------- 1 db2inst2 db2iadm1 16384 Jul 23 15:50 SQLDBCONF
-rw-r----- 1 db2inst2 db2iadm1     9 Jul 23 15:50 SQLINSLK
-rw------- 1 db2inst2 db2iadm1 24576 Jul 23 15:50 SQLOGCTL.LFH.1
-rw------- 1 db2inst2 db2iadm1 24576 Jul 23 15:50 SQLOGCTL.LFH.2
-rw------- 1 db2inst2 db2iadm1  8192 Jul 23 15:50 SQLOGMIR.LFH
-rw-r----- 1 db2inst2 db2iadm1     0 Jul 23 15:49 SQLTMPLK

重要文件讲解

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 确保一个数据库只能由数据库管理器的一个实例使用。

查看、修改数据库配置参数:

[db2inst1@ibm1 ~]$ db2 get database configuration  | grep LOG           再没有连接数据库情况下,需要使用db2 get database configuration for sample  | grep LOG
 Catalog cache size (4KB)              (CATALOGCACHE_SZ) = (MAXAPPLS*5)
 Log buffer size (4KB)                        (LOGBUFSZ) = 256
 Log file size (4KB)                         (LOGFILSIZ) = 1000
 Number of primary log files                (LOGPRIMARY) = 3
 Number of secondary log files               (LOGSECOND) = 2
 Changed path to log files                  (NEWLOGPATH) =
 Path to log files                                       = /home/db2inst1/db2inst1/NODE0000/SQL00002/SQLOGDIR/
 Overflow log path                     (OVERFLOWLOGPATH) =
 Mirror log path                         (MIRRORLOGPATH) =
 Block log on disk full                (BLK_LOG_DSK_FUL) = NO
 Block non logged operations            (BLOCKNONLOGGED) = NO
 Percent max primary log space by transaction  (MAX_LOG) = 0
 Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
 Log retain for recovery enabled             (LOGRETAIN) = OFF
 First log archive method                 (LOGARCHMETH1) = OFF
 Options for logarchmeth1                  (LOGARCHOPT1) =
 Second log archive method                (LOGARCHMETH2) = OFF
 Options for logarchmeth2                  (LOGARCHOPT2) =
 Log pages during index build            (LOGINDEXBUILD) = OFF

UPDATE DATABASE CONFIGURATION USING LOGFILSIZ 1001 DEFERRED ;

reset database configuration

在某一实例下,启动与关闭单个数据库:

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

[db2inst1@ibm1 archive1]$ db2 deactivate database sample [use administrator using 123456]
SQL1496W  Deactivate database is successful, but the database was not
activated.
[db2inst1@ibm1 archive1]$ db2 activate database sample [use administrator using 123456]
DB20000I  The ACTIVATE DATABASE command completed successfully.

总结:手动创建实例的几个步骤

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】 管理tablespace 与 container 、buffer pool》

3.删除数据库

db2 drop database test1

【DB2】 Instance Database DAS 基本管理相关推荐

  1. oracle 认证指南 pdf,OCP论证考试指南 1Z0-063 Oracle Database 12c高级管理.pdf

    作 者 :(美)BOB BRYLA著:郭俊凤译 出版发行 : 北京:清华大学出版社 , 2016.05 ISBN号 :7-302-43518-9 页 数 : 420 原书定价 : 68.00 主题词 ...

  2. 如何在 DB2 Universal Database 中暂时禁用触发器(转)

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/0211yip/ 请注意:在阅读本文前请先阅读 免责声明. 简介 有 ...

  3. 网管监控软件Hyperic HQ对DB2数据库的监控和管理

    DB2是IBM的企业级数据库产品. 它支持多种操作系统,能够运行TB级数据库,具有最高的性能和可扩展性. 网管监控软件Hyperic使用DB2的本地客户端接口对数据库引擎的每个实例以及单独的表取得高度 ...

  4. linux 下 db2 常用的命令

    实例管理 1.创建实例 什么是实例? DB2的实例就是一组进程和一组共享内存.可把实例想象为一个数据库的集合,共同运行在一个逻辑服务单元中(同一个端口).在一个系统中,用户可以创建若干个实例,每一个实 ...

  5. DB2 UDB V8.1 管理 学习笔记

    DB2 UDB V8.1 管理 学习笔记 DB2 学习笔记 - AIview.com Last updated on Wednesday, August 24, 2005 Skip to naviga ...

  6. 【北京】线下活动 | Azure SQL Database Managed Instance发布会

    6/12/2019 | 8.30 AM - 1.30 PM 微软大厦一号楼一层故宫会议室 N                                           丹棱街5号 海淀区 北 ...

  7. mysql中数据库database、实例instance、会话session的关系

    1. No suitable driver found for http://127.0.0.1:3306/test jdbc_url错误,jdbc走自己的协议. 正确的路径应该是:jdbc:mysq ...

  8. php查询sql2008数据库操作系统,使用 PHP 进行查询 - Azure SQL Database SQL Managed Instance | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 PHP ...

  9. Linux下DB2数据库安装教程

    最近因为工作需要在学习DB2数据库,本教程讲解DB2数据库在inux下的安装步骤. 安装前请查看 DB2版本和许可证 说明来增加了解,先弄明白改安装什么版本,这里我用的是最新的Express-C版本, ...

最新文章

  1. 语音识别系统及科大讯飞最新实践
  2. deeplearning4j – 分布式DL开源项目
  3. java restful项目打包_构建入门Restful Web服务
  4. Unity Ragdoll 实现死亡效果 心得+坑点总结
  5. linux启动python项目_java项目部署Linux服务器几种启动方式总结经验
  6. 用java计算定积分
  7. wps带阴影的边框怎么设置_wps文字加阴影边框怎么设置
  8. 投资理财启蒙之定投出一个千万富翁?
  9. 最全架构设计实践方法论(一)
  10. 在DX12中使用imgui 鼠标响应问题的解决
  11. 漫画程序猿惯用口头禅
  12. 选课通知 | 北交大《人工智能与大数据应用实战》秋季全校选修课简介!
  13. nginx缓冲区链表chain
  14. 计算机不能启动任务管理器,win10系统无法打开任务管理器怎么办
  15. 幅度响应怎么计算_黄河三角洲地区植被变化及其对气温的响应特征
  16. 《Java SE实战指南》05-07:分隔符(Separators)
  17. 简单的自动化测试模型(python+selenium)
  18. 支付宝支付接口开发———在线扫码支付
  19. Extra中出现的Using index condition到底什么意思?
  20. HtmlParser + HttpClient 实现爬虫

热门文章

  1. 小学计算机教师证面试题目,2018上半年小学信息技术教师资格证面试试题(精选)第二批...
  2. 计算机课程专业术语英文,计算机课程英文翻译
  3. 腾得起 降得住——新时代云安全战略思考
  4. QQ邮箱登录PC布局实战笔记三
  5. 【校招常见算法】暴力法、模拟
  6. Mysql添加虚拟列, 修改虚拟列
  7. 那些未知的“未知设备”(Unknow Services)
  8. 0基础快速入门CSS技术栈(3)—图解详细阐述CSS文字文本样式及综合案例、样式调试工具、快速开发html的emment语法(附详细案例源码解析过程)
  9. python开发cad教程视频_我是编程小白,我想视频学习Python会不会能学会?
  10. 蓝屏0x00000077详解