【问题标题】:How To Rebuild Index of a specific table in Oracle?如何在Oracle中重建特定表的索引?
【发布时间】:2021-09-07 23:41:54
【问题描述】:

我想知道如何重建特定表的索引。

SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' REBUILD;' 
FROM DBA_INDEXES
WHERE TABLE_NAME = 'JR_SETTING_D';

运行此代码后,我尝试在表中插入值,但它一直告诉我

ORA-01502: 索引或该索引的分区处于可用状态提示

我正在寻找任何方法来简单地重建我在查询的 where 语句中提到的表的索引。

【问题讨论】:

  • 这是分区表吗?
  • After running this code,您的意思是您已经运行了显示的确切 SQL 语句,没有别的?这不会重建索引,它只会生成用于重建索引的命令。
  • @DaveCosta 感谢您的建议。我已经设法通过for循环做到了。 ` BEGIN FOR I IN (SELECT OWNER, INDEX_NAME FROM all_indexes WHERE table_name = UPPER('JR_SETTING_D') ) 循环开始立即执行'ALTER INDEX' ||我.OWNER ||'.'|| I.INDEX_NAME || '重建' ;结尾;结束循环;结尾; `

标签: oracle indexing alter rebuild


【解决方案1】:

如果索引(或其分区)处于不可用状态并且重建没有帮助,我建议您删除索引,插入数据(会更快 因为 Oracle 在插入期间不必维护索引)并且 - 完成后 - 再次创建索引。

【讨论】:

  • 感谢您的建议。我已经设法通过for循环做到了。 ` BEGIN FOR I IN (SELECT OWNER, INDEX_NAME FROM all_indexes WHERE table_name = UPPER('JR_SETTING_D') ) 循环开始立即执行'ALTER INDEX' ||我.OWNER ||'.'|| I.INDEX_NAME || '重建' ;结尾;结束循环;结尾; `
  • 不客气。另外,感谢您让我们知道您是如何做到的。
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 2020-06-02
  • 2022-01-20
相关资源
最近更新 更多