在oracle中,重建普通表上的索引很简单。要重建特定索引,只需执行如下sql命令:

ALTER INDEX INDEX_NAME Rebuild;

这里INDEX_NAME 代表索引的名字,下同。

1.重建某个表上的索引,执如下PL/SQL代码:

重建这张表上的全局索引的sql代码如下:

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'T2')

loop

if c1.partitioned='NO' then

execute immediate 'ALTER INDEX ' || c1.index_name || ' REBUILD';

end if;

end loop;

end;

/

这里,TABLE_NAME 代表索引的名字,下同。

2.而重建分区表上的索引

2.1如果这个索引是分区的,重建所有分区方法:

begin

for c2 in (select partition_name from user_ind_partitions where index_name='INDEX_NAME' and status = 'UNUSABLE')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end;

/

2.2如果这个索引是非分区的,重建所有分区索引法: (和普通表上的相同)

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'TABLE_NAME')

loop

if c1.partitioned='YES'

-- rebuild every unusable partition for partitioned index

for c2 in (select partition_name from user_ind_partitions where index_name=c1.index_name and status = 'UNUSABLE')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end if;

end loop;

end;

3.重建这张表上的全部索引(全局和分区)

begin

for c1 in (select t.index_name, t.partitioned from user_indexes t where table_name = 'T2'))

loop

if c1.partitioned='NO' then

-- rebuild global index directly重建全局索引 

execute immediate 'alter index ' || c1.index_name || ' rebuild';

else

-- rebuild every unusable partition for partitioned index 重建分区索引

for c2 in (select partition_name from user_ind_partitions where index_name=c1.index_name and status = 'UNUSABLE')

loop

execute immediate 'alter index ' || c1.index_name || ' rebuild partition ' || c2.partition_name;

end loop;

end if;

end loop;

Oracle中重建表的全局的索引、分区索引、及同时建全局和分区索引----脚本相关推荐

  1. oracle查找分区重建,Oracle中重建表分区

    Oracle中重建表分区 个人分类:原创笔记 例如对myuser用户下表userbase执行表分区重建操作! 1--验证是否可以执行 SQL> execute dbms_redefinition ...

  2. Oracle中多表联合更新处理方法详解

    ORACLE中多表关联更新与SQL Server和MYSQL的语法稍有不同,现将ORACLE中多表关联更新的几种方法处理如下: 一.创建测试表和添加测试数据 CREATE TABLE t_test01 ...

  3. 【DB笔试面试592】在Oracle中,表和表之间的关联方式有哪几种?

    ♣题目 部分 在Oracle中,表和表之间的关联方式有哪几种? ♣答案部分 目前为止,无论连接操作符如何,典型的连接类型共有3种: ① 排序合并连接(Sort Merge Join,简称SMJ),Or ...

  4. 【DB笔试面试593】在Oracle中,表的访问方式有哪几种?

    ♣题目 部分 在Oracle中,表的访问方式有哪几种? ♣答案部分 访问表的方式也叫优化器访问路径,主要有3种访问路径:全表扫描(FULL TABLE SCAN,FTS).索引扫描(INDEX SCA ...

  5. oracle r修改表名,oracle中修改表名

    <<>> answer1: ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令) answer2: SQL ...

  6. Oracle中多表查询再按时间倒序

    我在工作中在Oracle中多表查询再按时间倒序时,用order by 表名.datatime desc 总是实现不了. 不过最后问杨鹃最后和我说可以把我们查询的总个sql语句做为一个表来排序: sel ...

  7. oracle中删除表的四种基本操作 2021-11-03

    oracle中删除表的四种基本操作: drop table 表名 delete from 表名 truncate table 表名 在PL/SQL中,选中要删除的表,右键,选drop

  8. oracle中设置表的主键字段为自增序列(实例)

    oracle中设置表的主键字段为自增序列(实例) 1.首先创建一个表(如日志表) //删除库表中存在的日志表 drop table S_LOG_INFO cascade constraints; // ...

  9. oracle 表的er图,用PowerDesingner把oracle中的表导成er图

    用PowerDesingner把oracle中的表导成er图 通过windows数据源管理,建立ODBC数据源. 我的是基于oracle10g. 打开Windows的控制面板 打开管理工具 打开数据源 ...

最新文章

  1. python excel 自动化-python自动化测试报告(excel篇)
  2. 进程通信学习笔记(System V消息队列)
  3. 构建用户界面 Android 应用中一些常用的小部件
  4. git delete file remote
  5. 解决导航守卫router.beforeResolve使用不了this.$store
  6. 肖像:作家艺术家之一
  7. ASP.NET Core使用功能开关控制路由访问
  8. line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
  9. tensorflow第十一步CNN表情识别
  10. 国家一级计算机考试模拟题2012版,2012年计算机等级考试一级上机Word模拟题2
  11. HDU1829【种类并查集】
  12. VC知识库搜索ADO
  13. Node——request使用代理
  14. 修改MySQL的配置文件
  15. bugzilla mysql_Centos 7 搭建Bugzilla5.0.4
  16. Gartner 研讨会 “九问数字化转型” 会后感分享
  17. 吴闲云——煮酒探西游
  18. 项目经理与技术经理的区别
  19. 牙医管家口腔管理软件DSD微笑设计3.8版本更新
  20. 左耳听风——笔记一:如何学习

热门文章

  1. DM8联机逻辑备份perl脚本实现要点(单双引号、system和disql)
  2. 个性化自己的U盘,更改U盘的显示图标
  3. 调用移动端相机以及相册功能
  4. 泰山版!Java开发手册开放下载
  5. ubuntu下opera浏览器安装Flash插件
  6. Windows 7中使用建设银行网银
  7. 2015年大数据基金闪耀 海富通、泰达宏利2016竞风流
  8. JAVA 攻城狮 第三十三天
  9. Flutter 跳转页面并传值
  10. 从技术角度看待某物APP私删用户视频事件