DB2表空间管理 - 实例讲解之精华

haisheng 贡献于2013-06-07

作者 李兆平  创建于2011-01-14 10:06:00   修改者李兆平  修改于2011-01-14 10:07:00字数6112

文档摘要:表空间是数据库及存储在该数据库中的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建……表空间按管理方式分:操作系统管理(SMS),或者由数据库管理(DMS),自动存储表空间(System Management Space,SMS)(Database Management Space,DMS)。 按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存储在规则表空间中,另外系统目录表也放在规则表空间中。默认的系统目录表空间名为SYSCATSPACE。
关键词:

db2表空间管理—实例讲解之精华 【DB2表空间管理】ibm db2表空间管理—实例讲解之精华 tp:E9a\(wS]/x6V22494861 2N7PP&A#\RF%X)e%q)S22494861DB2 存储: 表空间 $V k#x nfS22494861表空间是数据库及存储在该数据库中的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建……ITPUB个人空间Wc$cDOAC 7Sw/W Kk)w` z*I/f22494861表空间按管理方式分: a`Di$c22494861操作系统管理(SMS),或者由数据库管理(DMS),自动存储表空间ITPUB个人空间gR VL9N/\ (System Management Space,SMS)(Database Management Space,DMS)。 8UY+E[%Hp7v v8R22494861 0[:LlR(X:B`22494861按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存储在规则表空间中,另外系统目录表也放在规则表空间中。默认的系统目录表空间名为SYSCATSPACE。 RNRG5C22494861 ~x#M4Q${V1L22494861临时表空间分为系统临时表空间和用户临时表空间。ITPUB个人空间'V5MQO-c t 系统临时表空间用来存储各种数据操作(排序、重组表、创建索引、连接表)中所需的内部临时数据,虽然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使用的页大小创建一个,默认系统临时表空间名为TEMPSPACE1。 'A`?-}J22494861ITPUB个人空间up#NWn$P@\;z 用户临时表空间用来存储已说明全局临时表(已说明全局临时表存储的是应用程序临时数据)。用户临时表空间不是在数据库创建时默认创建的。 @(f3Y.G6jB;L3U7\22494861SMS每个容器是操作系统的文件空间中的一个目录;DMS每个容器是一个固定的、预分配的文件,或是物理设备。 ?k&L+uk O,m22494861SMS的管理比较简单,由操作系统自动管理,空间的大小随数据量的变化系统自动调整。 .h�Dk1MK^22494861DMS是由数据库管理的,空间大小在创建时确定,空间不够时要手工添加或删除部分数据以释放空间。 sLo^)I�~?l22494861 .Kyi2]U9}M7l}O22494861大多数情况下,DMS的性能比SMS好。 Js�HNw K1cT M22494861 ~ c5r9CEL6B224948611、系统管理空间(SMS)ITPUB个人空间$X.jFn]%a[)B]%rK Z]"K8c~oy22494861数据存放在文件系统的文件中ITPUB个人空间fb9f:W&G ? 使用操作系统的标准I/O函数来访问数据 ]](d�d ZY[22494861除非需要,否则空间不会被额外分配ITPUB个人空间7Izh5]{ pic^kW&P 适用于小型,个人数据库以及存储空间变化频繁的数据库ITPUB个人空间+u8aGz2Z!e 对维护和监控要求较低ITPUB个人空间0AwiCa [ibmdb2]/root #chown -R db2inst2:db2grp2 /db2dataITPUB个人空间8Yq9j)H4F5D(i} My3a [ibmdb2]/root #chmod -R 775 /db2dataITPUB个人空间z+?+LV;|` [ibmdb2]/root # 3[o3d3W \�cW^6SI22494861 *i ]N4`$P|b9Uz4Fg22494861---例一:创建一个SMS表空间:su - db2inst2 -uB:vbmy22494861unix: bKO YUq5@22494861CREATE TABLESPACE tbs1 MANAGED BY SYSTEM USING ('/db2data/tbs1')ITPUB个人空间g.ZKSc:f windows:ITPUB个人空间U;mFI/RpHX CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp') !i2GGf }�ies3mc"U22494861 5h&s,}C(MF22494861完成的结果为在D、E、F三个磁盘上创建了三个名称为acc_tbsp的文件夹,每个文件夹下面都有一个名为SQLTAG.NAM的文件。ITPUB个人空间SG!Aofp&sq|&u ITPUB个人空间F ^u |5c| db2 => CREATE TABLESPACE tbs1 MANAGED BY SYSTEM USING ('/db2data/tbs1') Gybh7OZ22494861DB20000I  The SQL command completed successfully.ITPUB个人空间aw Q �Tvh@d/` ./tbs1: 7tQ0}^%c22494861total 4ITPUB个人空间 B,F,BI r J9R+c 4 -rw------- 1 db2inst2 db2grp2 512 Oct 19 04:26 SQLTAG.NAM----例二:删除例一所创建的SMS表空间 H~%f vv#AR22494861db2 => drop tablespace tbs1ITPUB个人空间^rzyG DB20000I  The SQL command completed successfully. 3~m!s"rc9Ocy22494861运行完这条命令,相应的表空间会从DB2注册表中删除,但是磁盘上的三个文件夹仍然存在,需要手工删除。 J_*nf)n7Z@�h22494861 1F*O'\~.W2S224948612、数据库管理空间(DMS)数据存储在文件或者Raw设备中能够绕过操作系统的I/O函数从而增加性能ITPUB个人空间 g1S| ZW'duY 适用于对数据库性能要求比较高的应用程序 ?Aa$h F2WVR2x5C22494861需要较频繁的维护和监控 (z z4h�t/A(S#K-j$?$g2V/m22494861用命令行方式创建DMS表空间的简单语法: Q/LV~%?9^%i22494861  CREATE TABLESPACE ;ITPUB个人空间NK�P�_Vk+{Z   MANAGED BY DATABASE USING (FILE ' ;'ITPUB个人空间T(p TZ];FE   或者ITPUB个人空间?8m)m#qLD   CREATE TABLESPACE ;ITPUB个人空间`?3J u)q   MANAGED BY DATABASE USING (DEVICE ' ;'当容器空间不足时,可以通过设置参数来自动增加容器空间ITPUB个人空间uZ3l!~q~ CREATE TABLESPACE tbsp2ITPUB个人空间D&?o Bw\w,U U2m PAGESIZE 8K !l;jmT PL8sM22494861MANAGED BY DATABASE 2D}*GM9S,UI4[22494861USING (FILE ' /storage/dms1' 10 M) AUTORESIZE YESITPUB个人空间+j;Wwf4?,U'ma e^ -ov/B,|2zz7^22494861----例三:在Windows上创建一个DMS表空间,使用各自有500页的两个文件容器:ITPUB个人空间YP-]\ ] CREATE TABLESPACE TBS MANAGED BY DATABASE USING (FILE '/db2data/tbs_01' 500, FILE '/db2data/tbs_02' 500)运行结果为:在D、E磁盘的db2data文件夹下面各创建了一个名为acc_tbsp的文件,大小都为2000K(默认情况下每页大小为4K)。 "iT:Rn)I"i/k22494861db2 => create tablespace tbs managed by database using (file '/db2data/tbs_01' 500, file '/db2data/tbs_02' 500)ITPUB个人空间 jhY f)C-d _X2{ L*R DB20000I  The SQL command completed successfully. #_ZZ%j4Ds22494861[db2inst2@ibmdb2 db2data]$ ls -lsa 6w~d jm-BRsh22494861total 4036 wf2o h|fxB:@6W22494861   4 drwxrwxr-x  3 db2inst2 db2grp2    4096 Oct 19 04:39 .ITPUB个人空间 UL2K`&C U9L    8 drwxr-xr-x 27 root     root       4096 Oct 18 15:45 .. &Z7TFn.OK8r7X22494861  16 drwxrwxr-x  2 db2inst2 db2grp2   16384 Aug 29 14:02 lost+found 4mu DI}224948612004 -rw-------  1 db2inst2 db2grp2 2048000 Oct 19 04:39 tbs_012004 -rw-------  1 db2inst2 db2grp2 2048000 Oct 19 04:39 tbs_02 ITPUB个人空间R |,BI"B2b:T?bL0B ,AU�c;|-KVt�P4E*O22494861ITPUB个人空间 _JE h~?1|o;\ ----例四:在例三所创建的表空间中添加一个容器:alter tablespace tbs add(file '/db2data/tbs_03' 500) MX$b�h&t,u+n,@22494861ITPUB个人空间u}'Kivk,\e7Ug'Qs db2 => alter tablespace tbs add(file '/db2data/tbs_03' 500)ITPUB个人空间w6A,K dwK DB20000I  The SQL command completed successfully. 6O_ ^ v0w'n2tO22494861[db2inst2@ibmdb2 db2data]$ ls -lsITPUB个人空间 s |/xE@F%} total 6028ITPUB个人空间v/n.v{#gY*n|   16 drwxrwxr-x 2 db2inst2 db2grp2   16384 Aug 29 14:02 lost+foundITPUB个人空间S!]I8J N+wsfV^ QO 2004 -rw------- 1 db2inst2 db2grp2 2048000 Oct 19 04:39 tbs_01 (De}NA.};@224948612004 -rw------- 1 db2inst2 db2grp2 2048000 Oct 19 04:40 tbs_02 3k&T"T9D U g(P224948612004 -rw------- 1 db2inst2 db2grp2 2048000 Oct 19 04:40 tbs_03ITPUB个人空间*hL EK.F/{r *K1q{!@KS"D/Ky22494861----例五:用RESIZE子句更改例三所创建的表空间的容器的大小: .VOW(GQ22494861每个容器(文件)的大小变为550页。把容器的容量变大不会出错,但是如果容器中的数据已经充满,再把容器的容量缩小,则会引起错误。ITPUB个人空间5Q'p#e#q1D(@*FW"W alter tablespace tbs resize (file '/db2data/tbs_01' 550, file '/db2data/tbs_02' 550, file '/db2data/tbs_03' 550)db2 => alter tablespace tbs resize (file '/db2data/tbs_01' 550, file '/db2data/tbs_02' 550, file '/db2data/tbs_03' 550)ITPUB个人空间9Si1A%qb8f�hs P DB20000I  The SQL command completed successfully. 8O-NyAJ^1DN22494861[db2inst2@ibmdb2 db2data]$ ls -lsk Eutx3Z22494861total 6628 lS)\@(w&l22494861   16 drwxrwxr-x 2 db2inst2 db2grp2   16 Aug 29 14:02 lost+foundITPUB个人空间v(Bi*k1t0V8a,q4_9_,JR 2204 -rw------- 1 db2inst2 db2grp2 2200 Oct 19 04:47 tbs_01 d4i p J W5\]Ov224948612204 -rw------- 1 db2inst2 db2grp2 2200 Oct 19 04:47 tbs_02 i1H`:L2r:{b@/E224948612204 -rw------- 1 db2inst2 db2grp2 2200 Oct 19 04:47 tbs_03 ZOrx0J%h&s4oQ22494861----例六:用EXTEND子句更改例三所创建的表空间的容器的大小: 2|!E5YT;p!jGd22494861该命令的运行结果为在原有容量的基础之上,每个容器再增加50页。 oh!@ke4~22494861alter tablespace tbs extend (file '/db2data/tbs_01' 50, file '/db2data/tbs_02' 50, file '/db2data/tbs_03' 50)db2 => alter tablespace tbs extend (file '/db2data/tbs_01' 50, file '/db2data/tbs_02' 50, file '/db2data/tbs_03' 50) 4p7vAd8WV b}22494861DB20000I  The SQL command completed successfully.ITPUB个人空间k'b_'h-U6@/cmQ [db2inst2@ibmdb2 db2data]$ ls -lskITPUB个人空间 bc7Ur@.@1X8Z:E total 7228 N*R+g$\.el22494861  16 drwxrwxr-x 2 db2inst2 db2grp2   16 Aug 29 14:02 lost+foundITPUB个人空间(W h)c.x*rV @faR 2404 -rw------- 1 db2inst2 db2grp2 2400 Oct 19 04:50 tbs_01 7ju'y8` N N G6Jn6L224948612404 -rw------- 1 db2inst2 db2grp2 2400 Oct 19 04:50 tbs_02ITPUB个人空间\&O'h�Mz{ { K 2404 -rw------- 1 db2inst2 db2grp2 2400 Oct 19 04:50 tbs_03ITPUB个人空间/ICSS;m3Ujrc{ Nh3zv'C%\V22494861 'g[+vt G r7}#U22494861[/color]----例七:删除例三中创建的DMS表空间: ;q"r!}!Qe-r;U22494861运行的结果为在DB2的注册表中把TBS表空间删除,同时在磁盘上把相对应的文件夹和文件都一起自动删除。 @xTV2JwL22494861drop tablespace tbsdb2 => drop tablespace tbs 'T1FIX,nqh.L22494861DB20000I  The SQL command completed successfully.ITPUB个人空间c"{s5zq ^%w [db2inst2@ibmdb2 db2data]$ ls -lsITPUB个人空间J$\/sv"p}0O!i total 16 x5i2uBHx2249486116 drwxrwxr-x 2 db2inst2 db2grp2 16384 Aug 29 14:02 lost+foundITPUB个人空间e8j-e:}TC:Q VY [db2inst2@ibmdb2 db2data]$ pwdITPUB个人空间@Mv `,X /db2data 6Lr~:_ c {4}22494861 i.q+n)OB22494861ITPUB个人空间JX)?9s"fl -----例八:在UNIX上创建一个DMS表空间,使用500页的1个逻辑卷:ITPUB个人空间P`0I`n(a ITPUB个人空间8as#q3T#w chown db2inst2:db2grp2 /dev/sde1ITPUB个人空间t@;I^.z9`2_/\7y create tablespace tbs managed by database using (device '/dev/sde1' 500)ITPUB个人空间K6\ v~\ZQ db2 => create tablespace tbs managed by database using (device '/dev/sde1' 500) 6mJ:xz`\/J22494861DB20000I  The SQL command completed successfully.  上面语句中提到的UNIX设备必须已经存在,且实例拥有者和SYSADM组必须能够写入它们。 'f/X$P0Bp1GRt]22494861  特性                            SMS DMSITPUB个人空间V-H3T,|8GYB+gK   能够在表空间中动态增加容器的数目吗 N YITPUB个人空间amK-x(jj   能够把索引数据存放到不同表空间的表中吗 N YITPUB个人空间kc*mx$NO$E_9|fF   能够把大对象数据存放到不同表空间的表中吗 N YITPUB个人空间mk#QTcj}"P   表可以分散存放到多个表空间中吗 N Y 6ug}&?6R!liG)g-o#|22494861  仅在需要时才分配空间吗 Y NITPUB个人空间;p(K"G3o`bv(B]   表空间可以被放在不同的磁盘中吗 Y NITPUB个人空间!_*bG_ u@   创建之后,区段大小能够改变吗 N NITPUB个人空间9u)dR-M|D/k+A n ITPUB个人空间:yM'L@`4L0`se !LQ3{7R#I8B3K&P.ly22494861---例九:创建系统临时表空间:系统临时表只能存储在系统临时表空间中,所以数据库必须始终至少有一个系统临时表空间。ITPUB个人空间[;Q h,v N |B create system temporary tablespace temp managed by system using ('/db2data/temp') 3X JPj6e'O.ndW22494861db2 => create system temporary tablespace temp managed by system using ('/db2data/temp') p7U~bn;N&TLV22494861DB20000I  The SQL command completed successfully. Xf4vk i22494861 \8Y6y7uNje? m2{22494861 .r ]!~t.Bg6p22494861----例十:创建用户临时表空间:用户临时表空间用于存储已说明的临时表(用 DECLARE GLOBAL TEMPORARY TABLE 语句定义) ,Zk#d+A*_*D6pg0]22494861create user temporary tablespace usertemp managed by database using (file '/db2data/usertemp' 500)ITPUB个人空间#Cu$I.V^y| db2 => create user temporary tablespace usertemp managed by database using (file '/db2data/usertemp' 500)ITPUB个人空间2e u c]R/WF2r DB20000I  The SQL command completed successfully.ITPUB个人空间Ko^Y)sRj,a:X ITPUB个人空间*nj'J3Y i,U B non B3NI5y22494861----例十一:用RENAME语句给表空间重命名: NV0b4|k YM1k2GM22494861用该语句给表空间重命名之后,将自动更改所有引用该表空间的目录记录,所以无须关心该表空间中的个别对象ITPUB个人空间:w!O+p]B rename tablespace tbs to tbs1 t t�IHpGwZ22494861db2 => rename tablespace tbs to tbs1ITPUB个人空间!]}FJ+fjfB _ DB20000I  The SQL command completed successfully.ITPUB个人空间} vA!\1dT8G)d4V/i T ITPUB个人空间ci;WDM!F~!wz -----在此处,如果重命名temp表空间,应该咋弄呢? 3mSXG7rkU#H22494861rename tablespace usertemp to user_tempITPUB个人空间[F/^E \E&C[0M~ db2 => rename tablespace usertemp to user_tempITPUB个人空间*x`%H#{!_\h DB20000I  The SQL command completed successfully. uk.^j1}+M/n`22494861rename tablespace temp to sys_temp ---好像如果是系统临时表空间,刚这样操作报错,大家看看应该如何操作? y I_'ue f22494861db2 => rename tablespace temp to sys_temp xi `7?`4pt ~,K H22494861DB21034E  The command was processed as an SQL statement because it was not aITPUB个人空间 wy9~w(Qi"^_:Y$k valid Command Line Processor command.  During SQL processing it returned: ^\'`5toI ^?f22494861SQL0707N  The name "SYS_TEMP" cannot be used because the specified identifier s]xGf1n ~22494861is reserved for system use.  SQLSTATE=42939----例十二:在RESOURCE表空间中创建一张名为T1的表:ITPUB个人空间6xuL4[D+R�si |tBAs#kj'LB22494861CREATE TABLE T1(ABC INT) IN tbs1ITPUB个人空间;BJ,f+a^'u db2 => CREATE TABLE T1(ABC INT) IN tbs1 hZ#Nc8V-y22494861DB20000I  The SQL command completed successfully.ITPUB个人空间~2MqMAT ITPUB个人空间B%I8q s#W*J/y| 3、自动存储表空间数据库允许使用自动存储时ITPUB个人空间D;f-I4y*D9U@ 数据库管理器能够自动分配容器(物理存储地址)ITPUB个人空间'o_;dMDfL|\ 自动调整表空间的大小 "B3_2jEf@f)NI22494861对普通/大型表空间来使用数据库管理ITPUB个人空间0w*`yf2K4gN 对用户或系统临时表空间使用系统管理 Z\3M4F$U F~~ l)Y22494861CREATE DATABASE mydb AUTOMATIC STORAGE YESITPUB个人空间+{tW#q.@qIo7E'Z CONNECT TO mydbITPUB个人空间jM3ID&O{Y5l0o�k6r'v CREATE TABLESPACE tbsp1 MANAGED BY AUTOMATIC STORA Ys1Ar3zl%i)`)d22494861

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档