- 浏览: 499795 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (241)
- Jscript笔记 (23)
- sql (8)
- jQuery (23)
- css (2)
- jQuery.form (2)
- struts2 (3)
- 数据库字符集 (3)
- Java (15)
- Oracle (2)
- DB2 (4)
- ResourceBundle (1)
- Exception (7)
- Windows (2)
- 数据库 (18)
- JSP (2)
- jstree (3)
- datatable (9)
- bootstrap-switch (1)
- select2 (3)
- Java.tree (1)
- JSF2 (1)
- Bootstrap (1)
- Eclipse (13)
- SVN (3)
- Eclipse插件 (5)
- myeclipse (1)
- ajax (1)
- JBOSS (2)
- data storage (1)
- Apache tiles (1)
- springMVC (15)
- mybatis (6)
- AngularJS (13)
- checkbox (1)
- J2EE (1)
- SecureCRT (7)
- tomcat (4)
- Maven (3)
- log4j (3)
- Xshell (1)
- 工具应用 (5)
- spring (12)
- Apache (5)
- books (1)
- fastjson (1)
- Standard (1)
- Mysql (1)
- MAC (1)
- Charles (1)
- LINUX (1)
- 日常开发ISSUE (0)
最新评论
-
yuchangcheng:
直接把代码 上传上来吧 这样看的很吃力呀
mybatis generator 的复合查询 -
zzd0058:
我表示报400错误
SpringMVC接收复杂集合参数 -
lihaiming:
影非弦 写道没有这个页面详细的文件么?文档地址:https:/ ...
select2.js使用 -
影非弦:
没有这个页面详细的文件么?
select2.js使用 -
影非弦:
这个select.min.css是select2提供的样式文件 ...
select2.js使用
DB2是IBM一种分布式数据库解决方案。说简单点:DB2就是IBM开发的一种大型关系型数据库平台.它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。目前,DB2有如下一些版本:(比如DB2 for Unix,DB2 for Windows,DB2 for AS/400,DB2 for OS/390等)
DB2是IBM公司开发的关系数据库管理系统,它有多种不同的版本,如:DB2工作组版(DB2Workgroup Edition)、DB2企业版(DB2 Enterprise Edition)、DB2个人版(DB2 Personal Edition)和DB2企业扩展版(DB2 Enterprise-Exended Edition)等,这些产品基本的数据管理功能是一样的,区别在于支持远程客户能力和分布式处理能力。
个人版适用于单机使用,即服务器只能由本地应用程序访问。工作组版和企业版提供了本地和远程客户访问DB2的功能(当然远程客户要安装相应客户应用程序开发部件),企业版包括工作组版中的所有部件外再增加对主机连接的支持。企业扩展版允许将一个大的数据库分布到同一类型的多个不同计算机上,这种分布式功能尤其适用于大型数据库的处理。
DB2可运行在OS/2、Windows NT、UNIX操作系统上,通常将运行在这些平台上的DB2产品统称为DB2通用数据库,这主要是强调这些产品运行环境类似,并共享相同的源代码。DB2通用数据库主要组件包括数据库引擎(Dalabase Engine )应用程序接口和一组工具。数据库引擎提供了关系数据库管理系统的基本功能,如管理数据、控制数据的访问(包括并发控制)、保证数据完整性及数据安全。所有数据访问都通过SQL接口进行。
db2起源于system r和system r*。他支持从pc到unix,从中小型机到大型机;从ibm到非ibm(hp及sun unix系统等)各种操作平台。他既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行。其中服务
平台可以是os/400,aix,os/2,hp-unix,sun-solaris等操作系统,客户机平台可以是os/2或windows, dos, aix, hp-ux, sun solaris等操作系统。
一、db2核心数据库的特色
db2数据库核心又称作db2公共服务器,采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。
(1) 支持面向对象的编程
db2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。可以建立用户数据类型和用户自定义函数。
(2) 支持多媒体应用程序
db2支持大二分对象(blob),允许在数据库中存取二进制大对象和文本大对象。其中,二进制大对象可以用来存储多媒体对象。
(3) 备份和恢复能力
(4) 支持存储过程和触发器,用户可以在建表时显示的定义复杂的完整性规则
(5) 支持的硅sql查询
(6) 支持异构分布式数据库访问
(7) 支持数据复制
二、开发工具
ibm提供了许多开发工具,主要有visualizer query, visualage, visualgen。
visualizer是客户/服务器环境中的集成工具软件,主要包括visualizer query可视化查询工具,visualizer ultimedia query可视化多媒体查询工具,visualizer chart可视化图标工具,visualizer procedure可视化过程工具,visualizer statistics可视化统计工具,visualizer plans可视化规划工具, visualizer development可视化开发工具。
visualage是一个功能很强的可视化的面向对象的应用开发工具,可翼大幅度的提高软件开发效率。其主要特征有:
(1) 可视化程序设计工具。
(2) 部件库。包括支持图形用户接口的预制不见,以及包含数据库查询、事务和本地、远程函数的通用部件。
(3) 关系数据库支持。
(4) 群体程序设计。
(5) 支持增强的动态连接库。
(6) 支持多媒体。
(7) 支持数据共享。
visualgen是ibm所提供的高效开发方案中的重要组成部分。它集成了第四代语言、客户/服务器与面向对象技术,给用户提供了一个完整、高效的开发环境。
三、DB2数据库的安装
这是在IBM RS6000 操作系统为AIX安装的,HP9000上雷同
1. 注册为具有超级用户权限的用户(root)
2. 将 标有"DB2通用数据库企业版"的软件光盘插入驱动器
3. 输入如下命令,以创建一个目录来安装该 CD-ROM:
# mkdir -p /cdrom 其中 cdrom 表示 CD-ROM 安装目录。
输入如下命令,来分配 CD-ROM 文件系统:
# smitty storage
4. 选择文件系统
5. 选择添加/更改/显示/删除文件系统
6. 选择 CDROM 文件系统
7. 选择添加 CDROM 文件系统
8. 在弹出窗口中,输入如下项作为安装点:
/cdrom
9. 通过输入以下命令来安装 CD-ROM 文件系统: smit mountf
10. 在文件系统名称字段中输入值。例如,该名称可能是 /dev/cd0。
11. 在安装目录字段中输入值。例如,此值可能是 /cdrom。
12. 将安装为只读系统设置为 Yes。
13. 单击确定。
14. cd /cdrom
15. 输入 ./db2setup 命令以启动 DB2 安装程序。 安装 DB2 V6 窗口打开。
16. 按 Tab 键更改突出显示的选项,按 Enter 键选择或取消选择选项。
(1) 在服务器上安装,一般选择安装以下三个产品:
注意:要显示想要安装的 DB2 产品的部件,选择定制。要在任何时候返回至先前窗口,选择取消。
DB2 Administration Client
选择定制安装这个产品,
DB2 UDB enterprise edition
选择定制安装这个产品,
DB2 Software Developer Kit
如果同时做开发,需要定制安装此产品。
(2)在"DB2产品信息"和"DB2产品库"只选择中国语言ZH_CN支持。
17. 在16步确认后,将开始安装数据库程序。在安装过程中,还需确认以下问题:
(1) 是否建立DB2管理帐户, 一般选择建立:
按缺省建立db2管理用户db2as(使用缺省的UID,Group Id,安装home路径),在语言支持上,
只选择中国语言ZH_CN支持。
(2) 是否建立DB2的实例, 一般选择建立:
按缺省建立db2管理用户db2inst1:db2iadm1(使用缺省的UID,Group Id,安装home路径),
在语言支持上,只选择中国语言ZH_CN支持。
按缺省建立db2用户db2fenc1:db2fenc1(使用缺省的UID,Group Id,安装home路径),
在语言支持上,只选择中国语言ZH_CN支持。
是否建立sample数据库(为了检查数据库的安装是否正确,一般选择建立sample数据库)
是否选择DB2的实例进程在操作系统启动时,自动执行初始化
如果在独立服务器上安装使用,可选择autostart,但在aix+hacmp+db2的双机共享环境中,不要选择
autostart,DB2实例进程的启动,由hacmp来控制。
18. 安装结果:
数据库程序安装完成后,DB2的软件程序安装在/usr/lpp目录中,
DB2DIR = /usr/lpp/DB2_06_01
注意:如果安装过程中没有指定建立实例和管理帐户,在安装完成后可以使用命令创建实例(db2icrt)。
或者要创建或添加新的实例、"管理服务器"或其他 DB2 产品和部件,输入如下命令:
/usr/lpp/DB2_06_01/install/DB2setup
19. 验证安装
在安装时若没有选择建立sample数据库,在安装完成后可以通过命令(db2sampl)创建 SAMPLE 数据库,
并通过使用命令行处理器与该数据库相连来验证安装:
(1) 作为具有系统管理 (SYSADM) 权限的用户向系统注册。如:db2inst1
(2) 输入 DB2sampl 命令以便创建 SAMPLE 数据库。
(3) 创建 SAMPLE 数据库时,用数据库别名 SAMPLE 将它自动编目。
(4) 输入 DB2start 命令以启动数据库管理程序。
(5) 输入下列命令来与 SAMPLE 数据库相连,检索在部门 20 中工作的所有雇员的列表,并重设数据库连接:
DB2 connect to sample
DB2 "select * from staff where dept = 20"
DB2 connect reset
注意:在验证安装后,可除去 SAMPLE 数据库以释放磁盘空间。输入 DB2 drop database sample 命令
来卸下 SAMPLE 数据库。
若尚未未安装 DB2 工具,则您可以通过创建 SAMPLE 数据库, 并通过使用命令行处理器与该数据库
相连来验证安装,如下所示:
步骤 1.
作为具有系统管理 (SYSADM) 权限的用户向系统注册。
步骤 2.
输入 db2sampl 命令以便创建 SAMPLE 数据库。
创建 SAMPLE 数据库时, 用数据库别名 SAMPLE 将它自动编目。
步骤 3.
输入 db2start 命令以启动数据库管理程序。
步骤 4.
输入下列命令来与 SAMPLE 数据库相连, 检索在部门 20 中工作的所有雇员的列表,并重设数据库连接:
db2 connect to sample
db2 "select * from staff where dept = 20"
db2 connect reset
如以上命令均正确执行, 则证明DB2 UDB 数据库服务器的安装已经成功完成.
四、DB2数据库的备份和恢复
最近,我恢复了一个数据库.其中的辛苦不予言表,我想写出自己用到的一些语句,和遇到相同问题的xdjm共勉。
首先谈db2数据库的备份,我用的是backup命令。
db2 backup database 数据库名(我的库是jsdb)
忘了说了,在backup之前需要停止你要备份的数据库,我用了db2stop force(之所以用force参数是因为这样好停懒省事:)和db2start。这样就保证可以成功backup了。
备份完成后db2会告诉你一个时间戳,例如:20040831(之后好几位)这样就会在当前目录下产生一个与你数据库名相同的文件夹名例如:jsdb。这个文件夹目录层次很重要,如果错了会在恢复时提示找不到文件。
备份完成以后就是恢复了,我用的是restore命令。
db2 restore database 数据库名(jsdb)taken at 时间戳(20040831)
执行这个语句要注意两点:1,要把备份文件夹考到当前目录下(我用了一个cd c:\命令设当前目录为c盘,将jsdb文件夹考到c盘根目录下);2,时间戳要和jsdb目录中的一致。
这样,就完成了恢复数据库了。
五、DB2编程序技巧
1 DB2编程
1.1 建存储过程时Create 后一定不要用TAB键
create procedure
的create后只能用空格,而不可用tab健,否则编译会通不过。
切记,切记。
1.2 使用临时表
要注意,临时表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建临时表的。
另外,DB2的临时表和sybase及oracle的临时表不太一样,DB2的临时表是在一个session内有效的。所以,如果程序有多线程,最好不要用临时表,很难控制。
建临时表时最好加上 with replace选项,这样就可以不显示的drop 临时表,建临时表时如果不加该选项而该临时表在该session内已创建且没有drop,这时会发生错误。
1.3 从数据表中取指定前几条记录
select * from tb_market_code fetch first 1 rows only
但下面这种方式不允许
select market_code into v_market_code
from tb_market_code fetch first 1 rows only;
选第一条记录的字段到一个变量以以下方式代替
declare v_market_code char(1);
declare cursor1 cursor for select market_code from tb_market_code
fetch first 1 rows only for update;
open cursor1;
fetch cursor1 into v_market_code;
close cursor1;
1.4 游标的使用
注意commit和rollback
使用游标时要特别注意如果没有加with hold 选项,在Commit和Rollback时,该游标将被关闭。Commit 和Rollback有很多东西要注意。特别小心
游标的两种定义方式
一种为
declare continue handler for not found
begin
set v_notfound = 1;
end;
declare cursor1 cursor with hold for select market_code from tb_market_code for update;
open cursor1;
set v_notfound=0;
fetch cursor1 into v_market_code;
while v_notfound=0 Do
--work
set v_notfound=0;
fetch cursor1 into v_market_code;
end while;
close cursor1;
这种方式使用起来比较复杂,但也比较灵活。特别是可以使用with hold 选项。如果循环内有commit或rollback 而要保持该cursor不被关闭,只能使用这种方式。
另一种为
pcursor1: for loopcs1 as cousor1 cursor as
select market_code as market_code
from tb_market_code
for update
do
end for;
这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close。
但不能使用with hold 选项。如果在游标循环内要使用commit,rollback则不能使用这种方式。如果没有commit或rollback的要求,推荐使用这种方式(看来For这种方式有问题)。
修改游标的当前记录的方法
update tb_market_code set market_code='0' where current of cursor1;
不过要注意将cursor1定义为可修改的游标
declare cursor1 cursor for select market_code from tb_market_code
for update;
for update 不能和GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT但 UNION ALL除外)一起使用。
1.5 类似decode的转码操作
oracle中有一个函数 select decode(a1,'1','n1','2','n2','n3') aa1 from
db2没有该函数,但可以用变通的方法
select case a1
when '1' then 'n1'
when '2' then 'n2'
else 'n3'
end as aa1 from
1.6 类似charindex查找字符在字串中的位置
Locate('y','dfdasfay')
查找'y' 在'dfdasfay'中的位置。
1.7 类似datedif计算两个日期的相差天数
days(date('2001-06-05')) days(date('2001-04-01'))
days 返回的是从 0001-01-01 开始计算的天数
1.8 写UDF的例子
C写见sqllib\samples\cli\udfsrv.c
1.9 创建含identity值(即自动生成的ID)的表
建这样的表的写法
CREATE TABLE test
(t1 SMALLINT NOT NULL
GENERATED ALWAYS AS IDENTITY
(START WITH 500, INCREMENT BY 1),
t2 CHAR(1));
在一个表中只允许有一个identity的column.
1.10 预防字段空值的处理
SELECT DEPTNO ,DEPTNAME ,COALESCE(MGRNO ,'ABSENT'),ADMRDEPT
FROM DEPARTMENT
COALESCE函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式。
和oracle的isnull类似,但isnull好象只能两个表达式。
1.11 取得处理的记录数
declare v_count int;
update tb_test set t1='0'
where t2='2';
--检查修改的行数,判断指定的记录是否存在
get diagnostics v_ count=ROW_COUNT;
只对update,insert,delete起作用.
不对select into 有效 1.12 从存储过程返回结果集(游标)的用法
1、建一sp返回结果集
CREATE PROCEDURE DB2INST1.Proc1 ( )
LANGUAGE SQL
result sets 2(返回两个结果集)
-------------------------------------------------- ----------------------
-- SQL 存储过程
-------------------------------------------------- ----------------------
P1: BEGIN
declare c1 cursor with return to caller for
select market_code
from tb_market_code;
--指定该结果集用于返回给调用者
declare c2 cursor with return to caller for
select market_code
from tb_market_code;
open c1;
open c2;
END P1
2、建一SP调该sp且使用它的结果集
CREATE PROCEDURE DB2INST1.Proc2 (
out out_market_code char(1))
LANGUAGE SQL
-------------------------------------------------- ----------------------
-- SQL 存储过程
-------------------------------------------------- ----------------------
P1: BEGIN
declare loc1,loc2 result_set_locator varying;
--建立一个结果集数组
call proc1;
--调用该SP返回结果集。
associate result set locator(loc1,loc2) with procedure proc1;
--将返回结果集和结果集数组关联
allocate cursor1 cursor for result set loc1;
allocate cursor2 cursor for result set loc2;
--将结果集数组分配给cursor
fetch cursor1 into out_market_code;
--直接从结果集中赋值
close cursor1;
END P1
3、动态SQL写法
DECLARE CURSOR C1 FOR STMT1;
PREPARE STMT1 FROM
'ALLOCATE C2 CURSOR FOR RESULT SET ?';
4、注意:
一、 如果一个sp调用好几次,只能取到最近一次调用的结果集。
二、 allocate的cursor不能再次open,但可以close,是close sp中的对应cursor。
1.13 类型转换函数
select cast ( current time as char(8)) from tb_market_code
1.14 存储过程的互相调用
目前,c sp可以互相调用。
Sql sp 可以互相调用,
Sql sp 可以调用C sp,
但C sp 不可以调用Sql sp(最新的说法是可以)
1.15 C存储过程参数注意
create procedure pr_clear_task_ctrl(
IN IN_BRANCH_CODE char(4),
IN IN_TRADEDATE char(8),
IN IN_TASK_ID char(2),
IN IN_SUB_TASK_ID char(4),
OUT OUT_SUCCESS_FLAG INTEGER )
DYNAMIC RESULT SETS 0
LANGUAGE C
PARAMETER STYLE GENERAL WITH NULLS(如果不是这样,sql 的sp将不能调用该用c写的存储过程,产生保护性错误)
NO DBINFO
FENCED
MODIFIES SQL DATA
EXTERNAL NAME 'pr_clear_task_ctrl!pr_clear_task_ctrl'@
1.16 存储过程fence及unfence
fence的存储过程单独启用一个新的地址空间,而unfence的存储过程和调用它的进程使用同一个地址空间。
一般而言,fence的存储过程比较安全。
但有时一些特殊的要求,如要取调用者的pid,则fence的存储过程会取不到,而只有unfence的能取到。
1.17 SP错误处理用法
如果在SP中调用其它的有返回值的,包括结果集、临时表和输出参数类型的SP,
DB2会自动发出一个SQLWarning。而在我们原来的处理中对于SQLWarning都
会插入到日志,这样子最后会出现多条SQLCODE=0的警告信息。
处理办法:
定义一个标志变量,比如DECLARE V_STATUS INTEGER DEFAULT 0,
在CALL SPNAME之后, SET V_STATUS = 1,
DECLARE CONTINUE HANDLER FOR SQLWARNING
BEGIN
IF V_STATUS <> 1 THEN
--警告处理,插入日志
SET V_STATUS = 0;
END IF;
END;
1.18 import用法
db2 import from gh1.out of DEL messages err.txt insert into db2inst1.tb_dbf_match_ha
注意要加schma
1.19 values的使用
如果有多个 set 语句给变量付值,最好使用values语句,改写为一句。这样可以提高效率。
但要注意,values不能将null值付给一个变量。
values(null) into out_return_code;
这个语句会报错的。
1.20 给select 语句指定隔离级别
select * from tb_head_stock_balance with ur
1.21 atomic及not atomic区别
atomic是将该部分程序块指定为一个整体,其中任何一个语句失败,则整个程序块都相当于没做,包括包含在atomic块内的已经执行成功的语句也相当于没做,有点类似于transaction。
2 DB2编程性能注意
2.1 大数据的导表
应该是export后再load性能更好,因为load不写日志。
比select into 要好。
2.2 SQL语句尽量写复杂SQL
尽量使用大的复杂的SQL语句,将多而简单的语句组合成大的SQL语句对性能会有所改善。
DB2的SQL Engieer对复杂语句的优化能力比较强,基本上不用当心语句的性能问题。
Oracle 则相反,推荐将复杂的语句简单化,SQL Engieer的优化能力不是特别好。
这是因为每一个SQL语句都会有reset SQLCODE和SQLSTATE等各种操作,会对数据库性能有所消耗。
一个总的思想就是尽量减少SQL语句的个数。
2.3 SQL SP及C SP的选择
首先,C的sp的性能比sql 的sp 的要高。
一般而言,SQL语句比较复杂,而逻辑比较简单,sql sp 与 c sp 的性能差异会比较小,这样从工作量考虑,用SQL写比较好。
而如果逻辑比较复杂,SQL比较简单,用c写比较好。
2.4 查询的优化(HASH及RR_TO_RS)
db2set DB2_HASH_JOIN=Y (HASH排序优化)
指定排序时使用HASH排序,这样db2在表join时,先对各表做hash排序,再join,这样可以大大提高性能。
剧沈刚说做实验,7个一千万条记录表的做join取10000条记录,再没有索引的情况下 72秒。
db2set DB2_RR_TO_RS=Y
该设置后,不能定义RR隔离级别,如果定义RR,db2也会自动降为RS.
这样,db2不用管理Next key,可以少管理一些东西,这样可以提高性能。
2.5 避免使用count(*) 及exists的方法
1、首先要避免使用count(*)操作,因为count(*)基本上要对表做全部扫描一遍,如果使用很多会导致很慢。
2、exists比count(*)要快,但总的来说也会对表做扫描,它只是碰到第一条符合的记录就停下来。
如果做这两中操作的目的是为
select into 服务的话,就可以省略掉这两步。
直接使用select into 选择记录中的字段。
如果是没有记录选择到的话,db2 会将 sqlcode=100 和 sqlstate='20000'
如果是有多条记录的话,db2会产生一个错误。
程序可以创建 continue handler for exception
continue handler for not found
来检测。
这是最快速的方法。
3、如果是判断是不是一条,可以使用游标来计算,用一个计数器,累加,达到预定值后就离开。这个速度也比count(*) 要快,因为它只要扫描到预定值就不再扫描了,不用做全表的scan,不过它写起来比较麻烦。
3 DB2表及sp管理
3.1 看存储过程文本
select text from syscat.procedures where procname='PROC1';
3.2 看表结构
describe table syscat.procedures
describe select * from syscat.procedures
3.3 查看各表对sp的影响(被哪些sp使用)
select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select PKGNAME from syscat.packagedep where bname='TB_BRANCH'))
3.4 查看sp使用了哪些表
select bname from syscat.packagedep where btype='T' and pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='PR_CLEAR_MATCH_DIVIDE_SHA'))
3.5 查看function被哪些sp使用
select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select PKGNAME from syscat.packagedep where bname in (select SPECIFICNAME from SYSCAT.functions where funcname='GET_CURRENT_DATE')))
使用function时要注意,如果想drop 掉该function必须要先将调用该function的其它存储过程全部drop掉。
必须先创建function,调用该function的sp才可以创建成功。
3.6 修改表结构
一次给一个表增加多个字段
db2 "alter table tb_test add column t1 char(1) add column t2 char(2) add column t3 int"
4 DB2系统管理
4.1 DB2安装
在Windows 98 下安装db2 7.1 或其他版本,如果有Jdbc错误或者是Windwos 98不能启动,则将autoexec.bat 中的内容用如下内容替换:
C:\PROGRA~1\TRENDP~1\PCSCAN.EXE C:\ C:\WINDOWS\COMMAND\ /NS /WIN95
rem C:\WINDOWS\COMMAND.COM /E:32768
REM [Header]
REM [CD-ROM Drive]
REM [Miscellaneous]
REM [Display]
set PATH=%PATH%;C:\MSSQL\BINN;C:\PROGRA~1\SQLLIB\BIN;C :\PROGRA~1\SQLLIB\FUNCTION;C:\PROGRA~1\SQLLIB\SAMPL ES\REPL;C:\PROGRA~1\SQLLIB\HELP
IF EXIST C:\PROGRA~1\IBM\IMNNQ\IMQENV.BAT CALL C:\PROGRA~1\IBM\IMNNQ\IMQENV.BAT
IF EXIST C:\PROGRA~1\IBM\IMNNQ\IMNENV.BAT CALL C:\PROGRA~1\IBM\IMNNQ\IMNENV.BAT
set DB2INSTANCE=DB2
set CLASSPATH=.;C:\PROGRA~1\SQLLIB\java\db2java.zip;C: \PROGRA~1\SQLLIB\java\runtime.zip;C:\PROGRA~1\SQLLI B\java\sqlj.zip;C:\PROGRA~1\SQLLIB\bin
set MDIS_PROFILE=C:\PROGRA~1\SQLLIB\METADATA\PROFILES
set LC_ALL=ZH_CN
set INCLUDE=C:\PROGRA~1\SQLLIB\INCLUDE;C:\PROGRA~1\SQL LIB\LIB;C:\PROGRA~1\SQLLIB\TEMPLATES\INCLUDE
set LIB=C:\PROGRA~1\SQLLIB\LIB
set DB2PATH=C:\PROGRA~1\SQLLIB
set DB2TEMPDIR=C:\PROGRA~1\SQLLIB
set VWS_TEMPLATES=C:\PROGRA~1\SQLLIB\TEMPLATES
set VWS_LOGGING=C:\PROGRA~1\SQLLIB\LOGGING
set VWSPATH=C:\PROGRA~1\SQLLIB
set VWS_FOLDER=IBM DB2
set ICM_FOLDER=信息目录管理器
win
4.2 创建Database
create database head using codeset IBM-eucCN territory CN;
这样可以支持中文。
4.3 手工做数据库远程(别名)配置
db2 catalog tcpip node node1 remote 172.28.200.200 server 50000
db2 catalog db head as test1 at node node1
然后既可使用:
db2 connect to test1 user … using …
连上head库了
4.4 停止启动数据库实例
db2start
db2stop (force)
4.5 连接数据库及看当前连接数据库
连接数据库
db2 connect to head user db2inst1 using db2inst1
当前连接数据库
db2 connect
4.6 停止启动数据库head
db2 activate db head
db2 deactivate db head
要注意的是,如果有连接,使用deactivate db 不起作用。
如果是用activate db启动的数据库,一定要用deactivate db才会停止该数据库。(当然如果是db2stop也会停止)。
使用activate db,这样可以减少第一次连接时的等待时间。
Database如果不是使用activate db启动而是通过连接数据库而启动的话,当所有的连接都退出后,db也就自动停止。
4.7 查看及停止数据库当前的应用程序
查看应用程序:
db2 list applications show detail
授权标识 | 应用程序名 | 应用程序句柄 | 应用程序标识 | 序号# | 代理程序 | 协调程序 | 状态 | 状态更改时间 | DB 名 | DB 路径| | 节点号 | pid/线程
其中:1、应用程序标识的第一部分是应用程序的IP地址,不过是已16进制表示的。
2、pid/线程即是在unix下看到的线程号。
停止应用程序:
db2 "force application(236)"
db2 "force application all"
其中:该236是查看中的应用程序句柄。
4.8 查看本instance下有哪些database
db2 LIST DATABASE DIRECTORY [ on /home/db2inst1 ]
4.9 查看及更改数据库head的配置
请注意,在大多数情况下,更改了数据的配置后,只有在所有的连接全部断掉后才会生效。
查看数据库head的配制
db2 get db cfg for head
更改数据库head的某个设置的值
4.9.1 改排序堆的大小
db2 update db cfg for head using SORTHEAP 2048
将排序堆的大小改为2048个页面,查询比较多的应用最好将该值设置比较大一些。
4.9.2 改事物日志的大小
db2 update db cfg for head using logfilsiz 40000
该项内容的大小要和数据库的事物处理相适应,如果事物比较大,应该要将该值改大一点。否则很容易处理日志文件满的错误。
4.9.3 出现程序堆内存不足时修改程序堆内存大小
db2 update db cfg for head using applheapsz 40000
该值不能太小,否则会没有足够的内存来运行应用程序。
4.10 查看及更改数据库实例的配置
查看数据库实例配置
db2 get dbm cfg
更改数据库实例配制
4.10.1 打开对锁定情况的监控。
db2 update dbm cfg using dft_mon_lock on
4.10.2 更改诊断错误捕捉级别
db2 update dbm cfg using diaglevel 3
0 为不记录信息
1 为仅记录错误
2 记录服务和非服务错误
缺省是3,记录db2的错误和警告
4 是记录全部信息,包括成功执行的信息
一般情况下,请不要用4,会造成db2的运行速度非常慢。
4.11 db2环境变量
db2 重装后用如下方式设置db2的环境变量,以保证sp可编译
将set_cpl 放到AIX上, chmod +x set_cpl, 再运行之
set_cpl的内容
db2set DB2_SQLROUTINE_COMPILE_COMMAND="xlc_r -g \
-I$HOME/sqllib/include SQLROUTINE_FILENAME.c \
-bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY \
-o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2"
db2set DB2_SQLROUTINE_KEEP_FILES=1
4.12 db2命令环境设置
db2=>list command options
db2=>update command options using C off--或on,只是临时改变
db2=>db2set db2options=+c --或-c,永久改变
4.13 改变隔离级别
DB2SET DB2_SQLROUTINE_PREPOPTS=CS|RR|RS|UR
交互环境更改session的隔离级别,
db2 change isolation to UR
请注意只有没有连接数据库时可以这样来改变隔离级别。
4.14 管理db\instance的参数
get db cfg for head(db)
get dbm cfg(instance)
4.15 升级后消除版本问题
db2 bind @db2ubind.lst
db2 bind @db2cli.lst 4.16 查看数据库表的死锁
再用命令中心查询数据时要注意,如果用了交互式查询数据,命令中心将会给所查的记录加了s锁.这时如果要update记录,由于update要使用x锁,排它锁,将会处于锁等待.
首先,将监视开关打开
db2 update dbm cfg using dft_mon_lock on
快照
db2 get snapshot for Locks on cleardb >snap.log
tables
bufferpools
tablespaces
database
然后再看snap.log中的内容即可。
对Lock可根据Application handle(应用程序句柄)看每个应用程序的锁的情况。
监视完毕后,不要忘了将监视器关闭
db2 update dbm cfg using dft_mon_lock off
六、DB2常用知识
以下主要以DB27.X为基础的.以下的字符为小写.
本文对DB2高手来说是不用看的.
1.DB2产品的级别有那些?
企业版的 ENTERPRISE EDITION
工作组版 WORKGROUP EDITION
企业扩展版 ENTERPRISE EXTENDED EDITION
个人版的 PERSONAL EDITION
卫星版的 SATELLITE EDITION
微型版的 EVERYPLACE
2.可以连接到DB2数据库的产品有哪些?
DB2客户端
DB2CONNECT
DB2DATA PROPAGATOR
DB2NET.DATA
DB2DATA JOINER
DB2 RELATIONAL CONNECT
WEBSPHERE应用服务器
等
3.DB2支持的通讯协议有哪些?
TCP/IP
NETBIOS
APPG
IPX/SPX
NAMEPIPE
等
4.DB2客户端产品有哪些?
DB2运行时间客户端DB2 RUNTIME CLIENT
DB2管理客户端DB2ADMINI STRATION CLIENT
DB2应用程序开发客户端DB2 APPLICATION DEVELOP MENT CLIENT
DB2瘦客户端 DB2 THIN CLIENT
5.一个数据库是否可以安装在多个数据库服务器上?
可以
6.从哪个版本后存储过程可以用SQL语句来创建?
7.1版后
7.DB2提供哪些关系扩展器?
文本扩展器 TEXT EXTENDER
图象扩展器 IMAGE EXTENDER
音频扩展器 AUDIO EXTENDER
视频扩展器 VIDEO EXTENDER
空间数据扩展器 SPATIAL EXTENDER
XML扩展器 XML EXTENDER
网络搜索扩展器NET.SEARCH EXTENDER
8.WINDOWS和OS/2环境下的DB2安装目录结构?
用SETUP.EXE来安装
\SQLLIB安装的根目录,包括README文件
\SQLLIB\ADSM包含ADSTAR分布式存储管理器文件
\SQLLIB\BIN包含DB2工具的可执行文件
\SQLLIB\BND包含DB2工具的绑定文件
\SQLLIB\CC包含运行控制中心所需的文件
\SQLLIB\CFG包含默认的系统配置文件 \SQLLIB\CONV包含代码页转换表文件
\SQLLIB\DB2默认的实例目录
\SQLLIB\DB2DAS00缺省的DB2管理服务器目录
\SQLLIB\DOC包含DB2联机手册
\SQLLIB\FUNCTION默认的用户自定义函数目录
\SQLLIB\FUNCTION\UNFENCED默认的非隔离用户自定义函授目录
\SQLLIB\HELP联机帮助文件
\SQLLIB\JAVADB2所需的JAVA类库
JAVA12包含JDK1.2的支持程序
\SQLLIB\MISC包含HTML搜索服务器文件
\SQLLIB\MSG\PRIME包含信息文件
\SQLLIB\QP包含QUERYPATROLLER的客户端文件
\SQLLIB\SAMPLES包含样例程序和样例脚本
\SQLLIB\SPMLOG包含DB2同步点管理器日志文件
\SQLLIB\THNSETUP包含瘦客户端安装文件
9.UNIX和LINUX环境下的DB2安装目录结构?
用DB2SETUP.EXE来安装
安装的根目录下还将创建以下目录:
README安装的根目录,包括README文件
ADM包含系统管理工具文件
ADSM包含ADSTAR分布式存储管理器文件
BIN包含DB2工具的二进制可执行文件
BND包含DB2工具的绑定文件
CC包含运行控制中心所需的文件
CFG包含默认的系统配置文件
CONV包含代码页转换表文件
DOC包含DB2联机手册
FUNCTION默认的用户自定义函数目录
FUNCTION\UNFENCED默认的非隔离用ё远ㄒ搴谀柯?lt;BR> INSTALL包含安装程序
INSTANCE包含实例脚本
JAVADB2所需的JAVA类库
LIBDB2库文件
MAP包含DB2CONNECT使用的映射文件
MISC包含HTML搜索服务器文件
SAMPLES包含样例程序和样例脚本
MSG\$L包含DB2信息文件
10.AIX下用哪个命令来安装DB2?
INSTALLP命令
11.同一操作系统下可以安装多个DB2数据库?
可以的
12.如何停止实例?
DB2STOP
13.如何启动实例?
DB2START
[page]
14.如何修改注册项的值?
DB2SET可以修改
如:
设定当前实例的一个参数
DB2SET PARAMETER=VALUE
设定一个全局级的参数
DB2SET PARAMETER=VALUE-G(小写)
查看能在配置文件注册表中设置的所有变量的列表
DB2SET-LR(小写)
15.如何在CLP执行操作系统的命令?
在命令前加"!"作为前缀
DB2=>!DIR C:\
16.在CLP中命令过长怎么办?
用"\"作为续行符号
17.如何获得DB2的命令的语法相关信息?
DB2 ?显示所有DB2命令
DB2 ? COMMAND显示命令信息
DB2 ? SQLnnnn 显示这个SQLCODE的解释信息
DB2 ? DB2nnnn 显示这个DB2错误的解释信息
18.如何查看当前CLP的设置?
DB2=>LIST COMAND OPTIONS
19.如何更新当前CLP会话的特定项设置?
DB2 UPDATE COMMAND OPTIONS USING OPTIONS...
20.COMMAND WINDOWS可以通过哪个命令调用?
DB2CMD命令
21.管理服务器的默认名为?
UNIX下为DB2AS
WINDOWS下为DB2DAS00
22.常用管理DB2服务器实例的命令?
DB2ADMIN START 启动DB2管理服务器实例
DB2ADMIN STOP 停止DB2管理服器实例
DASICRTUNIX下创建DB2管理服务器实例
DASIDROPUNIX下删除DB2管理服务器实例
DB2 ADMIN CREATE WINDOWS OR OS/2下创建DB2管理服务器实例
DB2 ADMIN DROP WINDOWSOROS/2下删除DB2管理服务器实例
DB2 GET ADMIN CFG 显示DB2管理服务器的配置参数
DB2 UPDATE ADMIN CFG 修改DB2管理服务器的配置参数
DB2 RESET ADMIN CFG将DB2管理服务器的配置参数设为默认值
23.DB2目录分为哪几种?
系统数据库目录
本地数据库目录
节点目录
DCS目录
管理节点目录
24.如何查看系统数据库目录?
LIST DB DIRECTORY
25.如何查看数据库服务器目录?
LIST NODE DIRECTORY
26.DB2实例的服务器的默认端口是?
50000
服务器名称为DB2CDB2
27.DB2UDB服务器端的认证类型有?
SERVER
SERVER_ENCRYPT
CLIENT
DCE
DCE_SERVER_ENCRYPT
KERBEROS KRB_SERVER_ENCRYPT 28.DB2客户端的认证类型有?
SERVER
SERVER_ENCRYPT
DCS
DCS_ENCRYPT
CLIENT
DCE
29.DB2中有哪几种类型的权限?
SYSADM 系统管理权限
SYSCTRL系统控制权限
SYSMAINT系统维护权限
DBADM 数据库管理权限
LOAD 对表进行LOAD操作的权限
30.不能通过GRANT授权的权限有哪种?
SYSAM
SYSCTRL
SYSMAINT
要更该上述权限必须修改数据库管理器配置参数
31.表的类型有哪些?
永久表(基表)
临时表(说明表)
临时表(派生表)
51.安装DB2默认的事例名称是?
在WINDOWS或OS/2中默认的是DB2
在LINUX或UNIX环境下默认的是DB2INST1
52.安装后的默认帐户是?
在WINDOWS或OS/2中默认的是DB2ADMIN
在LINUX或UNIX环境下默认的是DB2AS
53.事例的类型有哪些?
CLIENT(客户)
STANDALONE(独立的)
SATELLITE(卫星)
EEDB2
EEE
68.一个数据库至少包括哪些表空间?
一个目录表空间
一个或多个用户表空间
一个或多个临时表空间[page]
69.根据数据与存储空间之间移动的控制方式不同,分哪两种表空间?
系统管理的空间(SMS)
数据库管理的空间(DMS)
81.表的类型有哪些?
基本表
结果表
概要表
类型表
子类型
子表
声明的临时表
系统临时表
105.DB2数据库监控的两个组成部分?
快照监控(SNAPSHOTMONITOR)可返回特定时间点的数据库活动的快照. 事件监控(EVENTMONITOR)记录事件发生的数据.
106.系统监控的数据元素类型?
计数器(COUNTER)记录活动发生的次数.
测量(GAUGE)测量条目的当前值.
水线(WATERMARK)从监控来元素达到的最大或最小数值.
信息(INFORMATION)监控活动的参照类型细节.
时间点(TIMESTAMP)活动发生的日期时间.
时间(TIME)返回一个活动花费的时间.
114.DB2的SQL语句的类别?
DCL:数据控制语言,提供对数据库对象的访问权限.
DDL:数据定义语言,创建,修改,删除数据库对象的.
DML:数据操纵语言,用来插入,更新,删除数据的.[page]
115.DCL的权限有哪些?
CONTROL权限:如果用户创建一个对象,则改用户能完全访问该对象.
GRANT语句将权限授予给用户.
REVOKE语句撤销一个用户的权限.
116.DDL有哪些?
CREATE
DECLARE
ALTER
DROP
等
117.DML有哪些?
INSERT
SELECT
UPDATE
DELETE
等
118.DB2有没有布尔类型?
没有
119.如何查询DB2的内置函数?
自带文档ADMINISTION-->SQLREFERENCE-->FUNCTIONS内
相关推荐
#### 三、授予用户DB2权限 一旦用户在操作系统级别创建完毕,接下来就需要在DB2数据库中为这些用户授予权限。 1. **连接到DB2数据库**: ```bash db2 connect to sample ``` 这条命令用于连接到名为`sample`的...
在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,其中IBM的DB2是一个广泛使用...通过阅读《db2用户组的概念.doc》这样的文档,可以进一步了解DB2用户组和权限管理的细节,从而更好地优化你的数据库管理实践。
首先,我们需要了解如何在DB2中创建新用户并为其授予权限。例如,假设我们要创建一个名为`dbuser`的用户,并赋予其必要的权限来操作数据库。 ##### 2.1 创建用户 通过操作系统级别的命令创建一个新的用户账户: `...
本篇将详细介绍如何查询DB2中用户和用户组的权限,以及相关SQL脚本的用途。 1. **查询对数据库及对象有特权的user** `select_privilege_u.sql` 这个脚本用于获取特定用户对数据库及其中对象(如表、视图、存储过程...
本篇将详细讲解如何在DB2环境中进行用户权限操作,确保数据的安全性和合规性。 首先,创建用户是在操作系统层面进行的,例如在Linux或Unix系统中,可以使用`useradd`命令创建新用户,并通过`passwd`命令设置密码。...
从给定的文件信息来看,这是一份关于IBM DB2 Connect的用户指南,主要涵盖了DB2 Connect的使用、配置以及与各种技术环境的集成方法。下面将根据标题、描述、标签以及部分内容,深入解析其中涉及的关键知识点。 ### ...
"db2d1c90-management guide-plan.pdf"可能涉及DB2的日常管理和规划,比如数据库的创建、表空间管理、用户权限控制、日志管理、事务处理等。管理指南是DBA(数据库管理员)进行系统维护的重要参考资料,它有助于确保...
通过使用Visual Explain,DB2管理员可以详细了解查询的执行路径,从而调整索引策略、表结构或查询语法,以提高查询效率。 #### 索引与统计信息 为了提高查询速度,DB2支持创建索引。索引是数据库中的一种数据结构...
8. **db2umplugin.jar**:可能是DB2用户管理插件,用于处理用户认证和权限管理。 9. **db2c2c.jar**:这个文件名不常见,可能包含特定于某个组件或功能的类库,具体用途需要查阅官方文档确认。 10. **db2jcc_...
无论是Linux还是Windows操作系统环境,了解如何查看DB2的端口号对于系统管理员和数据库开发者而言都是必备技能。本文将深入探讨在Linux和Windows操作系统下查看DB2端口号的方法,帮助读者更好地管理DB2服务。 ### ...
首先,DB2权限系统提供了一套严谨的权限级别,确保了对数据库的访问和操作得到适当控制。以下是五种主要的权限: 1. SYSADM(系统管理员)权限:这是最高级别的权限,类似于操作系统中的超级用户权限。拥有SYSADM...
知识点:Linux系统中的用户和用户组管理,包括用户和用户组的创建、管理和权限设置。 2. 软件包的安装:在安装DB2之前,需要安装相应的软件包,例如libaio.so.1和libstdc++.so.5等。这些软件包是DB2数据库的依赖包...
1. **创建用户与用户组**:首先,为了系统安全和权限管理,需要创建DB2的专用用户组和用户。在CentOS中,通过`groupadd`命令创建三个用户组`db2iadm1`、`db2fadm1`和`db2dadm1`,分别用于DB2实例管理员、DB2服务管理...
1. **DB2 9 Runtime Client**:仅提供API访问权限,适用于只需访问DB2 9数据服务器的应用程序。 2. **DB2 9 Client**:标准客户端,支持数据库管理功能,替代了DB2 8 Application Development和DB2 8 Administration...
在本篇文章中,我们将详细介绍如何在 Ubuntu 操作系统上安装 IBM DB2 数据库系统。DB2 是一款功能强大的数据库管理系统,支持多种高级特性如存储过程、触发器以及数据分区等,并且提供了丰富的图形化管理工具。尽管...
权限管理是确保数据库安全的重要手段,本文主要探讨了DB2中的权限机制,包括身份验证、授权和特权。 首先,DB2的安全机制主要围绕三个核心部分:身份验证、授权和特权。身份验证涉及到用户在尝试访问DB2实例或...
此JAR文件是连接驱动的一部分,因为它验证了用户对DB2 JDBC驱动的合法使用权限。 3. **db2jcc4.jar**:这是DB2的一个更新版本,相对于db2jcc.jar,db2jcc4.jar提供了更现代的API支持和性能改进。它同样是一个Type 4...
在使用DB2驱动时,必须有此文件,否则可能会遇到连接失败的问题,因为它验证了用户是否有合法的DB2使用权限。 在Java项目中,尤其是使用Hibernate这样的对象关系映射框架时,这些驱动JAR文件需要被添加到项目的类...