DB2常用命令.docx
- 文档编号:26783278
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:12
- 大小:44.85KB
DB2常用命令.docx
《DB2常用命令.docx》由会员分享,可在线阅读,更多相关《DB2常用命令.docx(12页珍藏版)》请在冰豆网上搜索。
DB2常用命令
Chapter1.实例
DB2实例(instance)是DB2可执行文件和您创建的任何DB2数据库的逻辑资源库。
一台机器可以包含一个或多个实例,一个实例可以包含一个或多个数据库。
实例所使用的DB2可执行文件和库包含在名为SQLLIB的目录。
创建DB2实例(root执行)
#/opt/IBM/db2/V8.1/instance/db2icrt-ufenced_user_IDdb2inst2
db2ilist命令列出机器上的DB2实例。
$db2ilist
db2inst1
db2inst2
查看当前使用的实例
$echo$DB2INSTANCE
db2inst1
$db2getinstance
Thecurrentdatabasemanagerinstanceis:
db2inst1
删除实例(root执行)
#/opt/IBM/db2/V8.1/instance/db2idropdb2inst2
实例的启动和停止
db2start命令启动实例
db2stop命令停止实例
Chapter2.数据库
建库实例
CREATEDATABASEeasydbON/home/db2ese/space--保证全部建立在指定文件系统上
CATALOGTABLESPACE--系统表空间
MANAGEDBYSYSTEMUSING('/home/db2ese/space/catalog.dat')
TEMPORARYTABLESPACE--系统临时表空间
MANAGEDBYDATABASEUSING(FILE'/home/db2ese/space/tempspc'1000)
USERTABLESPACE--用户表空间
MANAGEDBYDATABASEUSING
(FILE'/home/db2ese/space/user1'262144,--(1G=1*1024*1024/4Pages)
FILE'/home/db2ese/space/user2'262144,
FILE'/home/db2ese/space/user3'262144)
DB2存储模型
DMS和SMS表空间
SystemManagedSpace:
SMS表空间几乎不需要维护,这种折中潜在地降低了性能,并且减少了优化选项。
DatabaseManagedSpace:
与SMS表空间相反,需要一定的规划和维护,能提高5-10%的性能
确定表空间的状态
建立DMS表空间
createtablespaceINDSPCmanagedbydatabaseusing(file'/home/easycon/dbs/userind'100M);--文件系统
createtablespacemytbspcmanagedbydatabaseusing(device'/dbfiles/ts1c1'100M)—-裸设备
要创建SMS表空间,请使用下面这个命令:
createtablespaceTS1managedbysystemusing('path')
要向表空间添加容器,请使用下面这个命令:
ALTERTABLESPACEPAYROLLADD(DEVICE’/dev/rhdisk9’10000)
查看表空间信息:
LISTTABLESPACESSHOWDETAIL
查看表空间容器信息
LISTTABLESPACECONTAINERSFORTABLESPACE_ID
schema是用于数据库中创建的数据库对象的高级限定符。
它是数据库对象的集合,这些对象有表、视图、索引或触发器等等。
它对数据库对象进行了逻辑分类。
当您将数据组织成表时,将表和其它相关对象组合在一起可能也很有好处。
这可以通过使用createschema命令定义schema。
有关schema的信息保存在您所连接的数据库的系统目录表中。
当创建其它对象时,可以将它们放置在该schema内。
SCHEMA
如何在DB2中使用schema
使用schema来全限定表或其它对象名,如下所示:
schemaname.tablename
如果用户easycon连接到数据库SAMPLE,并发出下面这个语句:
createtablet2(c1int)
那么就在该数据库中创建schemaeasycon(只要还未取消用户DWAINE的IMPLICT_SCHEMA特权)和表。
系统schema集是和每个数据库一起创建的,并且它们被放置到SYSCATSPACE表空间中:
∙SYSIBM:
o基本系统目录
o建议不要进行直接访问
∙SYSCAT:
oPUBLIC被授予该模式的SELECT权限
o对只读视图编目
o这是获取目录信息的推荐方式
∙SYSSTAT:
o可更新的目录视图-影响优化器
∙SYSFUN:
o用户定义的函数
Chapter3.表和索引
获取表信息
可以通过下列命令获取表信息:
∙listtables-列出当前用户的表
∙listtablesforall-列出数据库中所定义的所有表
∙listtablesforschemaschemaname-列出具有指定模式的表
∙describetabletablename-显示指定表的结构
一个数据库有一个表集,称为系统目录表(SystemCatalogTable),它保存关于数据库中所有对象的信息。
数据库中定义的每个表在目录表SYSCAT.TABLES中都有相应的一行。
数据库中每个表的每一列在SYSCAT.COLUMNS中都有相应的一行。
您可以用SELECT语句象看数据库中的任何其它表一样看目录表。
CREATETABLEBOOKS(BOOKIDINTEGER,
BOOKNAMEVARCHAR(100),
ISBNCHAR(10))
INBOOKINFO-–指定表空间
INDEXININDSPC;--指定索引表空间
如果没有指定单独的索引表空间,那么将在表所在的同一表空间中创建索引。
创建表之后,就没有机会在不同的表空间中创建索引了。
这一情况告诉我们:
创建索引要提前作规划!
CREATETABLEBOOKS
(BOOKIDINTEGERNOTNULLGENERATEDALWAYSASIDENTITY
(STARTWITH1,INCREMENTBY1),--自动生成列
BOOKNAMEVARCHAR(100)WITHDEFAULT'TBD',--默认值
ISBNCHAR(10))
insertintobooks(isbn)values('0000000001')
insertintobooks(isbn)values('0000000002')
CREATETABLEAUTHORS(AUTHORIDINTEGERNOTNULLPRIMARYKEY,
LNAMEVARCHAR(100),
FNAMEVARCHAR(100),
FICTIONBOOKSINTEGER,
NONFICTIONBOOKSINTEGER,
TOTALBOOKSINTEGERGENERATEDALWAYSAS(FICTIONBOOKS+NONFICTIONBOOKS))--自动生成列,两个列相加得到新值
insertintoauthors(authorid,lname,fname,fictionbooks,nonfictionbooks)values(1,'john','bull',12,66)
索引:
CREATEINDEXI2BOOKNAMEONBOOKS(AUTHOIDDESC,BOOKNAMEASC)
CREATEINDEXBIBOOKNAMEONBOOKS(BOOKNAME)ALLOWREVERSESCANS—双向索引
临时表
顾名思义,临时表(temporarytable)不是永久性的数据库对象。
临时表与普通的表在行为上是一样的,不同之处是,并非所有的功能和选项都是受支持的和/或是必需的。
临时表只能维持在一次连接期间。
当连接关闭时,在此连接内声明的所有临时表都将自动删除掉。
只有声明临时表的会话或应用程序才能访问临时表。
如果两个应用程序用相同的名字创建了一个临时表,该临时表的每个实例仍然是惟一的。
因而,完全不必担心出现临时数据冲突的情况。
由于临时表只允许单连接(single-connection)访问,因此这里无需使用锁。
这正是临时表的一个主要的性能优势。
声明临时表
要声明一个临时表,必须存在一个USER临时表空间(不同于SYSTEM临时表空间),用以存储临时表的定义和内容。
SYSTEM临时表空间只是DB2在内部用来执行诸如排序之类操作的。
下面这条简单的语句将创建一个用户临时表空间。
CREATEUSERTEMPORARYTABLESPACEusertempspace
MANAGEDBYSYSTEMUSING('PATH')
声明全局临时表时,可以使用很多可选子句。
下面的例子对这些子句的特性作了说明。
DECLAREGLOBALTEMPORARYTABLEt_dept
(deptidCHAR(6),deptnameCHAR(20))
ONCOMMITDELETEROWS
NOTLOGGEDWITHREPLACE
在同一次会话中使用相同的名称声明另一个临时表之前,首先必须删除该临时表。
可以显式地删除该表,也可以像这里一样使用WITHREPLACE选项。
如果使用了WITHREPLACE选项,DB2将隐式地删除所有数据,删除该临时表,并用新的定义重新创建该临时表。
如果使用了连接池(connectionpooling),WITHREPLACE选项用起来就十分方便了。
连接池是用于重用数据库连接的一种机制,这样就不必完全按照要求分配和回收资源。
这些操作的开销都是相当大的,尤其是在有大量执行很短事务的连接时,更是如此。
由于没有释放连接,先前使用的临时表就可能得不到清除。
下一个使用该连接的应用程序就可能使用上一次执行时遗留下来的数据。
因此,使用WITHREPLACE选项可以保证用新的定义刷新所声明的临时表。
Chapter4.数据库相关配置
DBMCFG
每个DB2实例有一个数据库管理器配置(DatabaseManagerConfiguration)文件,或简称DBMCFG文件。
这个文件用来保存与认证、监管级别、诊断级别以及贯穿实例的内存和进程资源有关的参数。
要使DBMCFG中的任何参数更改生效,必须先停止实例,然后启动实例。
以下示例说明了如何查看和修改db2inst1实例的DBMCFG文件中的参数。
∙要查看配置(configuration)文件:
C:
\PROGRA~1\SQLLIB\BIN>db2getdbmcfg
∙要修改这个文件的DIAGLEVEL参数,这个参数使诊断信息的数量被写到实例db2diag.log文件中(缺省情况下,这个数量设置为3):
C:
\PROGRA~1\SQLLIB\BIN>db2updatedbmcfgusingDIAGLEVEL4
C:
\PROGRA~1\SQLLIB\BIN>db2stop
C:
\PROGRA~1\SQLLIB\BIN>db2start
DB2概要文件注册表
要列出所有受支持的DB2概要文件注册表,使用以下命令:
db2set-lr
要设置DB2概要文件注册表,使用以下命令:
db2setregistry_variable=value
要显示当前在服务器上设置的所有DB2概要文件注册表
$db2set–all
[i]DB2_HASH_JOIN=N
[i]DB2COMM=tcpip
[i]DB2CODEPAGE=1208
[i]DB2AUTOSTART=YES
[g]DB2SYSTEM=localhost.localdomain
[g]DB2ADMINSERVER=dasusr1
由方括号([])括起的指示符表示该概要文件注册表的作用域,如下所示:
∙[e]表示对当前会话或环境设置的注册表
∙[u]表示用户级注册表
∙[n]表示节点级注册表
∙[i]表示实例级注册表
∙[g]表示全局级注册表
Chapter5.其它实用命令及技巧
Db2CLP
-t–f
数据库连通性:
要列出节点目录
db2listnodedirectory
要列出数据库目录,使用以下命令:
db2listdatabasedirectory
节点编目
db2catalogtcpipnodemynoderemote192.168.51.2server50000
数据库编目
db2catalogdbbackupaseasydbatnodemynode
要连接到数据库,可使用以下命令:
connecttodatabase_nameuserusernameusingpassword
显示所有当前与实例中定义的任何数据库建立的连接:
db2listapplications[showdetail]
所得输出应与下面相似:
以下命令终止与第5号和第6号应用程序句柄相关的连接:
db2forceapplication(6,5)
要断开实例中所有的数据库连接,只需使用all选项:
db2forceapplicationall
forceapplication命令只终止指定的连接。
它不会阻止新的应用程序连接到数据库。
缓冲池BUFFERPOOL
数据库缓冲池区是一块内存,主要用途是:
在从磁盘读取表索引和数据页以准备进行扫描和修改时,将它们高速缓存起来。
缓冲池区通过允许从内存(而不是磁盘)访问数据,从而帮助改进数据库系统性能。
由于内存访问比磁盘访问快得多,所以DB2需要从磁盘读取或写到磁盘的次数越少,系统运行得就越好。
在创建数据库时,会为数据库创建一个缺省的缓冲池。
这个缓冲池名为IBMDEFAULTBP,它的页大小为4KB,并且缺省缓冲池大小因操作系统而异。
对于Windows,缺省缓冲池大小为250页(即1MB);对于UNIX,缺省缓冲池大小为1,000页(即4MB)。
不能删除缺省的缓冲池;但是可以使用alterbufferpool命令更改它的大小。
以下语句:
createbufferpoolTESTsize25000pagesize8K
createregulartablespaceztestpagesize8kmanagedbydatabaseusing(file'/db2/sample/ztest.container000'150)bufferpoolTEST
创建了一个名为BP2、大小为200MB(25000个8KB大小的页)的缓冲池。
该缓冲池使用8KB的页大小。
由于immediate选项是缺省选项,所以只要有足够的可用内存可以满足该请求,就可以立即分配并使用该缓冲池。
注意PAGESIZE匹配,BUFFERPOOL才能生效。
db2licm命令:
添加许可信息
/opt/IBM/db2/V8.1/adm/db2licm–adb2ese.lic
查看有效许可信息
/opt/IBM/db2/V8.1/adm/db2licm–l
ProductName="DB2HighAvailabilityDisasterRecov"
ProductIdentifier="DB2HADR"
VersionInformation="8.2"
ExpiryDate="Permanent"
Annotation=""
Otherinformation=""
将数据导入含有identitygeneratealways的列的表(UNIX下测试通过,400下失败)
createtableorder
(
nointegernotnull
GENERATEDALWAYS
ASIDENTITY
(STARTWITH1
INCREMENTBY1
MINVALUE1
MAXVALUE999999999
CYCLE
NOCACHE
ORDER),
productchar(20),
procedecimal(12,2)
);
$db2"insertintoordervalues(default,'a',1.00)"
$db2"exporttot.ixfofixfselect*fromorder"
$db2"deletefromorder"
$db2"importfromt.ixfofixfmodifiedbyidentityignoreinsertintoorder"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 常用命令