文档解释
ORA-28602: statement not permitted on tables containing bitmap indexes
Cause: table has bitmap indexes and user is minimizing or nominimizing records_per_block
Action: drop all bitmap indexes before changing records_per_block
ORA-28602:表含有位图索引时,不允许执行此语句
官方解释
ORA-28602: statement not permitted on tables containing bitmap indexes
Cause: An attempt to perform an operation that is not allowed on tables containing bitmap indexes was made.
Action: Make sure that the statement does not use any of the operations prohibited on such tables, as specified in the documentation for the feature.
常见案例
当在表上运行一些DML或DDL语句时,如果在表上存在位图索引,则可能会出现如下ORA-28602错误:
SQL> insert into test_tbl values (1);
ORA-28602: 表含有位图索引,不允许执行此语句
一般处理方法及步骤
1. 首先,检查该错误是否由位图索引引起。
要检查表上是否存在位图索引,请使用以下查询:
SQL> select index_name, index_type from user_indexes where table_name = ‘TEST_TBL’;
INDEX_NAME INDEX_TYPE
—————— ———–
TEST_INDEX BITMAP
上述查询结果确实显示表上存在位图索引,因此我们确实需要处理ORA-28602错误。
2. 如果真的存在位图索引,则尝试使用下面允许操作的任一替代方案。
• 对位图索引上可以使用UPDATE实现以下形式的效果:UPDATE
• 实行Partion Exchange功能,来更新或删除某分区
• 对于未分区表,使用MERGE语句进行绘制或更新操作
• 允许使用删除SQL函数或 TRUNCATETABLE命令
• 不允许使用INSERT、 DROP或 ALTER TABLE 等命令
另外,您可以使用ALTER INDEX SHRINK SPACE命令,为正在维护的位图索引分配更多的空间。