`
jackliu2013
  • 浏览: 10694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

db2 常用命令整理一

    博客分类:
  • DB2
阅读更多

实例管理

1.创建实例

什么是实例?

DB2的实例就是一组进程和一组共享内存。可把实例想象为一个数据库的集合,共同运行在一个逻辑服务单元中(同一个端口)。在一个系统中,用户可以创建若干个实例,每一个实例使用各自不同的端口服务于远程应用程序。每一个实例可以包含若干个数据库。

创建实例

创建服务端实例命令:
db2icrt -a server -s ese -p 55555 -u db2fenc db2inst
上述命令创建了实例名为db2inst的服务端实例,实例的端口为55555,实例的受防护用户为db2fenc。

受防护的用户

  • 表示用来运行受防护用户定义的函数 (UDF) 和受防护存储过程的用户的名称,受防护的用户用于在 DB2 数据库所使用的地址空间之外运行用户定义的函数(UDF)和存储过程(UDP)。缺省用户为 db2fenc1,缺省组为 db2fadm1。如果不需要此安全级别(例如,在测试环境中),那么可以使用实例所有者作为受防护的用户
  • 如果您正在 DB2 客户机上创建实例,那么此标志不是必需的。

创建客户端实例命令:
db2icrt -s client ark
上述命令创建了实例名为ark的客户端实例。

2. 启动/停止/列出实例

  • 启动实例。实例创建后,需要通过db2start命令启动才能工作。在UNIX平台下,在实例用户环境下启动实例是:
    db2start
  • 停止实例。停止实例的命令是:
    db2stop
    如果当前实例下某数据库有应用连接,则db2stop会报错,这时可通过 db2 force applications all
    把所有应用连接断开,或通过
    db2stop force
    强制停止实例。
  • 列出实例。可以通过
    db2ilist
    查看某个DB2版本下有哪些实例。

实例停止不了的问题?
当遇到db2stop force无法停止,而db2start也无法启动的问题,在UNIX/LINUX下,可通过db2_kill强制终止所有分区上执行的进程,然后执行ipcclear清理IPC资源,当重新启动数据库时,DB2会做崩溃恢复。

3. 更新实例

实例更新命令是db2iupdt,一般在打补丁或版本升级时使用。db2iupdt命令需要root用户执行,执行前需要首先停止实例。

4. 删除实例

删除实例的命令是db2idrop,使用root用户执行,删除前必须停止实例。注意:删除实例并不会删除实例下的数据库。

1. db2stop force 
2. cd /opt/ibm/db2/V9.7/instance 
3. ./db2idrop db2inst

5. 实例参数

每个实例都有一个配置参数文件用于控制实例相关的参数,如诊断路径,监控开关,安全相关的控制及服务端口号等。通过db2 get dbm cfg命令查看实例参数,以下对一些重要的参数进行来标注:
实例参数1

实例参数2

实例参数3

数据库管理

1.数据库结构

创建完实例后,就可以创建数据库,一个实例可以包含多个数据库,但一个数据库只能归属于一个实例。每个数据库是由一组对象构成的,如表,视图,索引 等。表是二维结构,由一些行和列构成,表数据存放在表空间里,表空间是数据库的逻辑存储层,每个数据库包含多个表空间,每个表空间只能归属于一个数据库。 从实例->数据库->表空间->表构成了DB2的逻辑层次关系,从物理存储上,每个表空间由一个或多个容器构成,容器映射到物理存储, 容器可以是目录,也可以是文件或裸设备,每个容器只能属于一个表空间。根据数据的管理方式,表空间分为系统管理(SMS)和数据库管理(DMS)。 DB2将表和索引数据存在页里(PAGE),页是DB2最小的物理分配单元,表中每行数据只能包含在一页,不能跨页。DB2支持的页大小共4 种:4K,8K,16K和32K,假定一行数据大小是20K,那么需要的页的大小是32K。 每个表空间是由一个或多个容器构成的,表空间仅仅是逻辑存储层,具体的数据是存在容器里。容器是由多个extent构成的。 表空间->容器->extent->page就构成了DB2的存储模型。

2.创建数据库

db2 "create database zdb automatic storage yes on /db2auto dbpath on '/db2path' using codeset utf-8 territory cn collate using system";

DBPATH ON : 表示数据库创建目录
USING CODESET codeset TERRITORY territory : 表示数据库编码集(codeset)和区域(territory)。数据库一旦创建,编码就无法改变。

3.删除数据库

db2 drop database

表空间管理

缓冲池了解

创建完数据库后,就需要我们来创建表空间了。在创建表空间前,我们先了解下缓冲池。

缓冲池指的是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。每个 DB2 数据库都必须具有一个缓冲池。

每个新数据库都定义了一个称为 IBMDEFAULTBP 的缺省缓冲池。可以使用 CREATE BUFFERPOOL、DROP BUFFERPOOL 和 ALTER BUFFERPOOL 语句来创建、删除和修改缓冲池。SYSCAT.BUFFERPOOLS 目录视图访问数据库中所定义的缓冲池的信息(具体参数可baidu or google)。

首次访问表中的数据行时,数据库管理器会将包含该数据的页放入缓冲池中。这些页将一直保留在缓冲池中,直到关闭数据库或者其他页需要使用某一页所占用的空间为止。缓冲池中的页可能正在使用,也可能没有使用,它们可能是脏页,也可能是干净页:

  • 正在使用的页就是当前正在读取或更新的页。为了保持数据一致性,数据库管理器只允许一次只有一个代理程序更新缓冲池中的给定页。如果正在更新某页,那么它正在内一个代理程序互斥地访问。如果正在读取该页,那么多个代理程序可以同时读取该页。
  • “脏”页包含已更改但尚未写入磁盘的数据。
  • 将一个已更改的页写入磁盘之后,它就是一个“干净”页,并且可能仍然保留在缓冲池中。

简单点说:缓冲池是把存储在磁盘中的数据缓存起来,便于我们访问数据,提高应用程序对数据库的访问速度。

缓冲池和表空间关系

  • 每个表空间都与一个特定的缓冲池相关。IBMDEFAULTBP 是缺省缓冲池。要使另一个缓冲池与表空间相关,那么该缓冲池必须存在并且它们具有相同的页大小。关联是在使用 CREATE TABLESPACE 语句创建表空间时定义的,但以后可使用 ALTER TABLESPACE 语句更改此关联。
  • 缓冲池页大小。缺省缓冲池的页大小是在使用 CREATE DATABASE 命令时设置的。此缺省值表示所有将来 CREATE BUFFERPOOL 和 CREATE TABLESPACE 语句的缺省页大小。如果在创建数据库时不指定页大小,那么缺省页大小是 4 KB。
    注: 如果确定数据库需要 8 KB、16 KB 或 32 KB 的页大小,那么必须至少定义一个具有相匹配的页大小并且与数据库中的表空间相关联的缓冲池。

创建缓冲池
db2 "create bufferpool bp32k size 10000 pagesize 32k"
创建一个名为bp32k的缓冲池,包含10000页,页大小为32k。

建立数据库时,DB2会创建三个默认的表空间。

  • 系统表空间(system tablespace),用来存储系统表,也就是数据字典的信息,一个数据库只能有一个系统表空间
  • 临时表空间(temporary tablespace),用来保存语句执行时产生的中间临时数据,如join,排序等操作都可能产生一些临时数据
  • 用户表空间(user tablespace),用来存储表,索引,大对象等数据
  • 只有建库时启用了automatic storage yes,表空间才支持自动存储管理
  • 创建缓冲池时,size表示页数,pagesize表示页大小,size*pagesize就是缓冲池的内存大小

2.表空间创建

#!/bin/bash 
# connect to db 
db2 connect to zdb; 
DMS="managed by database"; 
STMP_TBSP="temporary tablespace"; 
UTMP_TBSP="user temporary tablespace"; 
LARG_TBSP="large tablespace"; 
# 关闭文件系统缓存,减少系统开销,因为已使用bufferpool缓存数据 
NFSC="no file system caching"; 
db2 "create $LARG_TBSP tbs_dat pagesize 32k $DMS using(FILE '/db2tbsp/zdb/dat_1' 10240M) bufferpool bp32k $NFSC"; 
db2 "create $LARG_TBSP tbs_idx pagesize 32k $DMS using(FILE '/db2tbsp/zdb/idx_1' 5120M) bufferpool bp32k $NFSC"; 
db2 "create $STMP_TBSP tbs_tmp pagesize 32k $DMS using(FILE '/db2tbsp/zdb/tmp_1' 5120M) bufferpool bp32k $NFSC"; 
db2 "create $UTMP_TBSP tbs_utmp pagesize 32k $DMS using(FILE '/db2tbsp/zdb/utmp_1' 5120M) bufferpool bp32k $NFSC";
 

3.表空间查看

常用的表空间监控方法:

# 显示每个表空间的最核心的信息 简单,直观 
db2 list tablespaces [show detail] 
# 显示表空间容器的相关信息 
db2 list tablespace containers for [show detail] 
# 显示表空间的配置信息、使用情况和容器信息 
db2pd -d tablespaces 
# 显示的信息比list tablespaces更全面,比如是否启用了自动存储功能,以及表空间map信息 
db2 get snapshot for tablespaces on 
# 通过查询管理视图 来查看表空间信息 
db2 "select * from sysibmadm.snaptbsp" db2 "select * from sysibmadm.snapcontainer"

4.表空间修改

表空间更改。对于DMS表空间,提供了Add用来增加新的容器,Drop删除容器,Extend用来扩展已有容器大小,Reduce用来缩减已有容 器大小,Resize重新设定容器大小。对于Add和Drop操作,表空间容器间会发生数据重新平衡(Rebalance)。对于Reduce和 Resize操作,需要确保更改后的表空间容器有足够的空间,否则DB2会拒绝该操作。当遇到DMS表空间满的情况时,根据存储空间和对运维的影响,有以 下三种方案:

  • 如果表空间容器对应的存储中还有未分配空间,可通过alter tablespace的extend或resize选项扩展已有表空间容器的大小。下例是在每个容器上扩展了50GB:
    db2 "alter tablespace tbs_dat extend (file '/db2tbsp/zdb/dat_1' 10240M , file /db2tbsp/zdb/dat_2' 50G ) "

  • 如果表空间容器对应的存储中没有剩余空间时,可通过alter tablespace的add选项增加新的容器。需要注意的是:通过add增加容器会在容器间进行数据Reblance,即数据重新平衡。如果数据量很 大,Reblance的时间会很长,对系统性能会造成很大影响。下例增加一个新容器,表空间发生reblance
    db2 "alter tablespace tbs_dat add (file '/db2tbsp/zdb/dat_3' 50G ) "

  • 通过alter tablespace begin new stripe set选项。Begin new stripe set选项是当已有容器使用完后,再使用新增加的容器。
    db2 "alter tablespace tbs_dat begin new stripe set (file '/db2tbsp/zdb/dat_3' 50G ) "

5.表空间删除

db2 drop tablespace

参考

《DB2数据库最佳管理实践》

http://www.dblotus.com

分享到:
评论

相关推荐

    DB2常用命令集

    这是整理DB2常用命令集,包括了DB2数据库常用的命令简介

    db2 常用命令集合

    刚整理不久的db2常用命令集合,特地拿出来和大家一起分享一下

    db2常用命令+常见问题处理

    这份文档是我学习db2整理的资料,里面包含一些db2常用命令和常见问题的处理方法。希望对大家有所帮助。

    整理DB2常用命令下载

    本资料里面总结了DB2常用命令·对初学DB2的人来说是个很好的资料·

    db2常用命令

    db2常用命令,精心整理,内容丰富

    Linux系统重启db2数据库命令实例详解.docx

    Linux系统db2数据库常用命令 Linux系统重启db2数据库命令实例详解全文共4页,当前为第2页。 Linux系统重启db2数据库命令实例详解全文共4页,当前为第2页。 启动数据库: 启动db2服务:db2start 激活数据库实例:db2 ...

    db2常用操作命令大全

    db2常用操作命令大全,本人整理可用,不用客气

    db2 常用命令(包含数据库的备份与恢复)

    非常全面的db2命令行参数整理,感兴趣的朋友可以学习一下。

    DB2学习资料以及常用命令

    DB2学习资料以及常用命令的整理和总结!

    DB2的命令大全

    精心收集整理的DB2 常用命令大全。 作为工具用查询。

    db2 个人独家整理

    db2教程-DB2常用傻瓜问题1000问; db2教程-db2数据库的备份和恢复; db2教程-DB2优化; db2教程-DB2中的限制; db2教程-我用DB2这些年; 等等...有关很多DB2知识全汇,下载的朋友只希望对你们有所帮助,也不枉我辛苦整理.

    DB2常用命令

    DB2数据库操作需要掌握一些常用的命令,该文档为读者整理一些常用的命令非常实用,希望对读者有帮助

    DB2基本命令 实例管理和常用dml

    12.整理表 db2 connect to o_yd user db2 using pwd db2 reorg table ydd db2 runstats on table ydd with distribution and indexes all 13.导出表数据 db2 export to c:\dftz.txt of del select * from dftz...

    Linux系统怎么用命令重启db2数据库.docx

    Linux系统db2数据库常用命令 Linux系统怎么用命令重启db2数据库全文共4页,当前为第2页。 Linux系统怎么用命令重启db2数据库全文共4页,当前为第2页。 启动数据库: 启动db2服务:db2start 激活数据库实例:db2 ...

    Oracle数据库学习指南

    1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. ...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制...

    RMAN测试演练即讲解

    RMAN学习测试整理1 20121219 by Apollo 一、 Oracle数据库的备份分为物理备份和逻辑备份。今天测试整理下物理备份Rman,也就是oracle的恢复管理器(Recovery Manager)。 毕竟逻辑备份是不能实现时间点恢复的,所以...

    asp.net知识库

    最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的...

Global site tag (gtag.js) - Google Analytics