我们有一个将LONG列转换为LOB的迁移脚本,如

Oracle migration guide所述,该表的索引现在需要重建.

假设表名是MY_TABLE,我一直在尝试运行这个脚本:

BEGIN

FOR index_entry IN (

select INDEX_NAME from user_indexes where table_name='MY_TABLE' and index_type='NORMAL'

)

LOOP

ALTER INDEX index_entry.index_name REBUILD;

END LOOP;

END;

但是,它失败并出现以下语法错误:

PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:

( begin case declare exit for goto if loop mod null pragma

raise return select update while with

<<

continue close current delete fetch lock insert open rollback

savepoint set sql execute commit forall merge pipe purge

[Failed sql: BEGIN

FOR index_entry IN (

select INDEX_NAME from user_indexes where table_name='MY_TABLE' and index_type='NORMAL'

)

LOOP

ALTER INDEX index_entry.index_name REBUILD]

ALTER不是在循环中使用的有效命令吗?

编辑:在lad2025的建议中,尝试使用EXECUTE IMMEDIATE,如下所示:

5: LOOP

6: execute immediate 'alter index ' || index_entry.index_name || ' rebuild';

7: END LOOP;

我收到:

ORA-06550: line 6,column 92:

PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

* & = - + ; < / > at in is mod remainder not rem return

returning <> or != or ~= >= <= <> and or

like like2 like4 likec between into using || bulk member

submultiset

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)

编辑2:EXECUTE IMMEDIATE正常工作.文件结束问题与Liquibase执行我的脚本有关,而我忘记定义我的< sql>阻止:

^ defaults to true

重要的是,默认情况下,Liquibase会以分号分割语句,这需要关闭.

oracle 对表重建索引,重建特定Oracle表的所有常规索引相关推荐

  1. mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库

    1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...

  2. Oracle对表名大小写敏感吗,让Oracle 大小写敏感 表名 字段名 对像名

    一.解决方案 1.在表名.字段名.对象名上加上双引号,即可实现让oracle大小写区分. 2.但是这又引起了另一个问题:在数据库操作中,sql语句中相应的表名.字段名.对象名上一定要加双引号. 解决办 ...

  3. Oracle分区表3种重建方法(基础原理、优点、类型、表分区总结)----(实战)

    一.分区原理 提供了分区技术以⽀持VLDB(Very Large DataBase),分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中,分区完全对应用透明. Oracle的分区表可以包括 ...

  4. oracle突然查询变慢,[转] Oracle sql 查询突然变慢 -- 案例分析

    一条sql突然执行变慢,耗时9秒,应用是不能改的,只能从数据库方面下手解决 步骤思路: 1:查看sql是否走索引 2:查看索引是否失效 3:hint 强制走索引(只是用来查看hint状态下,查询是否更 ...

  5. mySQL数据表创建索引_MySQL创建数据表 建索引

    除非注明,文章均为易水寒原创,版权属于易水寒博客,转载请注明出处,谢谢. 三.数据字段属性: 1.unsigned 可以让空间增加一倍,如果不希望在字段中插入负值就使用此属性,另外只能用在数值型字段. ...

  6. 锁表:MyISAM非聚集索引和InnoDB聚集索引的各种锁表问题

    参考文献 Mysql数据库中的各种锁_张花生的博客-CSDN博客_数据库锁 面试官:MySQL死锁有哪些场景?如何避免? 概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存 ...

  7. mysql索引执行计划_第六章· MySQL索引管理及执行计划

    一.索引介绍 1.为什么要做索引 让获取的数据更具有目的性,从而提高数据库检索数据的性能 2.索引类型介绍 1)BTREE:树索引 B+树索引 B*树索引 2)HASH:HASH索引 3)FULLTE ...

  8. mysql千万级数据索引查询_mysql千万级数据量根据索引优化查询速度

    (一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...

  9. Oracle中重建表的全局的索引、分区索引、及同时建全局和分区索引----脚本

    在oracle中,重建普通表上的索引很简单.要重建特定索引,只需执行如下sql命令: ALTER INDEX INDEX_NAME Rebuild; 这里INDEX_NAME 代表索引的名字,下同. ...

最新文章

  1. opencv-python处理图片的一些列操作
  2. 修改Linux root用户名 后提示network manager启动失败修复
  3. 2021.12.20用ULN2003驱动四线步进电机
  4. 频域分析方法的理解(信号、频谱、能量谱、功率谱、倒频谱、小波分析)(终极教程)
  5. 外部 Storage Provider - 每天5分钟玩转 Docker 容器技术(149)
  6. 前端学习(1819):前端面试题之封装函数之冒泡排序
  7. C4.5决策树生成算法完整版(Python),连续属性的离散化, 缺失样本的添加权重处理, 算法缺陷的修正, 代码等
  8. Win7系统还原声音图标的方法
  9. 《C++ Primer Plus》读书笔记之七—内存模型和名称空间
  10. 它估值 25 亿!被马云领投,是华为“老战友”,网友:也许股价能超茅台!
  11. 关于 Apache 2.4 配置PHP时的错误记录
  12. micropython常用模块-Python时间模块之datetime
  13. FFmpeg合并ts文件为mp4文件
  14. Vue Markdown编辑器
  15. 计算机更换固态硬盘方法,换SSD不重装系统的方法
  16. js 实现打以及样式问题
  17. 跟i9处理器差不多的服务器芯片,AMD下一代服务器处理器代号“星河舰队”
  18. 为什么行程码不能显示到县级,工信部回应
  19. windows下mysql误删除数据恢复
  20. SAP ME架构官网文档学习总结

热门文章

  1. Shell 条件表达式的正则匹配
  2. 数据结构概念及连续存储数组的算法演示
  3. CANopen笔记2
  4. eclispe dev tools
  5. 【Java】对象容器——集合
  6. 第十一节:Springboot整合log4j2日志
  7. AQS同步队列结构分析
  8. 苹果自动驾驶“排名垫底”,每1.1英里就发生一次脱离...
  9. TensorFlow 2.0开发者测试版来啦,正式版推出指日可待
  10. Spring 冬天来了,春天还远吗