当前位置:首页 » 操作系统 » db2数据库管理

db2数据库管理

发布时间: 2023-03-15 12:29:35

1. 如何启动DB2数据库管理器

在一个DB2 实例下,可以创建多个database(具体每个实例下可以创建多少个database,可以通过DB2 GET DBM CFG查看.一旦建立了数据库之后,就可以对其进行操作,然而,在向数据库中建立对象或访问数据库中的对象(数据)之前,必须先知道如何启动和停止数据库.
本小节简单介绍了db2 database通过command line的方式如何实现启动和停止.
激活数据库
如果在database没有激活之前,就在应用中使用connect to database_name或隐式连接,那么应用就必须要进行等待,知道数据库管理器启动了你要连接的数据库.一般第一个应用会引发等待数据库管理器执行数据库启动的所有开销.
我们也可以使用activate database database_name这样的命令启动特定的数据库.这个命令就会免除第一个应用程序连接上来的时候等候数据库初始化所花费的时间。一般情况下,DB2 DBA会提前激活所有必要的数据库.
注意:1)如果发出activate database命令的应用已经与一个database建立了活动的数据库连接,就回返回错误消息.
2)如果需要重新启动(restart)的数据库接受了一个activate database命令,那么这个activate database命令就会象connect to 或隐式连接一样工作.
3)如果数据库配置了
启用的自动重新启动 (AUTORESTART) = ON
那么在activate database命令对其初始化之前,数据库会重新启动.
察看指定数据库的配置参数
--默认
DB2 GET DB CFG FOR study
--分屏显示
DB2 GET DB CFG FOR study | More
--将显示结果存入study.txt 文件中
DB2 GET DB CFG FOR study > study.txt

下面是一个示例,我在当前DB2实例下,创建了3个database,我利用activate命令挨个将他们激活

D:DB2BIN>db2 db2start
DB20000I DB2START命令成功完成。
D:DB2BIN>db2 list database directory
系统数据库目录
目录中的条目数 = 3
数据库 1 条目:
数据库别名 = TEST
数据库名称 = TEST
本地数据库目录 = D:DB2test
数据库发行版级别 = c.00
注释 = test
目录条目类型 = 间接
目录数据库分区号 = 0
备用服务器主机名 =
备用服务器端口号 =
数据库 2 条目:
数据库别名 = BANK
数据库名称 = BANK
本地数据库目录 = D:db2bank
数据库发行版级别 = c.00
注释 = bank
目录条目类型 = 间接
目录数据库分区号 = 0
备用服务器主机名 =
备用服务器端口号 =
数据库 3 条目:
数据库别名 = STUDY
数据库名称 = STUDY
本地数据库目录 = D:db2study
数据库发行版级别 = c.00
注释 = STUDY
目录条目类型 = 间接
目录数据库分区号 = 0
备用服务器主机名 =
备用服务器端口号 =
D:DB2BIN>db2 list active databases
sql1611W “数据库系统监视器”没有返回任何数据。
D:DB2BIN>db2 activate database study
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 0
数据库路径 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 activate database bank
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 0
数据库路径 = D:db2studyDB2NODE0000SQL00001
数据库名称 = BANK
当前连接的应用程序 = 0
数据库路径 = D:db2bankDB2NODE0000SQL00001
D:DB2BIN>db2 activate database test
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 0
数据库路径 = D:db2studyDB2NODE0000SQL00001
数据库名称 = BANK
当前连接的应用程序 = 0
数据库路径 = D:db2bankDB2NODE0000SQL00001
数据库名称 = TEST
当前连接的应用程序 = 0
数据库路径 = D:DB2testDB2NODE0000SQL00001
D:DB2BIN>停止数据库

由activate database命令初始化的数据库可以由deactivate database命令关闭,也可以通过stop database manager(或db2stop)命令终止数据库管理器来关闭.

如果使用activate
database命令初始化一个数据库,那么最后一个与数据库断开连接的应用就不会关闭数据库.必须要使用deactivate
database.在这种情况下,stop database manager(或db2stop)会关闭数据库,也会终止实例.

如果使用connect
to 或隐式地连接启动数据库,然后再由另外一个应用对相同的数据库发出activate database命令,那么就必须使用deactivate
database命令关闭数据库.如果没有使用activate
database启动数据库,那么当最后一个应用断开与数据库连接的时候,数据库就会关闭.

