DB2学习总结.docx
- 文档编号:5355409
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:14
- 大小:194.10KB
DB2学习总结.docx
《DB2学习总结.docx》由会员分享,可在线阅读,更多相关《DB2学习总结.docx(14页珍藏版)》请在冰豆网上搜索。
DB2学习总结
DB2学习整理笔记
●数据库软件安装(v9.7)
●软件下载
IBM官方网站,需注册账号。
●解压db2安装包
#tar-zxvfv9.7_linuxx64_server.tar.gz
进入server目录下,执行安装检查
[root]#cdserver[root]#./db2prereqcheck
●运行安装程序
[root]#./db2_install------no-------ese---
●安装license
db2licm-l命令可以查看到db2的license信息。
可以找一个永久的license添加到db2数据库即可,把db2ese_c.lic放到一目录下:
/opt/ibm/db2/V9.7/license/db2ese_c.lic,在/opt/ibm/db2/V9.7/adm/目录下执行:
db2licm-a/opt/ibm/db2/V9.7/license/db2ese_c.lic
●创建DB2运行所需要的用户组和用户
[root]#groupadd-g901db2iadm
[root]#groupadd-g902db2fadm
[root]#groupadd-g903dasadm
[root]#useradd-gdb2iadm-u801-d/home/db2inst-mdb2inst(管理当前实例)
[root]#useradd-gdb2fadm-u802-d/home/db2fenc1-mdb2fenc
[root]#useradd-gdasadm-u803-d/home/dasadm1-mdasusr(管理所有实例)
●为用户创建密码
passwddb2inst
●创建实例
[root]#cd/opt/ibm/db2/V9.7/instance
[root]#./dascrt-udasusr
[root]#./db2icrt-udb2fencdb2inst(db2fenc表示将用来运行受防护用户定义的函数(UDF)和受防护存储过程的用户的名称,db2inst用户实例实例的名称必须与拥有实例的用户的名称相同)
●启动db2实例
su-dasusr
[dasusr]#.das/dasprofile
[dasusr]#db2adminstart
su-db2inst
[db2inst]#.sqllib/db2profile
[db2inst]#db2start
[db2inst]#db2getinstance
●关闭、启动数据库
[db2inst]#db2forceapplicationsall
[db2inst]#db2stop
[db2inst]#db2start
●创建样本库
[db2inst]#cd/opt/ibm/db2/V9.7/bin
[db2inst]#./db2sampl
●设置DB2自启动
[root]#cd/opt/ibm/db2/V9.7/instance
[root]#./db2iauto-ondb2inst
●配置TCPIP
su-db2inst
[db2inst]#db2set-all
[db2inst]#db2setDB2COMM=TCPIP
db2inst]#db2setdb2codepage=1386(简体中文)
[db2inst]#db2getdbmcfg|grepSVCENAME
[db2inst]#tail/etc/services
[db2inst]#vim/etc/services(确保SVCENAME与/etc/services中端口保持一致。
)
[db2inst]#db2updatedbmcfgusingSVCENAME60000(直接指定端口或使用名称与/etc/services中保持一致即可.linux端口默认为60000,windows端口默认为50000)
[db2inst]#db2stop/db2stopforce
[db2inst]#db2start
[db2inst]#netstat-ano|grep60000
附:
如果系统为CENTOS7,可能会因为防火墙问题导致50000端口被禁用
解决方法:
su-root
systemctlstopfirewalld.service
或者将50000端口加入防火墙信任:
firewall-cmd--permanent--zone=public--add-port=50000/tcp
重启防火墙:
systemctlstopfirewalld.servicesystemctlstartfirewalld.service
●数据库创建
●一、创建数据库
[db2inst]#db2
[db2inst]#createdatabasedevelop或db2 create db
[db2inst]#connectreset(连接复位)
[db2inst]#terminate(编译)
[db2inst]#connecttodevelopuserdb2instusingdb2inst
[db2inst]#listdbdirectory
[root]#useradd-gdb2iadmdb2test(db2iadm数据库用户组)
[root]#passwddb2test
[db2inst]#db2
[db2inst]#conencttodevelop
[db2inst]#grantconnectondatabasetouserdb2test
[db2inst]#grantdbadmondatabasetouserdb2test
[db2inst]#db2getauthorizations
[db2inst]#revokedbadmondatabasefromuserdb2test
[db2inst]#db2 "grant use of tablespace
详细权限说明见《DB2权限说明.docx》
实例
●二、创建表空间
[db2inst]#db2 create bufferpool bp32k all nodes size -1 pagesize 32k (新建缓冲池)
[db2inst]#db2createbufferpooltmppoolsize500pagesize32k(临时缓冲区)
[db2inst]#db2 alter bufferpool bp32k size 2g (调整缓冲池大小)
[db2inst]#dropbufferpool (删除缓冲区)
[db2inst]#db2"listtablespacesshowdetail"(查看表空间)
[db2inst]#db2 "create regular tablespace tablespace1 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace1' 5g) bufferpool bp32k"(当指向外置盘时,file改为device)
[db2inst]#db2 "create temporary tablespace tmptablespace pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace1' 5g) extentsize80bufferpooltmppool"(临时表空间)
[db2inst]#db2 ALTER TABLESPACE
[db2inst]#db2DROPTABLESPACE
[db2inst]#db2alterdatabasedbnameaddstorageon‘路径1,路径2···’数据库支持自动存储v9.7以后支持该命令
[db2inst]#db2altertablespacetbspnamemanagedbyautomaticstorge;转自动存储第一步
[db2inst]#db2altertablespacetbspnamerebalance;转自动存储第二步
●三、编目系统数据库目录
[db2inst]#db2 catalog tcpip node 结点名字 remote 结点所在ip地址 server 服务端口
[db2inst]#db2 uncatalog node 结点别名
[db2inst]#db2 catalog db 远程数据库名字 as 数据库别名 at node 结点名字
[db2inst]#db2 uncatalog db数据库别名
●四、创建数据库SCHEMA
[db2inst]#db2"valuescurrentschema"
[db2inst]#db2"selectSCHEMANAMEfromsyscat.SCHEMATA"
[db2inst]#db2"createschematest"
[db2inst]#db2
[db2inst]#connecttodevelopuserdb2testusingdb2test
[db2inst]#selectcurrentschemafromsysibm.sysdummy1
[db2inst]#setcurrentschemaschemaname
[db2inst]#dropschemaschemanamerestrict
●数据库参数修改
[db2inst]#db2updatedbconfigfordevelopusingapplheapsz256(修改数据库的应用程序内存堆大小)
[db2inst]#db2updatedbcfgfordevelopusingAUTO_MAINTONAUTO_TBL_MAINTONAUTO_RUNSTATSON(修改数据表统计为自动统计,修改时get查看参数目录层次)
[db2inst]#db2getdbmcfg(查看实例设置)
[db2inst]#db2updatedbmcfgusing参数名新值(修改实例设置)
[db2inst]#db2getdbcfgfordevelop(查看数据库设置)
[db2inst]#db2updatedbcfgforusing参数名新值(修改数据库参数)
[db2inst]#db2set-all查看数据参数
[db2inst]#db2setDB2_COMPATIBILITY_VECTOR=ORA设置兼容oracle
[db2inst]#db2setDB2_COMPATIBILITY_VECTOR=回车删除兼容oracle
注意:
修改参数后重启数据库
●数据库导入导出
Contents
-使用db2backup指令备份
-使用db2restore指令恢复
-使用db2look提取数据库结构DDL
-用于数据移动的文件格式
-使用db2move导出全部数据
-使用db2export指令导出数据
-使用db2move导入(import)数据
-使用db2import指令导入数据
●db2backup指令备份
首先关闭所有到数据库的连接,将数据库置为“静默”状态:
$db2connecttotestdbuserdb2inst1usingthepasswd
$db2quiescedatabaseimmediateforceconnections
$db2connectreset
现在可以开始备份了:
$db2backupdatabasetestdbto“/home/backup”userdb2inst1usingthepasswd
解除数据库的“静默”状态:
$db2connecttotestdbuserdb2inst1usingthepasswd
$db2unquiescedatabase
$db2connectreset
说明:
1,以上指令将会把数据库testdb备份到指定目录/home/backup下,所以请确保当前登陆用户(db2inst1)对该目录有读写的权限。
题外话,若打算使用root用户来执行备份,请先编辑文件/etc/group,将root用户加入到与DB2相关的几个组:
db2grp1,db2fgrp1,dasadm1.
2,生成的备份文件名如下:
TESTDB.0.db2inst1.NODE0000.CATN0000.20050131205259.001
●使用db2restore指令恢复
相同库名恢复:
$db2restoredatabasetestdbfrom“/home/backup”
说明:
这将会从指定的位置恢复数据库testdb。
不同库名恢复:
$db2restoredatabasetestdbfrom“/home/backup”intotestdb_new
说明:
这个指令将会建立一个新库,名为testdb_new,其结构、内容来自原先testdb的备份。
●使用db2look提取数据库结构DDL
提取DDL
$db2look–dtestdb–a–e–x–otestdb.sql
$db2-tvftestdb.sql-zlog.log
参数的含义与用法请参考db2look的help.
编辑得到的DDL文件
使用db2look得到的DDL文件无法直接使用,因为其中存在一些与当前系统相关的特殊信息,所以需要对该文件进行编辑。
共有几个方面:
1,去掉文件头、尾的指令:
CONNECTTOTESTDB;
COMMITWORK;
CONNECTRESET;
TERMINATE;
位于这几句指令之间的就是定义该数据库的DDL语句,去掉这几句话让这个文件变成一个纯粹的DDL文件,另外,有时候很容易发生DB2指令执行错误,将四句指令放到文件外手动执行更有助troubleshooting.
2,去掉schemaname.
在本案例中schemaname是db2inst1。
因为在进行异种平台的数据移动的时候会发生schemaname的变化,最常见的就是从UNIX类系统迁移到Windows平台的时候,它缺省的schemaname分别为db2inst1,db2admin.
3,去掉全部引号
此经验主要来自Oracle,一个object,定义它的时候,使用了引号与没有使用引号是两个不同的object.
4,去掉createtable语句中指定的tablespace
这个原因与2类似,在数据移动的过程中,tablespacename发生变化是很经常的事情,所以不要指定,让(不同的)系统自己决定。
有一点非常重要,需要强调,若存在比较大的字段,就必须创建pagesize比较大的bufferpool,在创建一个tablespace使用该bufferpool。
用于数据移动的文件格式
这个部分简单介绍一下用于DB2数据移动的文件格式,共有四种:
1.ASC
非定界ASCII文件,是一个ASCII字符流。
数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。
例如:
10HeadOffice160CorporateNewYork
15NewEngland50EasternBoston
20MidAtlantic10EasternWashington
38SouthAtlantic30EasternAtlanta
42GreatLakes100MidwestChicago
51Plains140MidwestDallas
66Pacific270WesternSanFrancisco
84Mountain290WesternDenver
2.DEL
定界ASCII文件,也是一个ASCII字符流。
数据流中的行由行定界符分隔,行中的列值由列定界符分隔。
文件类型修饰符可用于修改这些定界符的默认值。
例如:
10,"HeadOffice",160,"Corporate","NewYork"
15,"NewEngland",50,"Eastern","Boston"
20,"MidAtlantic",10,"Eastern","Washington"
38,"SouthAtlantic",30,"Eastern","Atlanta"
42,"GreatLakes",100,"Midwest","Chicago"
51,"Plains",140,"Midwest","Dallas"
66,"Pacific",270,"Western","SanFrancisco"
84,"Mountain",290,"Western","Denver"
3.WSF
worksheetformat,工作表格式,用于与Lotus系列的软件进行数据交换。
4.PC/IXF
集成交换格式(IntegrationExchangeFormat,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条数据记录。
PC/IXF文件记录由包含了字符数据的字段组成。
●db2move导出/导入全部数据
db2move是一个集成式的数据移动工具,它支持导出(export)、导入(import)、装入(load)三种操作方式。
其实db2move的这三种工作方式分别是通过简单使用db2export,db2import,db2load指令来完成的。
此部分仅仅介绍其export功能,import和load将在稍后的部分介绍。
使用db2move导出的数据文件格式是IXF。
建立并进入数据存放目录:
$mkdir/home/backup/mydata
$cd/home/backup/mydata
导出指定的数据库中的全部数据:
$db2movetestdbexport–udb2inst1–pthepasswd
说明:
1,这将会把数据库testdb中的全部数据提取到当前目录(/home/backup/mydata)中。
每个表的内容都存储在一个.ixf文件中,每个.ixf文件都有一个与之相对应的.msg文件,.msg文件是描述从表中导出数据时的信息的。
另外还有两个文件,db2move.lst用来记录.ixf文件、.msg文件与表的一一对应关系,EXPORT.out记录的是导出数据时的屏幕输出。
2,有关db2move指令更多的细节,请直接执行该指令,将会打印出其帮助信息。
使用db2export指令导出数据
与上面提到的db2move的export功能不同,db2export是一个更加细致的导出工具,它支持三种数据文件格式:
DEL,WSF,IXF.
以下示范将数据库testdb中表mytbl的数据导出,存储在目录/home/backup下。
建立到数据库的连接:
$db2
db2=>connecttotestdbuserdb2inst1usingthepasswd
以DEL格式导出:
db2=>exportto/home/backup/mytbl.txtofdelselect*frommytbl
以IXF格式导出:
db2=>exportto/home/backup/mytbl.ixfofixfselect*frommytbl
注:
若需要记录导出过程中的message,使用:
db2=>exportto/home/backup/mytbl.ixfofixfmessages/home/backup/mytbl.msgselect*frommytbl
断开连接:
db2=>connectreset
db2=>quit
$
更多有关db2export的帮助,请:
$db2?
export
使用db2move导入(import)数据
以db2inst1用户身份登录到Host2。
创建数据库mytestdb:
$db2
db2=>createdatabasemytestdbon‘/home/db2inst1’usingcodesetUTF-8territoryCN
db2=>connecttomytestdbuserdb2inst1usingthepasswd
创建一个pagesize为16K的bufferpool,名为mybigpool:
db2=>createbufferpoolmybigpoolimmediatesize1000pagesize16K
创建一个tablespace使用上面创建的bufferpool,名为mybigspace:
db2=>createregulartablespacemybigspacepagesize16Kmanagedbysystemusing(‘/home/db2inst1/db2inst1/NODE0000/SQL00004/SQLT0003.0’)extentsize16overhead12.67prefetchsize16transferrate0.18bufferpoolmybigpooldroppedtablerecoveryoff
注:
extentsize,overhead,prefetchsize,transferrate这几个参数值与所使用的服务器有关,我这里使用的值是基于普通的、使用SCSI硬盘的PC服务器的。
完成空库的创建:
db2=>commitwork
db2=>connectreset
db2=>terminate
导入(import)数据:
使用import方式不需要先建表结构,即,准备好一个空库就行了。
这一点与load方式不一样,load方式需要先建立表结构。
我将从Host1上导出的全部数据文件(位于Host1的/home/backup/mydata下)复制到Host2下某个目录下,假定为/home/movedata
$cd/hom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 学习 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)