</p> 2.分区索引:
. `. L. X! V* T! M: S6 _: J Create index Employee_DeptNo on Employee (DeptNo)local(# y2 }6 I9 \' i" q. E! \
partition PART1 tablespace PART1_NDX_TS, r: m' @- N- w; B/ K# h5 a- N
partition PART2 tablespace PART2_NDX_TS,' A9 w2 C( }1 q4 k- R7 ]9 B% d% V
partition PART3 tablespace PART3_NDX_TS,, v7 K a$ Y+ y' H% {
partition PART4 tablespace PART4_NDX_TS,# [( {5 q# u% I0 F0 C' `
);6 k) H8 q& n' B, R! E A# B
当分区中呈现良多事务而且要保证所有分区中的数据记实的惟一性时采用全局索引,在成立全局索引时,Global子句许可指定索引典型围值,这个规模值可以分歧于表分区典型围值。只有成立局部索引才会使索引分区与表分区间成立起一一对应关系。是以,在年夜年夜都情形下,应该使用局部索引分区。若使用了此索引,分区就能够很轻易地将索引分区与表分区成立联系关系,局部索引比全局索引更易于打点。
# f) A+ |0 G% C4 F" s7 y2 { 3.分区打点:7 }- {1 I$ S, D: N1 B
按照现实需要,还可以使用Alter table呼吁来增添、删除、交流、移动、改削、重命名、划分、截短一个已存在分区的结构。
) Y9 i+ _# Q0 U( z3 m% J$ }9 S二、重建索引 9 w5 ~: ~" H: S1 T% n: M
如不美观表中记实频仍地被删除或插入,尽管表中的记实总量连结不变,索引空间的使用量会不竭增添。虽然记实年夜索引中被删除,可是该记实索引项的使用空间不能被年夜头使用。是以,如不美观表转变不定,索引空间量会不竭增添,非论表中记实数目是否增添,只是因为索引中无效空间会增添。9 g- w7 Z& I4 D: L5 |2 i
要收受接管那些曾被删除记实使用的空间,需要使用Alter index rebuild呼吁。可以做一个按期运行的批措置轨范,来重建最勾当表的索引。这个批措置轨范可以在余暇时运行,以避免该轨范与其他应用轨范冲突。若能坚持索引的这一轨范规划,便可以实时收受接管那些未使用空间,提高空间操作率。
& K: d+ f% b! [ G B9 f! w三、段的碎片清算
$ } j0 H( \! }1 \2 K8 U# ?# ? 当生成一个数据库对象时(一个表或一个索引),经由过程用户缺省值或指定值来为它指定表空间。一个在表空间中生成的段,用于存储对象的相关数据。在段被封锁、缩短、截断之前,段所分配的空间将不被释放。
' w4 @8 p! e# s6 k" {- D0 C. ^ 一个段是由规模组成,而规模是由相邻的Oracle块组成。一旦存在典型围不能再存储新的数据,这个段就会去获得新典型围,但并不要求这些规模是彼此相邻的。这样的扩展会一向继续下去,直到表空间中的数据文件不能供给更多的自由空间,或者规模数目已达到极限。$ l1 K$ s2 S+ R5 ?+ V0 I
是以,一个碎片太多的数据段,不仅会影响运行,也会激揭晓空间中的空间打点问题。所以,每个数据段只含有一个规模是十分有益的。借助监控系统,可以经由过程搜检DBA_SEGMENTS数据字典视图来体味哪些数据库对象含有10个或更多规模的段,确定其数据段碎片。
( [, o M. M8 ]" |, B2 N7 T 若一个段的碎片过多,可用两种体例解决:
; t# _, R& ~+ v/ ]' ^6 n& i6 u 1. 用正确的存储参数成立一个新表,将旧表的数据插入到新表中,在删除旧表;
) S R4 S4 J0 L& D/ O6 h 2. 操作Export/Import工具。
# Y* h; b' S) |. ^$ X, B3 i 如:exp system/manager file=exp.dmpcompress=Y grants=Y indexes=Y
4 D5 ]7 N( U+ [; K1 S9 y* f tables=(T1,T2)
9 q/ w. p3 J7 C9 | 若输出成功,进入Oracle,删除上述表。( o( y$ ^2 R8 m5 M, m5 M, n5 E) P
注:compress=Y暗示将在输出过程中改削它们的存储参数。4 {" R# u9 V1 {3 z+ ~5 `0 E, g
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y
' P' g1 k# m$ B W% |* y四、自由规模的碎片清算 & n3 ^7 i# G3 N& }5 s8 E: R
表空间中的一个自由规模是表空间中相连的自由(空间)块的集结。当一个段封锁时,它典型围将被释放,并被标识表记标帜为自由规模。然而,这些自由规模再也不能与相邻的自由规模合并,它们之间的界线始终存在。可是当表空间的缺省值pctincrease设置不是0时,SMON后台历程会按期将这些相邻的自由规模合作。若pctincrease设置为0,那么相邻自由规模不会被数据库自动合并。但可以使用Alter table呼吁“coalesce”选项,来强迫进行相邻自由规模的合并。
7 J m* T1 t! H. W7 E5 d n 一直行自由规模合并,在日后的空间请求中,会影响到表空间中的空间分配。当需要一个足够年夜典型围时,数据库并不汇合并相邻的自由规模,除非没有其他选择。这样,当表空间中前面较小的自由规模已被使用时,将使用表空间中后面部门最年夜的一个自由规模。结不美观,会因为没有足够多的使用空间,年夜而导致表空间需求的矛盾。因为这样的情形呈现,使数据库的空间分配距理想越来越远。自由空间碎片常会呈此刻那些经常封锁又年夜头生成的数据库表和索引中。
# P o8 o, x- C' g( r3 e 在理想的Oracle表空间中,每一个数据库对象存储在一个零丁典型围中,而且所有有用自由空间集中在一个巨年夜而持续典型围中。这样,在一个对象需要附加存储空间时,可以在增添获取足够年夜自由空间的可能性的同时,最小化空间中的轮回挪用,提高自由空间使用率。 |