示例一:使用connect to方式启动的数据库

D:DB2BIN>db2 list active databases
SQL1611W “数据库系统监视器”没有返回任何数据。
D:DB2BIN>db2 connect to study --连接到study数据库,将自动激活study数据库
数据库连接信息
数据库服务器 = DB2/NT 9.5.0
SQL 授权标识 = ZHANGRP
本地数据库别名 = STUDY
D:DB2BIN>db2 list active databases
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 1
数据库路径 = D:db2studyDB2NODE0000SQL00001

说明:数据库被激活,并有一个应用连接上来(就上面的connect to study操作)
D:DB2BIN>db2 connect reset --断开连接
DB20000I SQL命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W “数据库系统监视器”没有返回任何数据。

D:DB2BIN>

说明:可以发现,上面的连接断开后,数据库study也自动停止(因为这个study数据库是通过connect to 的方式激活的)
示例二:使用activate database方式启动的数据库

D:DB2BIN>db2 list active databases --这个时候没有启动的数据库
SQL1611W “数据库系统监视器”没有返回任何数据。
D:DB2BIN>db2 activate database study --用activate database激活study数据库
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases --可以看到study数据已经激活,但没有应用连接上来
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 0
数据库路径 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect to study --发起一个连接到study数据库
数据库连接信息
数据库服务器 = DB2/NT 9.5.0
SQL 授权标识 = ZHANGRP
本地数据库别名 = STUDY
D:DB2BIN>db2 list active databases --再看一下活动的数据库,发现study 数据库上有一个应用连接上来了
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 1
数据库路径 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect reset --关闭刚才那个连接,看看数据库是不是会自动关闭
DB20000I SQL命令成功完成。
D:DB2BIN>db2 list active databases --数据库依然启动,虽然没有了任何连接
活动数据库
数据库名称 = STUDY
当前连接的应用程序 = 0
数据库路径 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 deactivate database study --使用deactivate database命令关闭数据库
DB20000I DEACTIVATE DATABASE命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W “数据库系统监视器”没有返回任何数据。
D:DB2BIN>

2. DB2是什么

DB2
开放分类: 数据库、互联网、电脑、技术、计算机

IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 它以拥有一个非常完备的查询优化器而着称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。

DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机操作系统,在基于UNIX系统和微软在windows系统下的Access方面,DB2追寻了ORACLE的数据库产品。

除了它可以提供主流的OS/390和VM操作系统,以及中等规模的AS/400系统之外,IBM还提供了跨平台(包括基于UNIX的LINUX,HP-UX,Sun Solaris,以及SCO UnixWare;还有用于个人电脑的OS/2操作系统,以及微软的Windows 2000和其早期的系统)的DB2产品。DB2数据库可以通过使用微软的开放数据库连接(ODBC)接口,java数据库连接(JDBC)接口,或者CORBA接口代理被任何的应用程序访问。

7月14日,IBM全球同步发布了一款具有划时代意义的数据库产品——DB2 9(“DB2”是IBM数据库产品系列的名称)。而这款新品最大特点即是率先实现了可扩展标记语言(XML)和关系数据间的无缝交互,而无需考虑数据的格式、平台或位置。

DB2的前世今生和未来:
对于每个最终站在奖台上泪水盈面的奥运冠军来说,为此刻他或她也许已经付出了5年甚至10年的艰苦努力。相比这些人类的冠军们,这个世界还有另外一种意义上的冠军,它们虽没有泪水,却依然在历史上留下了非凡的轨迹—DB2就是这类冠军中的一员。这个数据库领域里当之无愧的冠军,已用了足足25年来描绘它的轨迹。
纪念IBM DB2的诞生
IBM DB2已经25周岁拉!DB2回顾与展望
专家点评DB2:
微软人物谈DB2发展:成功是必然的
DB2的成功案例:
DB2在各个行业得到了广泛的应用。
【视频】IBM DB2 9 pureXml在税务行业的应用案例
【视频】IBM DB2 9 pureXml在医疗行业的应用案例
【视频】IBM DB2 9 pureXml在政府行业的应用案例
DB2的最新产品:
DB2 9数据库免费版下载地址
DB2 9数据服务器发展3部曲

3. 基于DB2的数据库应用系统的性能优化

摘要 结合DB 的使用经验 从数据库设计 查询优化 并发控制 客户/服务器模式四个方面来讨论数据库应用系统性能优化的一些原则 方法等

