如何在Oracle中的列上找到所有功能索引

Dar*_*man 5 oracle indexing plsql

假设我有一个程序在数据库中搜索要修改的列,作为数据库转换过程的一部分.

如果我尝试更改具有定义的功能索引的列,则会出现以下错误:

ORA-30556: functional index is defined on the column to be modified
Run Code Online (Sandbox Code Playgroud)

查找ORA代码,解决方案是"在尝试修改列之前删除功能索引".

大!那么如何在该列上找到所有功能索引?

user_ind_columns视图看起来是一个好的开始,但功能索引在其COLUMN列中有"SYS_NC00042 $"之类的内容.环顾其他user_观点,我没有看到任何明显的观点.我错过了什么吗?

或者我完全以错误的方式解决这个问题?

Khb*_*Khb 11

该表user_ind_expressions描述了基于函数的索引的表达式.

Oracle 11.2链接


小智 6

看看INDEX_TYPE专栏USER_INDEXES:

select table_name, index_name, index_type
from user_indexes
where index_type like 'FUNCTION%'
order by table_name, index_name

TABLE_NAME                      INDEX_NAME                      INDEX_TYPE                 
------------------------------  ------------------------------  ---------------------------
SOME_TABLE                      SOME_TABLE_FUNC_INDEX           FUNCTION-BASED NORMAL
Run Code Online (Sandbox Code Playgroud)