Oracle中重建表的全局的索引、分区索引、及同时建全局和分区索引----脚本
在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中重建表的全局的索引、分区索引、及同时建全局和分区索引----脚本相关推荐
- oracle查找分区重建,Oracle中重建表分区
Oracle中重建表分区 个人分类:原创笔记 例如对myuser用户下表userbase执行表分区重建操作! 1--验证是否可以执行 SQL> execute dbms_redefinition ...
- Oracle中多表联合更新处理方法详解
ORACLE中多表关联更新与SQL Server和MYSQL的语法稍有不同,现将ORACLE中多表关联更新的几种方法处理如下: 一.创建测试表和添加测试数据 CREATE TABLE t_test01 ...
- 【DB笔试面试592】在Oracle中,表和表之间的关联方式有哪几种?
♣题目 部分 在Oracle中,表和表之间的关联方式有哪几种? ♣答案部分 目前为止,无论连接操作符如何,典型的连接类型共有3种: ① 排序合并连接(Sort Merge Join,简称SMJ),Or ...
- 【DB笔试面试593】在Oracle中,表的访问方式有哪几种?
♣题目 部分 在Oracle中,表的访问方式有哪几种? ♣答案部分 访问表的方式也叫优化器访问路径,主要有3种访问路径:全表扫描(FULL TABLE SCAN,FTS).索引扫描(INDEX SCA ...
- oracle r修改表名,oracle中修改表名
<<>> answer1: ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令) answer2: SQL ...
- Oracle中多表查询再按时间倒序
我在工作中在Oracle中多表查询再按时间倒序时,用order by 表名.datatime desc 总是实现不了. 不过最后问杨鹃最后和我说可以把我们查询的总个sql语句做为一个表来排序: sel ...
- oracle中删除表的四种基本操作 2021-11-03
oracle中删除表的四种基本操作: drop table 表名 delete from 表名 truncate table 表名 在PL/SQL中,选中要删除的表,右键,选drop
- oracle中设置表的主键字段为自增序列(实例)
oracle中设置表的主键字段为自增序列(实例) 1.首先创建一个表(如日志表) //删除库表中存在的日志表 drop table S_LOG_INFO cascade constraints; // ...
- oracle 表的er图,用PowerDesingner把oracle中的表导成er图
用PowerDesingner把oracle中的表导成er图 通过windows数据源管理,建立ODBC数据源. 我的是基于oracle10g. 打开Windows的控制面板 打开管理工具 打开数据源 ...
最新文章
- python excel 自动化-python自动化测试报告(excel篇)
- 进程通信学习笔记(System V消息队列)
- 构建用户界面 Android 应用中一些常用的小部件
- git delete file remote
- 解决导航守卫router.beforeResolve使用不了this.$store
- 肖像:作家艺术家之一
- ASP.NET Core使用功能开关控制路由访问
- line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
- tensorflow第十一步CNN表情识别
- 国家一级计算机考试模拟题2012版,2012年计算机等级考试一级上机Word模拟题2
- HDU1829【种类并查集】
- VC知识库搜索ADO
- Node——request使用代理
- 修改MySQL的配置文件
- bugzilla mysql_Centos 7 搭建Bugzilla5.0.4
- Gartner 研讨会 “九问数字化转型” 会后感分享
- 吴闲云——煮酒探西游
- 项目经理与技术经理的区别
- 牙医管家口腔管理软件DSD微笑设计3.8版本更新
- 左耳听风——笔记一:如何学习