关键词 DB 性能优化 数据库设计 查询优化 并发控制 C/S模式

引言

DB 是一种高性能的大型关系数据库管理系统 广泛的应用在客户/服务器体系结构中 评价系统性能优化的标准有 吞吐量 响应时间 并行能力等 本文从数据库的设计 查询的优化 并发控制以及客户/服务器模式这四个角度来讨论优化系统性能

设计数据库

熟悉业务系统

对业务系统的熟悉程度对整个数据库系统的性能有很大影响 一个对业务不熟悉的设计人员 尽管有丰富的数据库知识 也很难设计出性能最佳的数据库应用系统

规范化与非规范化

数据库被规范化后 减少了数据冗余 数据量变小 数据行变窄 这样DB 的每一页可以包括更多行 那么每一区里的数据量更多 从而加速表的扫描 改进了单个表的查询性能 但是 当查询涉及多个表的时候 需要用很多连接操作把信息从各个表中组合在一起 导致更高的CPU和I/O花销 那么 有很多时候需要在规范化和非规范化之间保持平衡 用适当的冗余信息来减少系统开销 用空间代价来换取时间代价 有订单信息表OrderDetail 它里面记录了投递员信息 收款员信息 物品信息 价格策略 客户信息… 这些信息分别在投递员信息表 收款员信息表 物品信息表 价格策略表 客户信息表中存放 如果按照规范化的要求 OrderDetail查询时就必须要与这么多个表进行连接或者嵌套查询 如果OrderDetail表中的数据量是在百万级的 那么一次查询所需要的时间可能会达到好几个小时 事实上 只要在设计时保证数据的逻辑有效性 很多信息都可以直接冗余在OrderDetail表中 这些冗余的数据能够极大的提高查询的效率 从而减少CPU和I/O操作

数据条带化

如果一个表的记录条数超过一定的规模 那么最基本的查询操作也会受到影响 需要将该表根据日期水平划分 把最近 最经常用的数据和历史的 不经常用的数据划分开来 或是根据地理位置 部门等等进行划分 还有一种划分方式――垂直划分 即把一个属性列很多的表分割成好几个小表 比如把经常用到的属性放在一个表里 不经常用到的属性放在另一个表里 这样可以加快表的扫描 提高效率

选择数据类型

对每一属性选择什么样的数据类型很大程度上依据表的要求 但是在不违背表要求的前提下 选择适当的数据类型可以提高系统性能 比如有text列存放一本书的信息 用BLOB而不是character( ) BLOB存放的是指针或者文件参照变量 真正的文本信息可以放在数据库之外 从而减少数据库存储空间 使得程序运行的速度提高 DB 提供了UDT(User Defined Datatypes)功能 用户可以根据自己的需要定义自己的数据类型

选择索引

索引是数据库中重要的数据结构 它的根本目的就是为了提高查询效率 现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构 使用索引可以快速 直接 有序的存取数据 索引的建立虽然加快了查询 另一方面却将低了数据更新的速度 因为新数据不仅要增加到表中 也要增加到索引中 另外 索引还需要额外的磁盘空间和维护开销 因此 要合理使用索引

●在经常进行连接 但是没有指定为外键的属性列上建立索引

●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引 按索引来排序或分组 可以提高效率

●在条件表达式中经常用到的不同值较多的列上建立检索 在不同值少的列上不要建立索引

●如果待排序的列有多个 可以在这些列上建立复合索引(pound index) 即索引由多个字段复合而成

查询优化

现在的数据库产品在系统查询优化方面已经做得越来越好 但由于用户提交的SQL语句是系统优化的基础 很难设想一个原本糟糕的查询计划经过系统的优化之后会变得高效 因此用户所写语句的优劣至关重要 下面重点说明改善用户查询计划的解决方案

. 排序

在很多时候 应当简化或避免对大型表进行重复的排序 当能够利用索引自动以适当的次序产生输出时 可以避免排序的步骤 当以下的情况发生时 排序就不能省略

●索引中不包括一个或几个待排序的列

●group by或order by子句中列的次序与索引的次序不一样

●排序的列来自不同的表

为了避免不必要的排序 就要正确地增建索引 合理地合并数据库表 尽管有时可能影响表的规范化 但相对于效率的提高是值得的 如果排序不可避免 那么应当试图简化它 如缩小排序列的范围等

