今天领导说有个表的列属性没法修改,让我摸清前因后果
开始操作
–表HLZNB20210220 操作
–修改表—失败
ALTER TABLE HLZNB20210220 MODIFY F_ZBH VARCHAR2(30);
–统计表数据1000条
select count(*) from HLZNB20210220 ;
–查询索引涉及的列
select * from user_ind_columns where table_name = 'HLZNB20210220 ';
select * from user_ind_expressions where index_name =‘HLZNB20210220_INDEX1’;
F_UNITID、SYS_NC00016、SYS_NC00017、SYS_NC00018(F_ZBH) 发现这个奇形怪状的 SYS_NC00018 其实代表的列是 F_ZBH 是个函数索引,正好我们修改的是 F_ZBH
–那么我该如何找到索引的创建语句,以下语句不成功,说是超过实际条数(应该是登陆服务器),最后还是通过 PLSQL查询SQL查到的
select dbms_metadata.get_ddl(‘LSYHZSJSH2015’,‘LSYHZSJSH2015_INDEX1’) from dual;
select dbms_metadata.get_ddl(‘LSYHZSJSH2015_INDEX1’,‘F_ZBH’) from dual;
select dbms_metadata.get_ddl(‘INDEX’,‘IDX_NAME’,‘CWBASE1_9999’) from dual;
select dbms_metadata.get_ddl(‘INDEX’,‘LSYHZSJSH2015_INDEX1’,‘SCOTT’) from dual;
–数据备份
create table HLZNB20210220_bak as select * from HLZNB20210220;
select count(*) from HLZNB20210220_bak;
–删除索引
drop index LSYHZSJSH2015_INDEX1;
–修改属性
ALTER TABLE LSYHZSJSH2015 MODIFY F_ZBH VARCHAR2(30);
–创建索引
create unique index LSYHZSJSH2015_INDEX1 on LSYHZSJSH2015 (F_UNITID, F_QXBH DESC, F_SJBH DESC, F_ZBH DESC) tablespace CWDATA1;
原理分析
1、函数索引的作用(挖坑)
2、dbms_metadata.get_ddl 的用法(挖坑)