db2快速入门指南
- 格式:doc
- 大小:471.50 KB
- 文档页数:15
安装DB2企业版数据库
1. Windows环境
更改安装路径为d:\IBM\SQLLIB
默认端口50000,可以更改
安装时需要建db2admin用户,权限为系统管理员,为了安全一定要有密码
DB2安装目录结构
\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\JA VADB2所需的JA VA类库
JA V A12包含JDK1.2的支持程序
\SQLLIB\MISC包含HTML搜索服务器文件
\SQLLIB\MSG\PRIME包含信息文件
\SQLLIB\QP包含QUERYPA TROLLER的客户端文件
\SQLLIB\SAMPLES包含样例程序和样例脚本
\SQLLIB\SPMLOG包含DB2同步点管理器日志文件
\SQLLIB\THNSETUP包含瘦客户端安装文件
2. Unix环境
安装比较麻烦,AIX简单内核参数调整少,其他调整比较多。
db2文档有说明。
DB2安装目录结构
README安装的根目录,包括README文件
ADM包含系统管理工具文件
ADSM包含ADSTAR分布式存储管理器文件
BIN包含DB2工具的二进制可执行文件
BND包含DB2工具的绑定文件
CC包含运行控制中心所需的文件
CFG包含默认的系统配置文件
CONV包含代码页转换表文件
DOC包含DB2联机手册
FUNCTION默认的用户自定义函数目录
FUNCTION\UNFENCED默认的非隔离用户自定义函授目录
INSTALL包含安装程序
INSTANCE包含实例脚本
JA V ADB2所需的JA VA类库
LIBDB2库文件
MAP包含DB2CONNECT使用的映射文件
MISC包含HTML搜索服务器文件
SAMPLES包含样例程序和样例脚本
MSG\$L包含DB2信息文件
3. Windows环境默认服务
数据库管理DB2DAS - DB2DAS00
administrator或db2admin用户登录操作系统
启动
方法1:直接在【服务】中启动
如果db2admin更改密码,那么服务属性登录项中密码也需要相应更改,否则不能正常启动。
或使用命令更改与"管理服务器"相关的口令
db2admin setid username password
方法2:【开始】->【运行】db2cmd->db2admin start
停止
方法1:直接在【服务】中停止
方法2:【开始】->【运行】db2cmd->db2admin stop
数据库实例服务DB2 - DB2-0 (建库后产生)
启动
方法1:直接在【服务】中启动
方法2:【开始】->【运行】db2cmd->db2start
停止
方法1:直接在【服务】中停止
方法2:【开始】->【运行】db2cmd->db2stop
4. UNIX环境默认服务
数据库管理服务DB2AS
dasusr1用户登录操作系统
启动管理服务db2admin start
停止管理服务db2admin stop
数据库实例服务
db2inst1用户登录操作系统
启动实例服务db2start
停止实例服务db2stop
查看db2信息技巧
【开始】->【运行】db2cmd,进入db2环境
db2 ?
列出db2管理命令
db2?COMMAND显示命令信息
db2?SQLnnnn显示这个SQLCODE的解释信息
DB2 SQL error: SQLCODE: -302, SQLSTATE: 22001, SQLERRMC: null
以上是程序中捕获的错误信息,查看解释信息:
db2 ? sql302
DB2?DB2nnnn显示这个DB2错误的解释信息
DB2 V8.2信息中心
/infocenter/db2luw/v8/index.jsp
DB2 V9.1信息中心
/infocenter/db2luw/v9/index.jsp
建立数据库对象过程
1.建库,数据库名称AWPDB,系统表空间为SMS,数据表空间为DMS。
2.建BUFFERPOOL
足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘I/O
这一最耗时的操作。
大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。
默认的IBMDEFAULTBP为4K页大小的,还需根据表空间情况建立不同页大小的BUFFERPOOL,页的数量根据内存而定。
如8K BUFFERPOOL 使用内存2G:
CREATE BUFFERPOOL BP_8K SIZE 262144 PAGESIZE 8192 NOT EXTENDED STORAGE;
3.建表空间
表空间
数据库中的所有数据都存储在许多表空间中。
可以认为表空间是孩子而数据库是其父母,其中表空间(孩子)不能有多个数据库(父母)。
由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。
根据用途有五种不同的表空间:
1.目录表空间
每个数据库只有一个目录表空间,它是在发出CREATE DATABASE 命令时创建的。
目录表空间被DB2 命名为SYSCA TSPACE,它保存了系统目录表。
总是在创建数据库时创建该表空间。
2.常规表空间
常规表空间保存表数据和索引。
它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。
如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。
每个数据库中必须至少有一个常规表空间。
创建数据库时指定该表空间的缺省名为USERSPACE1。
3.长表空间
长表空间用于存储长型或LOB 表列,它们必须驻留在DMS 表空间中。
它们还可以存储结构化类型的列或索引数据。
如果没有定义长表空间,那么将把LOB 存储在常规表空间中。
长表空间是可选的,缺省情况下一个都不创建。
4.系统临时表空间
系统临时表空间用于存储SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。
每个数据库必须至少有一个系统临时表空间。
随数据库创建的系统临时表空间的缺省名为TEMPSPACE1。
5.用户临时表空间
用户临时表空间存储已声明的全局临时表。
创建数据库时不存在用户临时表空间。
至少应当创建一个用户临时表空间以允许定义已声明的临时表。
用户临时表空间是可选的,缺省情况下一个都不创建。
表空间管理
可以用两种不同的方式管理表空间:
1.系统管理的空间(SMS)
SMS 表空间由操作系统进行管理。
容器被定义成常规操作系统文件,并且是通过操作系统调用访问的。
这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲I/O;根据操作系统约定分配空间;如有必要就自动扩展表空间。
但是,不能从SMS 表空间删除容器,并且仅限于将新的容器添加到分区的数据库。
前一
节中所说明的那三个缺省表空间都是SMS。
2.数据库管理的空间(DMS)
DMS 表空间是由DB2 管理的。
可以将容器定义成文件(在创建表空间时将把给定的大小全部分配给它们)或设备。
分配方法和操作系统允许多少I/O,DB2 就可以管理多少I/O。
可以通过使用ALTER TABLESPACE 命令来扩展容器。
还可以释放未使用的那部分DMS 容器(从V8 开始)。
说明:DB2 V9.5及以后没有此限制
建表空间时需要指定BUFFERPOOL,并且不同页大小的表空间需要对应不同的页大小的BUFFERPOOL。
区别:Oracle建库时页大小如果是8K,那么表空间都是8K。
DB2建库默认方式页大小为4K,可以指定页大小,并且具有指定页大小的BUFFERPOOL。
EXTENTSIZE为32 (根据表空间大小调整,25M与250M之间为16,250M与2G之间为32,大于2G为64)
PREFETCHSIZE大小为EXTENTSIZE*容器数量,而windows环境可以同EXTENTSIZE,因磁盘因数。
OVERHEAD根据磁盘情况设定(用控制中心建表空间时可以详细查看)TRANSFERRATE根据磁盘情况设定(用控制中心建表空间时可以详细查看)
表空间页大小需要根据实际表字段总长度确定,如:
码表为4K或8K的表空间,
客户、账户表为8K的表空间
流水表为16K的表空间。
3.建立用户
需要在操作系统建用户,如AWP,隶属于Users。
使用控制中心新建数据库用户,选择操作系统用户AWP,再选择相应的权限。
GRANT
CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICI T_SCHEMA,LOAD,CREA TE_EXTERNAL_ROUTINE
ON DATABASE TO USER AWP;
4.建表、索引、视图、函数、存储过程、序列等
使用AWP用户建立数据库对象。
连接远程数据库
命令方式建立连接
1.建立编目节点信息
CA TALOG TCPIP NODE 编目节点名称
REMOTE IP地址
SERVER 端口
REMOTE_INSTANCE 远程实例名称
OSTYPE 系统类型名称
WITH '编目节点说明';
CA TALOG TCPIP NODE srp88
REMOTE 158.222.2.88
SERVER 50001
REMOTE_INSTANCE srp88
OSTYPE LINUX
WITH 'srp88';
CA TALOG DATABASE IST1104
AS IST1104
AT NODE srp88
AUTHENTICATION SERVER;
OSTYPE 系统类型
NT --Windows
AIX --IBM AIX
HPUX --HP UX
LINUX --LINUX
2.建立编目库连接信息
CA TALOG DATABASE 数据库名称
AS 别名
A T NODE 编目节点名称
AUTHENTICATION SERVER;
3.建立编目到系统ODBC
CA TALOG SYSTEM ODBC DA TA SOURCE 数据库名称或别名;
4.测试连接
db2 connect to数据库名称user 用户名称using密码
注意:如果数据库代码页不同需要修改代码页才可以连通。
如字符集为ISO8859-1的代码页
为819,数据库客户端默认安装为1386(Windonws中文系统环境),需要先在db2cmd环境执行:
db2set DB2CODEPAGE=819
再重新连接。
查看代码页:db2set 或db2set -all
图形方式建立连接
进入配置助手图形界面,开始】->【运行】db2ca
配置助手 1
配置助手 2
配置助手 3
配置助手 4
配置助手 5
配置助手 6
配置助手7 点击完成,并测试是否正确连接数据库。
查看数据库信息
telnet登录数据库主机
1.连接数据库(数据库名称awpdb)
db2 connect to awpdb user awp using awp
如果本身是awp用户可以不用输入用户名和密码db2 connect to awpdb
2.查看db2注册表信息
db2set
3.查看db2set帮助
db2set -?或db2set –h
4.查看数据库管理配置参数
db2 get dbm cfg
5.查看数据库配置参数
db2 get db cfg for awpdb
6.查看表空间
db2 list tablespaces
db2 list tablespaces show detail
表空间的状态应为:State = 0x0000
7.查看活动的数据库和连接数
db2 list active databases
8.查看当前连接的应用程序的信息
db2 list application [show detail]
Application Name 项可以得知是什么工具连接数据库
Application Id 第一段为16进制的IP地址,第三段为日期时间
9.查看诊断日志
通过db2 get dbm cfg 查看DIAGPA TH参数值,得知诊断日志路径
vi db2diag.log
10.查看表结构
db2 describe table t00_user
select colno+1 as colno,colname,typename,length,scale,nulls
from syscat.columns
where tabschema='AWP' and tabname='T00_USER'
order by colon
11.查看表索引
db2 describe indexes for table aml.t00_user
select indname,colnames,uniquerule,colcount,create_time
from syscat.indexes
where indschema='AWP'
and tabschema='AWP'
and tabname='T00_USER'
12.查看视图
select viewname,seqno,readonly,valid,text
from syscat.views
where viewschema='AML'
注意:valid字段值,如果为’X’,需要重新绑定(Oracle概念为编译),或重新建立。
13.查看存储过程
SELECT *
FROM SYSCAT.PROCEDURES
where procschema='AWP'
14.查看SYSCAT.ROUTINES
DB2 UDF,系统方法(system-generated method),用户定义方法(user-defined method)和
15.查看SYSCAT.ROUTINEDEP
16.SYSCAT.PACKAGEDEP
说明了Pachage 与其他数据库对象的依赖关系
17.SYSCAT.TABDEP
说明了视图或者固化视图和DB2 对象之间的依赖关系。
操作数据库命令及SQL语句
1.连接数据库
db2 connect to awpdb ----如果是awp用户登录
db2 connect to awpdb user awp using awp
2.断开连接数据库
db2 terminate
3.断开某个连接
db2 list applications
查看相应Appl Handle
db2 “force application(h1 [,h2,..,hn])”
4.断开所有连接
db2 force application all
需要注意:Unix 环境db2 connect reset或db2 disconnect awpdb也可以断开连接,但不会释放db2bp进程,当你修改了一些参数以后,用terminate的话,下次的CLP命令(比如一个新的connect语句)此参数就会生效;而用connect reset则还不会生效。
5.进入db2 clp 命令行环境
db2cmd----Windows环境使用
如:db2 -t ----已’;’号结束SQL语句
db2 =>connect to awpdb; --连接数据库
db2 =>select t1,t2 from table_name;
db2 =>connect reset; --断开数据库连接但不退出clp
db2 =>quit; --退出clp
如果只quit,退出clp但数据库连接不断开
db2 => terminate; --断开数据库连接,并退出clp
6.执行sql文件
db2 -tvf run.sql
7.查看db2 clp 命令行环境选项
db2 ? options
选项描述默认设置
-a 显示SQLCA OFF
-c 自动提交ON
-e 显示SQLCODE/SQLSTATE OFF
-f 从输入文件读内容OFF
-l 历史文件中的日志记录命令OFF
-n 删除换行字符OFF
-o 显示输出ON
-p 显示db2 交互性命令ON
-r 将输出报告保存到文件OFF
-s 出现命令错误时停止执行OFF
-t 设置语句终止符OFF
-v 回送当前命令OFF
-w 显示FETCH/SELECT 警告消息ON
-x 省略列标题的打印OFF
-z 将所有输出保存到输出文件OFF
如:关闭自动提交,缺省是自动提交autocommit
db2 update command options using c off
或
db2 +c “ update table_name set t1=’a’ where t2=’x’”
8.把创建在数据库中已定义的对象生成DDL,包括表空间、配置文件。
db2look -d awpdb -u awp -a -e -l -c -f -o awpdb.ddl
9.复制表结构建立新表
create table table_cp1 as
(select * from table_s1)
definition only in ts_dat01 index in ts_ind01
not logged initially;
必须指定表空间
10.不做日志清空表
db2 alter table XXX activate not logged initially with empty table
或
Windows环境(0.dat 文件大小为零字节)
db2 import from 0.dat of del replace into table_name
UNIX环境
db2 import from /dev/null of del replace into table_name
11.使用基准测试工具(db2batch)来测量执行该查询的实际代价
db2batch -d <db name> -a username/password -f <file name> -r benchmark.txt
插入多条记录
insert into table_code values
('user01','业务申请'),
('user02','业务撤消'),
('user03','费用查询'),
('user04','费用自缴'),
('user05','费用预存'),
('user06','密码修改');
限制删除行数
FOR lv AS temp_cur CURSOR FOR
SELECT * FROM table_name
FETCH FIRST 5000 ROWS ONL Y
FOR UPDATE DO
DELETE FROM table_name
WHERE CURRENT OF temp_cur;
END FOR;
收集表信息
runstats on table aml.table_name with distribution and detailed indexes all;
查看锁信息
select * from table(snapshot_lock('frpdb',-1)) as lock
时间
SYSDATE = "current date";
SYSTIMESTAMP="current timestamp";
SYSTABLE = "sysibm.sysdummy1";。