. 主键

主键用整型会极大的提高查询效率 而字符型的比较开销要比整型的比较开销大很多 用字符型数据作主键会使数据插入 更新与查询的效率降低 数据量小的时候这点降低可能不会被注意 可是当数据量大的时候 小的改进也能够提高系统的响应速度

. 嵌套查询

在SQL语言中 一个查询块可以作为另一个查询块中谓词的一个操作数 因此 SQL查询可以层层嵌套 例如在一个大型分布式数据库系统中 有订单表Order 订单信息表OrderDetail 如果需要两表关联查询

SELECT CreateUserFROM Order WHERE OrderNo IN(SELECT OrderNoFROM OrderDetail WHERE Price= )

在这个查询中 找出报纸单价为 元的收订员名单 下层查询返回一组值给上层查询 然后由上层查询块再根据下层块提供的值继续查询 在这种嵌套查询中 对上层查询的每一个值OrderNo 下层查询都要对表OrderDetail进行全部扫描 执行效率显然不会高 在该查询中 有 层嵌套 如果每层都查询 行 那么这个查询就要查询 万行数据 在系统开销中 对表Order的扫描占 % 对表OrderDetail的搜索占 % 如果我们用连接来代替 即

SELECT CreateUserFROM Order OrderDetailWHERE Order OrderNo=OrderDetail OrderNo AND Praice=

那么对表Order的扫描占 % 对表OrderDetail的搜索占 %

而且 一个列的标签同时在主查询和where子句中的查询中出现 那么很可能当主查询中的列值改变之后 子查询必须重新查询一次 查询嵌套层次越多 效率越低 因此应当尽量避免子查询 如果子查询不可避免 那么要在子查询中过滤掉尽可能多的行

. 通配符

在SQL语句中 LIKE关键字支持通配符匹配 但这种匹配特别耗费时间 例如 SELECT * FROM Order WHERE CreateUser LIKE M_ _ _ 即使在CreateUser字段上建立了索引 在这种情况下也还是采用顺序扫描的方式 Order表中有 条记录 就需要比较 次 如果把语句改为SELECT * FROM Order WHERE CreateUser > M AND CreateUser < N 在执行查询时就会利用索引来查询 显然会大大提高速度

. distinct

使用distinct是为了保证在结果集中不出现重复值 但是distinct会产生一张工作表 并进行排序来删除重复记录 这会大大增加查询和I/O的操作次数 因此应当避免使用distinct关键字

. 负逻辑

负逻辑如!= <> not in等 都会导致DB 用表扫描来完成查询 当表较大时 会严重影响系统性能 可以用别的操作来代替

. 临时表

使用临时表时数据库会在磁盘中建立相应的数据结构 因为内存的访问速度远远大于外部存储器的访问速度 在复杂查询中使用临时表时 中间结果会被导入到临时表中 这种磁盘操作会大大降低查询效率 另外 在分布式系统中 临时表的使用还会带来多个查询进程之间的同步问题 所以 在进行复杂查询时最好不要使用临时表

. 存储过程

DB 中的Stored Procere Builder可以产生存储过程 运行并测试存储过程 存储过程可以包含巨大而复杂的查询或SQL操作 经过编译后存储在DB 数据库中 用户在多次使用同样的SQL操作时 可以先把这些SQL操作做成存储过程 在需要用到的地方直接引用其名字进行调用 存储过程在第一次执行时建立优化的查询方案 DB 将查询方案保存在高速缓存里 以后调用运行时可以直接从高速缓存执行 省去了优化和编译的阶段 节省了执行时间 从而提高效率和系统利用率

最优的查询方案按照某些标准选择往往不可行 要根据实际的要求和具体情况 通过比较进行选择 DB 提供的Query Patroller可以对不同的查询方案的查询代价进行比较 通过追踪查询语句 返回查询不同阶段的系统开销 从而作出最佳选择 DB 提供的Performance Monitor也对整个数据库系统的性能进行监控 包括I/O时间 查询次数 排序时间 同步读写时间等等

数据库系统的并发控制也能影响系统性能 多个用户的同时操作可能导致数据的不一致性 DB 为了防止同时修改造成数据丢失和访问未被提交的数据 以及数据的保护读 采用Lock机制来实现控制

lishixin/Article/program/DB2/201311/21921

4. IBM/DB2.Linux的安装配置管理

