Oracle中如何找到列上的所有功能索引
假设我有一个程序,可以在数据库中搜索要修改的列,作为数据库转换过程的一部分。
如果我尝试更改定义了功能索引的列,则会出现以下错误:
ORA-30556: functional index is defined on the column to be modified
查找 ORA 代码,解决方案是“在尝试修改列之前删除功能索引”。
伟大的!那么如何找到该列上的所有功能索引呢?
user_ind_columns
视图看起来是一个好的开始,但功能索引的 COLUMN
列中包含诸如“SYS_NC00042$”之类的内容。环顾其他 user_
视图,我没有看到任何明显的东西。我错过了什么吗?
还是我完全以错误的方式处理这个问题?
Say I have a program that searches a database for columns to modify, as part of a database conversion process.
If I attempt to alter a column with a functional index defined gives the following error:
ORA-30556: functional index is defined on the column to be modified
Looking up the ORA code, the solution is to "Drop the functional index before attempting to modify the column."
Great! So how do I find all the functional indexes on that column?
The user_ind_columns
view looks like a good start, but functional indexes have things like "SYS_NC00042$" in their COLUMN
column. Looking around the other user_
views, I'm not seeing anything obvious. Am I missing something?
Or am I going about this the wrong way entirely?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
表
user_ind_expressions
描述了基于函数的索引的表达式。Oracle 11.2 链接
The table
user_ind_expressions
describes expressions of function based indexes.Oracle 11.2 link
查看
USER_INDEXES
的INDEX_TYPE
列:Look at the
INDEX_TYPE
column ofUSER_INDEXES
:添加到迈克的回答,
您可以使用
ALL_INDEXES
表中的FUNCIDX_STATUS
,它会告诉您索引是否基于函数NULL
,是否启用基于函数的索引< code>ENABLED 或基于功能的索引DISABLED
。Adding to Mike's answer,
You can use the
FUNCIDX_STATUS
inALL_INDEXES
table which will tell you whether the index is functional based or notNULL
, whether functional based index is enabledENABLED
or functional based index isDISABLED
.