交換分割槽時報錯:ORA-14098
前兩天把一個修改了一個分割槽表的索引後,執行job頻頻報錯:
ORA-14098: index mismatch for tables in ALTER TABLE EXCHANGE PARTITION
這個錯誤是在分割槽表與一個普通表交換時發生的,檢查發現,索引列是一致的,不知為何報錯。
查閱相關資料後發現是因為分割槽表是全域性索引,與用來交換的表的索引型別不一致造成的。下面簡單重現錯誤:
1、建立表和索引
SQL> create table c1 (a number,b number)
2 partition by list(b)
3 (partition p1 values(1),
4 partition p2 values(2),
5 partition pd values(default))
6 ;
Table created
SQL> create table c2 as select * from c1;
Table created
SQL> create index idx_c1_a on c1(a) nologging;
Index created
SQL> create index idx_c2_a on c2(a);
Index created
表結構相同,索引列相同。
2、交換分割槽
SQL> alter table c1 exchange partition p1 with table c2 INCLUDING INDEXES WITHOUT VALIDATION;
alter table c1 exchange partition p1 with table c2 INCLUDING INDEXES WITHOUT VALIDATION
ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配
報錯了。在metalink上查了一下,有如下資訊:
Error: ORA 14098
Text: index mismatch for tables in ALTER TABLE EXCHANGE PARTITION
---------------------------------------------------------------------------
Cause: The two tables specified in the EXCHANGE have indexes which are not
equivalent
Action: Ensure that the indexes for the two tables have indexes which follow
this rule For every non partitioned index for the non partitioned
table, there has to be an identical LOCAL index on the partitioned
table and vice versa. By identical, the column position, type and size
have to be the same.
上面的資訊說的很清楚了,如果要交換分割槽,分割槽表的索引必須為local型別,且索引列及順序要與交換的表一致。
3、原因搞清楚了,解決就很簡單那裡
重新建立一個local型別的索引。
SQL> drop index IDX_C1_A;
Index dropped
SQL> create index idx_c1_a on c1(a) nologging local;
Index created
SQL> alter table c1 exchange partition p1 with table c2 INCLUDING INDEXES WITHOUT VALIDATION;
Table altered
分割槽交換成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63847/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux交換分割槽Linux
- unbuntu新增交換分割槽
- Ubuntu 啟用交換分割槽Ubuntu
- linux交換分割槽調整Linux
- oracle分割槽交換(exchange)技術Oracle
- 雲端計算:交換分割槽管理 Swap
- Linux下swap(交換分割槽)的增刪改Linux
- Seven 儲存結構與磁碟劃分 主分割槽交換分割槽的作用!
- Windows分割槽報錯解決Windows
- [20190503]12C R2 分割槽交換.txt
- 非分割槽錶轉換成分割槽表
- Linux交換分割槽相關都有哪些命令?Linux運維基礎Linux運維
- oracle交換分割槽所引起的索引失效問題探究測試Oracle索引
- 非分割槽錶轉換成分割槽表以及注意事項
- 如何檢視 Linux 下 CPU、記憶體和交換分割槽的佔用率?Linux記憶體
- 雲端計算學習路線教程大綱課件:交換分割槽管理 Swap
- linux系統swappiness引數在記憶體與交換分割槽間最佳化LinuxAPP記憶體
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- win10分割槽的時候g和m怎麼換算_win10分割槽的時候g和m如何換算Win10
- 1.1_3_1 電路交換、報文交換、分組交換
- [專案踩坑] MySQL 分割槽:分割槽鍵和唯一索引主鍵的關係,解決報錯 A PRIMARY KEYMySql索引
- Linux分割槽方案、分割槽建議Linux
- hive建立分割槽表報錯AccessControlException Permission denied: user=NONE, access=WRITE, inodeHiveExceptionNone
- SD卡分割槽時需要注意什麼?SD卡分割槽注意事項SD卡
- 增加表分割槽時,為local分割槽索引指定不同表空間的方法索引
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- 小白自制Linux開發板 五. Debian檔案系統製作,以及WIFI配置、交換分割槽配置LinuxWiFi
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- oracle分割槽表和非分割槽表exchangeOracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- 分割槽Partition
- lvs 分割槽
- openGauss 分割槽
- Kafka 分割槽Kafka
- mysql 分割槽MySql