oracle分割槽及分割槽索引partition_partition index_維護(四)
前幾篇主要測試了範圍分割槽的建立及維護,側重語法方面;
參見:
http://space.itpub.net/9240380/viewspace-751843
如:建立分割槽表,新增分割槽表,刪除分割槽,修改分割槽屬性,合併分割槽,拆分分割槽,交換分割槽等
如:建立分割槽表,新增分割槽表,刪除分割槽,修改分割槽屬性,合併分割槽,拆分分割槽,交換分割槽等
如下開始學習分割槽表與主鍵約束相關知識
--------------查詢分割槽表的主鍵約束,續前是建立普通的主鍵約束,此約束對應的索引也是普通索引,未進行分割槽
SQL> select constraint_name from user_constraints where table_name='T_TEST_PARTI
TION_1';
SQL> select constraint_name from user_constraints where table_name='T_TEST_PARTI
TION_1';
CONSTRAINT_NAME
------------------------------
PK_T_TEST_PARTITION_1
------------------------------
PK_T_TEST_PARTITION_1
--刪除主鍵約束
SQL> alter table t_test_partition_1 drop primary key;
SQL> alter table t_test_partition_1 drop primary key;
表已更改。
--確認是否刪除主鍵約束
SQL> select constraint_name from user_constraints where table_name='T_TEST_PARTI
TION_1';
SQL> select constraint_name from user_constraints where table_name='T_TEST_PARTI
TION_1';
未選定行
-----------查詢分割槽表的分割槽數量
SQL> select table_name,partition_name from user_tab_partitions where table_name=
'T_TEST_PARTITION_1';
SQL> select table_name,partition_name from user_tab_partitions where table_name=
'T_TEST_PARTITION_1';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
T_TEST_PARTITION_1 P1_OLD
T_TEST_PARTITION_1 P2
T_TEST_PARTITION_1 P3
T_TEST_PARTITION_1 P4
T_TEST_PARTITION_1 P5
------------------------------ ------------------------------
T_TEST_PARTITION_1 P1_OLD
T_TEST_PARTITION_1 P2
T_TEST_PARTITION_1 P3
T_TEST_PARTITION_1 P4
T_TEST_PARTITION_1 P5
--查詢分割槽表的表結構
SQL> desc t_test_partition_1;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
REQTIME TIMESTAMP(6)
CALL_IP VARCHAR2(200)
REQTIME TIMESTAMP(6)
CALL_IP VARCHAR2(200)
---修改分割槽表的列id屬性不空為
SQL> alter table t_test_partition_1 modify id not null;
表已更改。
SQL> desc t_test_partition_1;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
REQTIME TIMESTAMP(6)
CALL_IP VARCHAR2(200)
------說明在分割槽表情況下,如要構建主鍵約束,須包含分割槽鍵列,不然會報錯
SQL> create unique index pk_t_test_partition_1_id on t_test_partition_1(id)
2 local
3 (partition p1,
4 partition p2,
5 partition p3,
6 partition p4,
7 partition p5);
create unique index pk_t_test_partition_1_id on t_test_partition_1(id)
*
第 1 行出現錯誤:
ORA-14039: 分割槽列必須構成 UNIQUE 索引的關鍵字列子集
REQTIME TIMESTAMP(6)
CALL_IP VARCHAR2(200)
------說明在分割槽表情況下,如要構建主鍵約束,須包含分割槽鍵列,不然會報錯
SQL> create unique index pk_t_test_partition_1_id on t_test_partition_1(id)
2 local
3 (partition p1,
4 partition p2,
5 partition p3,
6 partition p4,
7 partition p5);
create unique index pk_t_test_partition_1_id on t_test_partition_1(id)
*
第 1 行出現錯誤:
ORA-14039: 分割槽列必須構成 UNIQUE 索引的關鍵字列子集
---包括分割槽鍵再次建立成功
SQL> create unique index pk_t_test_partition_1_id on t_test_partition_1(reqtime,
id)
2 local
3 (partition p1,
4 partition p2,
5 partition p3,
6 partition p4,
7 partition p5)
8 /
SQL> create unique index pk_t_test_partition_1_id on t_test_partition_1(reqtime,
id)
2 local
3 (partition p1,
4 partition p2,
5 partition p3,
6 partition p4,
7 partition p5)
8 /
索引已建立。
--------基於分割槽鍵的本地分割槽索引數量為5,基於分割槽鍵和主鍵ID的本地唯一分割槽索引為5
1* select index_name,partition_name,status from user_ind_partitions where inde
x_name in(select index_name from user_indexes where table_name='T_TEST_PARTITION
_1')order by index_name
SQL> /
INDEX_NAME PARTITION_NAME STATUS
------------------------------ ------------------------------ --------
IDX_T_TEST_PARTITION_1_ID P2_IDX2 USABLE
IDX_T_TEST_PARTITION_1_ID P1_OLD USABLE
IDX_T_TEST_PARTITION_1_ID P5_IDX5 USABLE
IDX_T_TEST_PARTITION_1_ID P4_IDX4 USABLE
IDX_T_TEST_PARTITION_1_ID P3_IDX3 USABLE
PK_T_TEST_PARTITION_1_ID P2 USABLE
PK_T_TEST_PARTITION_1_ID P1 USABLE
PK_T_TEST_PARTITION_1_ID P5 USABLE
PK_T_TEST_PARTITION_1_ID P4 USABLE
PK_T_TEST_PARTITION_1_ID P3 USABLE
------------------------------ ------------------------------ --------
IDX_T_TEST_PARTITION_1_ID P2_IDX2 USABLE
IDX_T_TEST_PARTITION_1_ID P1_OLD USABLE
IDX_T_TEST_PARTITION_1_ID P5_IDX5 USABLE
IDX_T_TEST_PARTITION_1_ID P4_IDX4 USABLE
IDX_T_TEST_PARTITION_1_ID P3_IDX3 USABLE
PK_T_TEST_PARTITION_1_ID P2 USABLE
PK_T_TEST_PARTITION_1_ID P1 USABLE
PK_T_TEST_PARTITION_1_ID P5 USABLE
PK_T_TEST_PARTITION_1_ID P4 USABLE
PK_T_TEST_PARTITION_1_ID P3 USABLE
已選擇10行。
---如下掃錯原因:2013-01-16 00:00:0000000應與格式對應,即為:2013-01-16 00:00:00.00000
insert into t_test_partition_1 values(3,to_timestamp('2013-01-16 00:00:0000000',
'yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
*
第 1 行出現錯誤:
ORA-01830: 日期格式圖片在轉換整個輸入字串之前結束
---------調整後再次插入成功
1* insert into t_test_partition_1 values(3,to_timestamp('2013-01-16 00:00:00.0
0000','yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
SQL> /
1* insert into t_test_partition_1 values(3,to_timestamp('2013-01-16 00:00:00.0
0000','yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
SQL> /
已建立 1 行。
------重複插入違反唯一約束
SQL> /
insert into t_test_partition_1 values(3,to_timestamp('2013-01-16 00:00:00.00000'
,'yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_T_TEST_PARTITION_1_ID)
---插入一個新的id,即可插入成功
SQL> insert into t_test_partition_1 values(4,to_timestamp('2013-01-16 00:00:00.0
0000','yyyy-mm-dd hh24:mi:ss.ff'),'2,2,4,3');
已建立 1 行。
-----------id相同,但call_ip不同,同樣不能插入報違反主鍵約束
SQL> insert into t_test_partition_1 values(4,to_timestamp('2013-01-16 00:00:00.0
0000','yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3');
insert into t_test_partition_1 values(4,to_timestamp('2013-01-16 00:00:00.00000'
,'yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_T_TEST_PARTITION_1_ID)
SQL> insert into t_test_partition_1 values(4,to_timestamp('2013-01-16 00:00:00.0
0000','yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3');
insert into t_test_partition_1 values(4,to_timestamp('2013-01-16 00:00:00.00000'
,'yyyy-mm-dd hh24:mi:ss.ff'),'2,2,3,3')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_T_TEST_PARTITION_1_ID)
SQL> desc user_cons_columns;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
POSITION NUMBER
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
POSITION NUMBER
---查主鍵約束的構建列情況
SQL> select constraint_name,table_name,column_name from user_cons_columns where
table_name='T_TEST_PARTITION_1';
CONSTRAINT_NAME TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
SYS_C0027153 T_TEST_PARTITION_1
ID
ID
--查詢分割槽表的索引情況
SQL> select index_name from user_indexes where table_name='T_TEST_PARTITION_1';
INDEX_NAME
------------------------------
IDX_T_TEST_PARTITION_1_ID
PK_T_TEST_PARTITION_1_ID
------------------------------
IDX_T_TEST_PARTITION_1_ID
PK_T_TEST_PARTITION_1_ID
小結:1,對於分割槽表,構建主鍵約束,建立語法不同於普通表,而要新增分割槽鍵,
2,本文簡述分割槽表和主鍵的一些小知識,後續依次展開其它分割槽型別的學習及測試
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-751854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(二)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(三)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(五)_快捷方法Oracle索引Index
- Oracle分割槽表及分割槽索引Oracle索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽partition及分割槽索引partition index(一)Oracle索引Index
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 分割槽索引維護(add partition)索引
- 分割槽表及分割槽索引建立示例索引
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- oracle分割槽表的維護Oracle
- 【轉】Oracle分割槽表維護Oracle
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- 關於 Oracle 分割槽索引的建立和維護Oracle索引
- ORACLE分割槽表梳理系列(二)- 分割槽表日常維護及注意事項Oracle
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- Oracle索引分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- 測試oracle子分割槽維護Oracle
- 全面學習分割槽表及分割槽索引(1)索引
- 深入學習分割槽表及分割槽索引(1)索引
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- Oracle分割槽之五:建立分割槽索引總結Oracle索引
- oracle分割槽索引(二)Oracle索引
- oracle分割槽索引(一)Oracle索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Oracle11g維護分割槽(四)——Exchanging PartitionsOracle
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- oracle 針對普通表的索引分割槽及10g新增hash 索引分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽索引
- Oracle11g維護分割槽概述Oracle
- 【三思筆記】 全面學習Oracle分割槽表及分割槽索引筆記Oracle索引