Oracle重建索引
创建表
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;
Oracle重建索引的更多相关文章
- Oracle 重建索引脚本
该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...
- [转]Oracle 重建索引的必要性
http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...
- oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
导出数据库备份文件 1. 备份服务器数据,采用并行方式,加快备份速度(文件日期根据具体操作日期修改) expdp jhpt/XXXX directory=databackup dumpfile=dpf ...
- ORACLE关于索引是否需要定期重建争论的整理
ORACLE数据库中的索引到底要不要定期重建呢? 如果不需要定期重建,那么理由是什么? 如果需要定期重建,那么理由又是什么?另外,如果需要定期重建,那么满足那些条件的索引才需要重建呢?关于这个问题,网 ...
- Oracle重建表索引及手工收集统计信息
Oracle重建所有表的索引的sql: SELECT 'alter index ' || INDEX_NAME || ' rebuild online nologging;' FROM USER_IN ...
- Oracle分区索引
索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区索引) 下面就来详细解 ...
- 11G在线重建索引
SQL> select count(*) from test_idx; COUNT(*) ---------- 19087751 SQL> select segment_name,segm ...
- Oracle数据库索引使用及索引失效总结
容易引起oracle索引失效的原因很多: 1.在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2.新建的表还没来得及生成统计信息,分析 ...
- ORACLE虚拟索引(Virtual Index)
ORACLE虚拟索引(Virtual Index) 虚拟索引概念 虚拟索引(Virtual Indexes)是一个定义在数据字典中的假索引(fake index),它没有相关的索引段.虚拟索引的目 ...
- 【转】Oracle之索引
简介 1.说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录.在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用目录可以不用翻阅整本书即可找到想要的信 ...
随机推荐
- 使用 UnoCSS shortcuts 简化 class
UnoCSS 确实简化了不少样式书写.也降低了 CSS 打包体积,提升了样式使用率.但样式太多的话,class 也写得多,比较费眼.所幸,UnoCSS 提供了 shortcuts 来简化 class, ...
- 脚本之美│VBS 入门交互实战
目录 什么是 VBS 第一个 VBS 脚本 msgbox 语法 中文乱码 弹窗交互功能 表白恶搞 什么是 VBS VBS 是一种 Windows 脚本语言,全称是 Microsoft Visual B ...
- 9.增加Marker 标记
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- fabric学习笔记9
fabric学习笔记9 20201303张奕博 2023.1.20 Python Web3 与智能合约的交互 开发合约,或者开源合约,都会有一份该合约的ABI JSON文件 ABI文件包括了智能合约的 ...
- PTA---求月天数
最近做了几次模拟考试,对于求月天数这个题目有了更深一点的理解. 这个题的题目基本就是让用户输入年份和月份,给出该月有多少天. 对于这个题,首先就要考虑年份的问题,因为闰年和非闰年在二月是有一点不同的, ...
- iOS中的三种定时器
iOS中的三种定时器 NSTimer 一.背景 定时器是iOS开发中经常使用的,但是使用不慎会造成内存泄露,因为NSTimer没有释放,控制器析构函数dealloc也没有调用,造成内存泄露. 二.使用 ...
- PV动态供给之nfs
需求描述:利用nfs实现PV动态供给 前提:部署好nfs服务器 这里地址是 192.168.1.35 path: /ifs/k8s NFS:是一个主流的文件共享服务器. # yum install ...
- EF和dapper
EF:重量级ORM的代表 优点: 1.不关心sql怎么写, 2.开发速度快,和linq结合,有效提高开发效率 3.code first,代码优先,不用关心数据库结构,代码先行. 4.跨数据库,只需要把 ...
- quasar+vue、Input组件绑定两个值
项目中关于一个只读input绑定两个值,例如input显示取值范围,通过查看vue及quasar文档找出解决方法,如下代码: <q-input v-bind:value="`${det ...
- CC1101RGPR学习笔记:工作原理简单入门
众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G, 4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一定的重 ...