IBM/DB2.Linux的安装配置管理

作为关系型数据库技术的领导者,IBM公司在2001年将世界排名第四的Informix数据库公司纳入麾下,并将其所拥有的先进特性融入到DB2当中。下面我准备了关于IBM/DB2.Linux的安装配置管理的.文章,提供给大家参考!

1.安装IBM/DB2 V9.1 Linux版

下载得到安装文件 db2exc_912_LNX_x86.tar.gz ,解压到ext2/3分区

# cd db2exc_912_LNX_x86

# ./db2setup

(1)弹出java的安装界面,install new instance

(2)使用“Typical Mode”,选择安装目录,默认为 DB2_root=/opt/ibm/db2/V9.1/

# echo DB2_root=/opt/ibm/db2/V9.1/ >> /etc/profile

(3)并默认创建 db2inst?、db2fenc?、db2adsusr? 这个几个用户最重要的是本地实例管理用户 db2inst? 其负责管理数据库实例

(4)创建Instance,然后下一步继续安装,看到successful结果,表示成功

(5) # ps -e | grep db2 应该可以看到三个不同名称的进程

(6) # tail /etc/inittab #可以看到最后一行就是启动db2的方法

fmc:2345:respawn:/opt/ibm/db2/V9.1/bin/db2fmcd #DB2 Fault Monitor Coordinator

2.配置IBM/DB2的库开发和CLI/ODBC连接

# su db2inst1

$ cd $DB2_ROOT

## 编目(catalog):

$ ./db2 catalog tcpip node remote server

$ ./db2 catalog db at node

$ ./db2 connect to user using

## 反编目(uncatalog):

$ ./db2 uncatalog db

$ ./db2 uncatalog node

3.修改,使用IBM/DB2的CLI/ODBC进行程序开发

(1)如果不想使用db2实例,而只是想使用CLI/ODBC来开发程序,可以注释 /etc/inittab 中启动db2的那一句,放弃启动IBM/DB2数据库服务。

(2)环境变量配置文件 : /home/db2inst1/sqllib/db2profile

查看 /etc/profile ,保证(添加或者修改)有以下两句

export DB2INSTANCE=db2inst1

export PATH=$DB2_ROOT/binPATH

export LD_LIBRARY_PATH=$DB2_ROOT/lib32LD_LIBRARY_PATH

(3)编目目标机器地址与ODBC的DSN的关系,CLI/ODBC 中最重要的头文件(include)和库(lib)

$DB2_ROOT/lib32 或 其联接 /home/db2inst1/sqllib/lib,其中最重要的是libdb2.so

4.数据库备份及恢复

(1).使用用户名和口令登录服务器

# db2 connect to ecm3000 user using

(2).强制停止所有应用,是异步的

# db2 force applications all

(3).将数据库备份到指定目录下

# db2 backup database to

(4).从指定目录中恢复数据库

# db2 restore database from

5.修改和卸载DB2

请先反编目()如步骤2中

# su db2inst1

$ cd $DB2_ROOT/install

$ ./db2_deinstall -a

等待结束 ...

修改该/etc/inittab 中启动db2的那一句,保证放弃启动IBM/DB2数据库服务。

;

5. 如何在Windows CMD里面用命令行操作DB2数据库

1、打开电脑,进入电脑操作系统,点击开始菜单,在电脑开始菜单中,找到命令行cmd,或者使用快捷键组合WIN+R键可以直接打开运行,输入cmd命令行,即可直接打开命令行cmd。

热点内容
java自动生成代码 发布:2025-08-24 05:56:18 浏览:608
甜糖存储位置 发布:2025-08-24 05:56:17 浏览:720
我的世界网易版ice服务器如何卡方块 发布:2025-08-24 05:55:42 浏览:611
安卓怎么分屏截屏 发布:2025-08-24 05:36:00 浏览:224
安卓手机wf没网怎么回事 发布:2025-08-24 05:07:08 浏览:975
一直叫痛ftp 发布:2025-08-24 04:42:33 浏览:506
更新数据的sql命令是 发布:2025-08-24 04:42:02 浏览:408
安卓桌面百度有料广告如何取消 发布:2025-08-24 04:41:52 浏览:109
暮色森林服务器我的世界 发布:2025-08-24 04:40:26 浏览:719
算法即是 发布:2025-08-24 04:37:37 浏览:361