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