创建表

 create table student(
student_id number,
name varchar2(240)
) tablespace school_data;

创建索引

create index student_n1 on studen(name);

查看索引具体内容

 SELECT * FROM dba_indexes dbi WHERE dbi.index_name = 'STUDENT_N1';
--查看具体的列,可以发现tablespace_name,PCTFREE等属性,说明索引也是存储与数据块中的一个具体文件 --插入数据后,段也创建了(因为延迟段)
INSERT INTO student VALUES(101,'ALEX');
COMMIT;
select * from dba_segments dbs where dbs.segment_name = 'STUDENT_N1';

索引的状态

alter index student_n1 unusable;
--再次查看
SELECT dbi.index_name,
dbi.status
FROM dba_indexes dbi
WHERE dbi.index_name = 'STUDENT_N1';
--索引的状态变为UNUSABLE了
--再次查看段,会发现段已经没有了
select * from dba_segments dbs where dbs.segment_name = 'STUDENT_N1';
select * from dba_extents dbe where dbe.segment_name = 'STUDENT_N1';
--查看区,也发现区也没有了

结论:使索引变为不可以不仅是改变状态而已。

参考资料:当索引不可用(unusable)时,Oracle 内部会把该索引元数据(即创建语句包含的基本信息)与真

是物理数据之间的对应关系断裂,相关数据块可被重用(经过实验,ORACLE 会把索引段删

除,但是 sys 用户索引除外)。索引段是否已创建(dba_indexe_segment_created)这一属性,

会变为 no(正常情况向,应为 yes)。Unusable 索引,想要被重新使用,只有一种方法:rebuild。

当然还可以 drop 再 create

重建索引

alter index student_n1 rebuild;
--重建后可以再次在数据字典中看到了
select * from dba_segments dbs where dbs.segment_name = 'STUDENT_N1';
select * from dba_extents dbe where dbe.segment_name = 'STUDENT_N1';

删除索引

drop index student_n1;

除此之外还有两种修改索引状态的语句:

alter index student_n1 disable;
alter index student_n1 enable;

然而我们执行以上语句会报错

SQL> alter index student_n1 disable;
alter index student_n1 disable
*
ERROR at line 1:
ORA-02243: invalid ALTER INDEX or ALTER MATERIALIZED VIEW option

因为该语句只能用于函数索引上

-- 创建函数索引
create index student_name_n1 on student(upper(name));
alter index student_name_n1 disable;

最新文章

  1. [原创] Go语言在Centos上的部署
  2. Java提高篇——Java 异常处理
  3. Apache_proxy负载均衡和Session复制
  4. freemarker初级教程(一)
  5. 【转】Linux 查看内存(free buffer cache)
  6. 父目录的权限对子目录有没有影响?[Linux]
  7. Mybatis开篇以及配置教程
  8. windows API 核心编程学习心得
  9. 调用ShellExecute所须要头文件
  10. IOS发展--他们控制的定义
  11. 在ubuntu上安装k-vim
  12. vue中使用keepAlive组件缓存遇到的坑
  13. Python cv2库(人脸检测)
  14. PID控制器开发笔记之十一:专家PID控制器的实现
  15. GCD on Blackboard
  16. 初识 GitHub
  17. 【MATLAB】matlabR2010a与vs2010联合编译设置
  18. layer关闭弹出层,弹出打印
  19. NEFU 117 - 素数个数的位数 - [简单数学题]
  20. robot framework添加库注意事项

热门文章

  1. LKWA靶机学习
  2. Mars3D入门示例
  3. MySQ安装装
  4. corundum:100G NIC 学习:(一)
  5. 100、 FilenameUtils
  6. 41.Sentinel
  7. the default discovery settings are unsuitable for production use at least one of...的解决办法
  8. 在IIS上同站点部署多个程序操作步骤
  9. JavaSE总结(2)
  10. Bug的分类及优先级划分