DB2命令总汇+详解.docx
《DB2命令总汇+详解.docx》由会员分享,可在线阅读,更多相关《DB2命令总汇+详解.docx(59页珍藏版)》请在冰点文库上搜索。
DB2命令总汇+详解
DB2常用命令汇总之一
db2-tvfmy.sql
db2level显示db2的版本号
显示SQL出错信息
db2"?
sql6031"
db2mtrk
管理DAS
产生:
root运行-dascrt-udasuser1
删除:
root运行-dasdrop
启动:
dasusr1运行-db2adminstart
停止:
dasusr1运行-db2adminstop
db2_kill
ipclean
db2startdbpartitionnum9restart
AIX启动控制中心:
db2cc
DB2用户管理:
db2useostomanageusers.Youcanusefollowingstepstoaddadb2user:
1,addauseronos.
2,grantrightstouser.
GRANT CREATETAB,CONNECTONDATABASE TOUSERFUJIE;
grantselect,update,deleteontableemployeetouserjohnwithgrantoption
一,实例
产生
db2icrt-aAuthType(SERVER,CLIENT,SERVER_ENCRYPT)-pPORT_NAME
表空间PREFETCHSIZE的设置,EXTENTSIZE的关系,缓冲池的监控,页清除程序的多少。
临时表空间页面大小与其他表空间页面大小的设置,临时表空间与缓冲池的设置。
example:
db2icrtdb2-sese-pd:
/db2-uAdministrator
注意:
在UNIX上产生实例时需要产生一个和实例名称相同的用户名,和fencedid用户。
如:
db2icrt-sese-udb2fenc2db2inst2将在db2inst2用户中产生实例db2inst2.
缺省创建32位实例,创建64位实例:
db2icrt-sese-w64-udb2fenc2db2inst2
删除
db2idropinstance-name
启动
db2start
停止
db2stopforce
连接
db2attachtotestdb2
db2detach
列出实例
db2ilist
设置当前实例
setdb2instance=
得到当前实例
db2getinstance
设置实例自动重启动UNIX
db2iauto-on
db2iauto-off
获取实例的配置参数
db2getdbmcfg
修改配置参数
例如:
db2updatedbmcfgusingauthenticationserver_encrypt
db2stopanddb2start
二,声明注册表和环境变量
db2set 注意:
设置完成后需要退出用户,再注册进入才能生效。
列出所有受支持的变量
db2set-lr
列出当前实例所有已定义的变量
db2set
要列出概要文件注册表中所有定义的注册表变量
db2set-all
列出单个变量
db2setregistry_variable_name
更改变量
db2setregistry_variable_name=new_value
变量复位为缺省值
db2set-rregistry_variable_name
db2setDB2CODEPAGE=819
db2setDB2CODEPAGE=1386
db2-tvfmy_sql.sql
三,创建节点配置文件
db2nodes.cfg
UNIX格式:
dbpartitionnum(0-999)hostname[logical-port[netname]]
WIN 格式:
nodenumberhostnamecomputernamelogical_portnetname
四,管理服务器
<配置助手,控制中心,开发中心>通过DAS来进行工作
创建DAS
db2admincreate(windows)
dascrt-u 需要root权限
启动和停止
db2adminstart
db2adminstop
列出
db2admin
配置DAS
db2getadmincfg
db2updateadmincfgusing
db2resetadmincfg
最好stop再start
五,配置多个逻辑节点
可以用两个方法来配置多个逻辑节点:
*在db2nodes.cfg文件中配置逻辑节点(数据库分区).然后,可使用db2start启动所有逻辑和远程节点.
对于windowsnt,若系统中没有数据库,则必须使用db2ncrt来添加节点,否则,若一个或多个数据库,
则应使用db2startaddnode命令.在nt中,不能手工编辑db2nodes.cfg文件.
db2ncrt/n:
1/u:
administrator,yhnu0987/m:
fujie/p:
1/h:
fujie
db2startaddnodenodenum1hostnameguosdport1computerGUOSDuserdb2adminpassworddb2admin
*在另一个处理器上重新启动一个逻辑节点,其他逻辑数据库分区(节点)已在该处理器上运行.这允许覆盖
在db2nodes.cfg中为逻辑数据库分区指定的主机名和端口号.
在WIN中添加逻辑节点
db2ncrt/n:
1/u:
Administrator,/i:
db2/m:
FUJIE/p:
1
#删除逻辑节点
db2ndrop
有数据库的时候使用db2stopdropnodenum
#改变逻辑节点
db2nchg
DB2常用命令汇总之二
六,创建数据库
创建数据库时,完成如下任务:
*设置数据库所需的所有系统目录表
*分配数据库恢复日志
*创建数据库配置文件,设置缺省值
*将数据库实用程序与数据库绑定
初始数据库分区组的定义
当最初创建数据库时,会为所有在db2nodes.cfg文件中指定的分区创建数据库分区.可以用
adddbpartitionnum和dropdbpartitionnumverify命令来添加或除去其他分区.
定义了三个数据库分区组:
*用于容纳syscatspace表空间的ibmcatgroup,保存系统目录表
*用于容纳tempspaces1表空间的ibmtempgroup,保存系统临时表
*用于容纳userspace1表空间的ibmdefaultgroup,缺省保存用户表和索引
(创建新的数据库后最好重新启动db2clp)
EXAMPLE:
CREATEDATABASEPERSONL
CATALOGTABLESPACE
MANAGEDBYSYSTEMUSING(path'D:
/PCATALOG','E:
/PCATALOG')
EXTENTSIZE16PREFETCHSIZE32
USERTABLESPACE
MANAGEDBYDATABASEUSING(FILE'D:
/DB2DATA/PERSION1'5000,
FILE'D:
/DB2DATA/PERSION2'5000)
EXTENSIZE32PREFETCHSIZE64
TEMPORARYTABLESPACE
MANAGEDBYSYSTEMUSING(path'F:
/DB2TEMP/PERSONL')
WITH"PERSONNELDBFORDSCHIEFERCO"
createdatabasesccrmusingcodesetGBKterritoryCN
#删除数据库
DROPDATABASE
#数据库目录的定义
*本地数据库目录(节点的目录中的文件SQLDBDIR)
本地数据库目录文件存在于定义了数据库的每条路径(或WIN中的"驱动器")
对于可以从该位置存取得每个数据库此目录都包含一个条目.包含信息:
数据库名称,数据库别名,数据库注释,数据库的根目录的名称,其他系统信息.
*系统数据库目录(实例中的目录中的文件SQLDBDIR)
对于数据库管理器的每个实例,都存在一个系统数据库目录文件,该文件对于针对
此实例编目的每个数据库都包含一个条目.使用CREATEDATABASE时隐式的编目数据库
每个数据库包含一条信息:
数据库名,数据库别名,数据库注释,本地数据库目录的位置,
指示该数据库是间接的指示符,表示它与系统数据库目录文件驻留在相同的机器上.
查看本地或系统数据库目录文件
LISTDATABASEDIRECTORYON
LISTDATABASEDIRECTORY
*节点目录
数据库管理器在编目第一个数据库分区时会创建节点目录.要编目数据库分区,
使用CATALOGNODE命令.要显示本地节点目录的内容,使用LISTNODEDIRECTORY
.在每个数据库客户机上都创建并维护节点目录.对于具有客户机可以存取得一个
或多个数据库的每个远程工作站,该目录都包含一个条目.db2客户机使用该节点目录中
的通信端点信息.
catalogtcpipnodemy_node_nameremote10.10.10.10server54321
uncatalognodemy_node_name
catalogdatabaseDBasmy_data_aliasatnodemy_node_name
#"轻量级目录访问协议"(LDAP)目录服务
目录服务是一个关于分布式环境中的多个系统和服务的资源信息的资源库;它
提供对这些资源的客户机和服务器存取.客户机和服务器将使用目录服务来找出
如何存取其他资源.
LDAP是业界标准的存取目录服务的方法.每个数据库服务器实例都会将它的存在情况发布给LDAP,
并在创建数据库时向LDAP目录提供数据库信息.当客户机与数据库连接后,可从LDAP目录检索
服务器的目录信息.不再要求每个客户机将目录信息以本地方式存储在每台机器上.
#创建数据库分区组
可以使用CREATEDATABASEPARTITIONGROUP语句创建数据库分区组.此语句指定表空间
容器和表数据将驻留其上的一组数据库分区.
*为数据库分区组创建分区映象.
*生成分区映象标识
*将记录插入下列目录表:
SYSCAT.DBPARTITONGROUPS,SYSCAT.PARTITIONMAPS,SYSCAT.DBPARTITIONGROUPDEF
CREATEDATABASEPARTITIONGROUPONDBPARTITIONNUMS(,)
#创建表空间
表空间建立数据库系统使用的物理存储设备与用来存储数据的逻辑容器或表的关系
CREATETABLESPACE
MANAGEDBYSYSTEM
USING('')
CREATETABLESPACE
MANAGEDBYDATABASE
USING(FILE'')
DEVICE
*指定分区组
CREATETABLESPACEPLANSINODDNODEGROUP
MANAGEDBYDATABASE
USING(DEVICE'/dev/HDISK0'10000,DEVICE'/dev/n1hd01'40000)onnode1
(DEVICE'/dev/HDISK0'10000,DEVICE'/dev/n1hd03'40000)onnode3
(DEVICE'/dev/HDISK0'10000,DEVICE'/dev/n1hd05'40000)onnode5
CREATE REGULAR TABLESPACECUSTTBSINDATABASEPARTITIONGROUPCUSTOMER
PAGESIZE4K MANAGEDBYDATABASE USING
(FILE'D:
/testdbtbs/custtbs0_1'5120)ONDBPARTITIONNUM(0)
USING
(FILE'D:
/testdbtbs/custtbs1_1'5120)ONDBPARTITIONNUM
(1)
EXTENTSIZE16OVERHEAD10.5PREFETCHSIZE16
在多分区数据库中创建单分区组.
CREATEDATABASEPARTITIONGROUPsingle_tbs_grpONDBPARTITIONNUM(0)
在单分区组中创建单分区表空间.
CREATETABLESPACEsingle_part_tbsINDATABASEPARTITIONGROUPsingle_tbs_grp
MANAGEDBYDATABASEUSING(FILE'd:
/testdbtbs/single_part_tbs_1'5120)
在UNIX中使用字符设备.
*创建特定类型的表空间
创建系统临时表空间
CREATESYSTEMTEMPORARYTABLESPACEtmp_tbsp
MANAGEDBYSYSTEM
USING('d:
/tmp_tbsp','e:
/tmp_tbsp')
在分区数据库中创建系统临时表空间只能在IBMTEMPGROUP中产生
CREATE SYSTEMTEMPORARY TABLESPACETEMPSYS_TBSP1
INDATABASEPARTITIONGROUPIBMTEMPGROUP
PAGESIZE4K MANAGEDBYSYSTEM
USING('D:
/testdbtbs/sys_temp_0')ONDBPARTITIONNUM(0)
USING('d:
/testdbtbs/sys_temp_1')ONDBPARTITIONNUM
(1)
EXTENTSIZE16OVERHEAD10.5PREFETCHSIZE16
创建用户临时表空间
CREATEUSERTEMPORARYTABLESPACEusr_tbsp
MANAGEDBYDATABASE
USING(FILE'd:
/db2data/user_tZbsp'5000,
FILE'e:
/db2data/user_tbsp'5000)
在分区数据库中创建用户临时表空间可在除IBMTEMPGROUP中的其他分区组中产生.
CREATE USERTEMPORARY TABLESPACEUSER_TEMP_TBSP
INDATABASEPARTITIONGROUPUSER_TEMP_TBSGRP
PAGESIZE4K MANAGEDBYSYSTEM
USING('D:
/testdbtbs/user_temp_0')ONDBPARTITIONNUM(0)
USING('d:
/testdbtbs/user_temp_1')ONDBPARTITIONNUM
(1)
*指定物理设备
在WINDOWS上,指定物理硬盘驱动器,使用//./PhysicalDriveN (N-0,1,2..)
指定逻辑驱动器使用//./N:
(N是系统中的逻辑盘符)
在UNIX中指定字符设备.
#SMS 当对象增大时,文件每次扩展一页。
若需要提高插入性能,可以考虑启用多页分配,如MDC表。
运行db2empfa.对于多分区数据库必须对每个分区运行此使用程序,一旦启用就不能禁止。
#DMS
单分区表空间大小,4kb-64gb;8kb-128gb;16kb-256gb;32kb-512gb
在缺省情况下,每个容器都保留一个数据块作为开销,表空间的最小大小是5个数据块。
三个保留给开销使用。
两个用于用户表数据。
#在多个节点上产生表空间
CREATETABLESPACETS1MANAGEDBYDATABASEUSING
(device'/dev/rcont$N'20000)
CREATETABLESPACETS2MANAGEDBYDATABASEUSING
(file'/DB2/containers/TS2/container$N+100'10000)
CREATETABLESPACETS3MANAGEDBYSYSTEMUSING
('/TS3/cont$N%2','/TS3/cont$N%2+2')
#增加表空间的空间
ALTERTABLESPACERESOURCE
ADD(DEVICE'/dev/rhd9'10000,
DEVICE'/dev/rhd10'10000)
#改变表空间状态
DB2ALTERTABLESPACESWITCHONLINE
#删除表空间
DROPTABLESPACE
可以先增加一个系统临时表空间,然后删除老的.
#获取表空间使用信息
getsnapshotfortablespacesonsample
#获取表空间的CONTAINER
LISTTABLESPACECONTAINERSFOR0(TABLESPACE_ID)SHOWDETAIL
#创建和填充表
列出表:
listtables-列出当前用户的表
listtablesforall-列出数据库中所定义的所有表
listtablesforschemaschemaname-列出具有指定模式的表
describetabletablename-显示指定表的结构
产生表和主键
CREATETABLEDEPARTMENT
(DEPTNOCHAR(3)NOTNULL,
DEPTNAMEVARCHAR(29)NOTNULL,
MGRNOCHAR(6),
ADMRDEPTCHAR(3)NOTNULL,
LOCATIONCHAR(16),
PRIMARYKEY(DEPTNO))
INRESOURCE
产生外键
CREATETABLEEMPLOYEE
(EMPNOCHAR(3)NOTNULLPRIMARYKEY,
FIRSTNMEVARCHAR(12)NOTNULL,
LASTNAMEVARCHAR(15)NOTNULL,
WORKDEPTCHAR(3),
PHONENOCHAR(4),
PHOTOBLOB(10m)NOTNULL,
FOREIGNKEYDEPT(WORKDEPT)
REFERENCESDEPARTMENTONDELETENOACTION)
INRESOURCE
ONDELETENOACTION表示如果该部门有任何雇员则该部门不能被删除.
定义表检查约束
在创建或改变表时,通过将检查约束定义与表关联来对该表创建表检查约束.
当INSERT或UPDATE语句修改该表中的数据时,就自动激活此约束.表检查约束对
DELETE或SELECT没有影响.检查约束不能与类型表相关.
约束名不能与在同一个CREATETABLE语句内指定的任何其他约束相同.若不
指定约束名,系统会自动生成18个字符的唯一标识符.
表检查约束用于实现键唯一性或引用完整性约束所未涵盖的数据完整性规则.
如:
CREATETABLEEMP_ACT
(EMPNOCHAR(6)NOTNULL,
PROJNOCHAR(6)NOTNULL,
ACTNOSMALLINTNOTNULL,
EMPTIMEDECIMAL(5,2),
EMSTDATEDATE,
EMENDATEDATE,
CONSTRAINTACTDATESCHECK(EMSTDATE<=EMENDATE))
INRESOURCE
约束EMSTDATE必须小于EMENDATE
定义信息性约束
信息性约束是一个规则,可由SQL编译器使用,但数据库管理器不会强制使用它.
SQL编译器包括一个重写查询阶段,它将SQL语句变换为可能是优化的格式并改进
所需数据的存取路径.目的是改进查询性能.
对新表定义生成列
生成列在基本表中定义,在这些列中,存储的值是使用表达式计算得出的,而不是
通过插入或更新操作指定.可以改善查询性能,特别是计算很复杂或在查询时要进行
多次表达式求值.
CREATETABLEt1(c1INT,
c2DOUBLE,
c3DOUBLEGENERATEDALWAYSAS(c1+c2)
c4GENERATEDALWAYSAS
(CASEWHENc1>c2THEN1ELSENULLEND))
创建用户定义临时表
临时表不出现在系统目录中,不能共享此表
DECLAREGL