查看: 2716|回复: 29

Oracle 分区表的技术与应用总结 四

  [复制链接]

22

主题

505

帖子

3490

积分

分区版主

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

贡献
0
技术
2
活跃
435
在线时间
85 小时
发表于 2014-8-15 09:49:11 | 显示全部楼层 |阅读模式
4.3 索引重建问题

(1)分区索引
对于分区索引,不能整体进行重建,只能对单个分区进行重建。语法如下:
Alter index idx_name rebuild partition index_partition_name [online nologging]
说明:
online:表示重建的时候不会锁表。
nologging:表示建立索引的时候不生成日志,加快速度。
      
如果要重建分区索引,只能drop表原索引,在重新创建:
SQL>create index loc_xxxx_col on xxxx(col) local tablespace SYSTEM;
这个操作要求较大的临时表空间和排序区。

示例:
SQL> select index_name,partition_name from user_ind_partitions where index_name='I_TIME_GLOBAL';
INDEX_NAME                     PARTITION_NAME
------------------------------ ------------------------------
I_TIME_GLOBAL                  P1
I_TIME_GLOBAL                  P2

SQL>alter index I_TIME_GLOBAL rebuild partition p1 online nologging;
索引已更改。
SQL>alter index I_TIME_GLOBAL rebuild partition p2 online nologging;
索引已更改。

(2)全局索引
Oracle 会自动维护分区索引,对于全局索引,如果在对分区表操作时,没有指定update index,则会导致全局索引失效,需要重建。

SQL> select owner,index_name,table_name,status from dba_indexes where INDEX_NAME='IX_PDBA_GLOBAL';

owner         index_name                     table_name status
------------------------------ ------------------------------ ---------- -------
sys           ix_pdba_global                 pdba       valid

删除一个分区:
SQL> alter table pdba drop partition p2;
表已更改。

SQL> select owner,index_name,table_name,status from dba_indexes where INDEX_NAME='IX_PDBA_GLOBAL';
owner            index_name          table_name status
------------------------------ ------------------------------ ---------- -------
sys             ix_pdba_global         pdba       valid

split 分区:
SQL> alter table pdba split partition P4 at(TO_DATE('2010-12-21 00:00:00','YYYY-MM-DD HH24:MI:SS')) into (partition P4, partition P5);
表已更改。

SQL> select owner,index_name,table_name,status from dba_indexes where INDEX_NAME='IX_PDBA_GLOBAL';
owner        index_name                     table_name status
------------------------------ ------------------------------ ---------- -------
sys          ix_pdba_global                 pdba       valid

drop 分区时使用update indexes
SQL> alter table pdba drop partition P4 UPDATE INDEXES;
表已更改。
SQL> select owner,index_name,table_name,status from dba_indexes where INDEX_NAME='IX_PDBA_GLOBAL';
owner          index_name           table_name status
---------------------- ------------------------------ ---------- -------
sys             ix_pdba_global        pdba       valid


做了几个drop分区操作,全局索引没有失效,有点奇怪。 不过如果在生产环境中,还是小心点。

重建全局索引命令如下:
       Alter index idx_name rebuild [online nologging]
示例:
SQL> Alter index ix_pdba_global rebuild online nologging;
索引已更改。



补充一点,分区表存储空间的问题:
SQL> select table_name,partition_name,tablespace_name from user_tab_partitions where table_name='DBA';
TABLE_NAME PARTITION_NAME                 TABLESPACE_NAME
---------- ------------------------------ ------------------------------
DBA        P1                             SYSTEM
DBA        P2                             SYSTEM
DBA        P3                             SYSTEM
DBA        P4                             SYSTEM
通过user_tab_partitions 表可以查看到每个分区对应的tablesapce_name. 但是,如果通过all_tables 表,却查不到分区表对应表空间的信息。
分区表:
SQL> select owner,table_name,tablespace_name,cluster_name from all_tables where table_name='DBA';
OWNER TABLE_NAME TABLESPACE_NAME                CLUSTER_NAME
----- ---------- ------------------------------ -----------------------------------------------------
SYS   DBA
普通表:
SQL> select owner,table_name,tablespace_name,cluster_name from all_tables where table_name='DAVE';
OWNER TABLE_NAME TABLESPACE_NAME                CLUSTER_NAME
----- ---------- ------------------------------ ---------------------------------------------------
SYS   DAVE       SYSTEM

1

主题

1593

帖子

1万

积分

Nib

Rank: 11Rank: 11Rank: 11Rank: 11

贡献
0
技术
0
活跃
679
在线时间
458 小时
发表于 2016-8-2 18:09:39 | 显示全部楼层
好东东我也来学习,谢谢楼主分享!

0

主题

1万

帖子

7万

积分

Cib

Rank: 13Rank: 13Rank: 13Rank: 13

贡献
0
技术
0
活跃
18162
在线时间
674 小时
发表于 2016-8-3 09:59:02 | 显示全部楼层
于分区索引,不能整体进行重建,只能对单个分区进行重建。

0

主题

372

帖子

2010

积分

Tib

Rank: 7Rank: 7Rank: 7

贡献
0
技术
0
活跃
380
在线时间
29 小时
发表于 2016-8-9 07:49:05 | 显示全部楼层
最佳优化实战培训 3

0

主题

517

帖子

3278

积分

Eib

Rank: 6Rank: 6

贡献
-100
技术
0
活跃
428
在线时间
51 小时
发表于 2016-8-13 11:25:01 | 显示全部楼层
好东东我也来学习,谢谢楼主分享!

0

主题

517

帖子

3278

积分

Eib

Rank: 6Rank: 6

贡献
-100
技术
0
活跃
428
在线时间
51 小时
发表于 2016-8-13 11:26:22 | 显示全部楼层
好东东我也来学习,谢谢楼主分享!

0

主题

75

帖子

508

积分

Kib

Rank: 3Rank: 3

贡献
-100
技术
0
活跃
73
在线时间
12 小时
擅长技术
LINUX
发表于 2016-8-16 13:51:18 | 显示全部楼层
Thank you for you share

0

主题

788

帖子

5198

积分

Yib

Rank: 10Rank: 10Rank: 10

贡献
0
技术
0
活跃
998
在线时间
52 小时

我爱三通水神

发表于 2016-8-25 17:03:06 | 显示全部楼层

早上辛苦啦 ,版主,好文赞一个!

1

主题

1625

帖子

1万

积分

Nib

Rank: 11Rank: 11Rank: 11Rank: 11

贡献
0
技术
0
活跃
2560
在线时间
36 小时
发表于 2016-9-4 13:50:26 | 显示全部楼层
11111111111111111111
使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表