移动表到新表空间后重建索引

将某个表空间内的多个数据库表移动到另一个表空间后,由于没有处理索引,导致到新库中查询、插入等操作时,oracle报错:

ORA-01502: 索引 ‘WWYSBI41.SYS_C0027004‘ 或这类索引的分区处于不可用状态

原因是仍用了之前表空间的索引,解决办法是重建这些索引。

对单个表索引,

alter index <index_name> rebuild (online)

注:上面的index_name外面的<和>只是表示这是一个变量,并不是真的要加<与>。

对多个表的索引,

需要查询出所有不可用的索引后,分别重建索引,有两种方法,一个是用存储过程,另一种是在文本中批量拼出sql,多个sql用分号分隔,到plsql等工具中执行这写拼好的SQL。

参考:

http://blog.csdn.net/ocean20/article/details/7325609

时间: 2024-12-18 04:35:28

移动表到新表空间后重建索引的相关文章

Sql中根据旧表创建新表的SQL语句

今天在网上查了下,根据旧表创建新表的SQL语句,网上给了两个答案 create table tab_new like tab_old (使用旧表创建新表) create table tab_new as select col1,col2- from tab_old definition only 两个语句都试了一下,报错了. 正确的方法是 select * into newtable from oldtable; 如果不想导记录,只想生成表结构 :select * into newtable f

MySQL创建临时表-旧表建新表

1.创建临时表 临时表是一张表,用来临时保存一些数据 特点: 只对创建该临时表的用户可见: 当会话结束时,MySQL自动删除临时表. 临时表的核心:建表和删表消耗资源极其少 创建临时表的基本格式: CREATE TEMPORARY TABLE  tbl_name(--); ①创建的临时表在当前会话,正常使用 ②断开连接,再重新连接后执行查询,抛出异常: 错误代码: 1146 Table 'db_name.temtbl_name' doesn't exist.//该临时表在会话结束的时候被系统删除

postgresql----根据现有表创建新表

除普通的建表语句"create table table_name(columns);"之外,还可以根据现有表快速的创建新表: 一.使用create table ... (like ...)创建一个和原表结构相同的新表,根据INCLUDING保留原表的约束,索引等. create table table_name (like parent_table {INCLUDING|EXCLUDING}{DEFAULTS|CONSTRAINTS|INDEXES|STORAGE|COMMENTS|A

oracle中利用旧表生成新表

数据库中原有表CCC,字段如图 create table CCCAAABBB as select *from CCC where 1=2 上面用1=2代表只是复制原有表的表结构 若: 就是除了表的名字不同,table结构与字段均相同

sql 创建表、删除表 增加字段 删除字段操作

[转]sql 创建表.删除表 增加字段 删除字段操作 下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[

SqlServer2012-创建表、删除表 增加字段 删除字段操作

新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,) 删除表:Drop table [表名] 插入数据

15.表结构修改-修改表定义和表名

修改列定义和表名 修改列定义 ALTER  TABLE  S MODIFY  type TINYINT  UNSIGNED  NOT NULL;(modify是调整 稍作修改的意思,UNSIGNED表示是无符号的,是一个正数如果直接不用UNSIGNED,那int可以是正数负数和零) 演示: 修改表字段 --type(字段名称)  数据类型:tinyint(小整型) 默认是1 将type int ,默认值为2 ALETER TABLE member MODIFY  type  INT UNSIGN

SQL SEVER数据库重建索引的方法

一.查询思路 1.想要判断数据库查询缓慢的问题,可以使用如下语句,可以列出查询语句的平均时间,总时间,所用的CPU时间等信息 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total_physical_reads N'物理读取总次数' ,total_logical_reads/execution

重建索引到指定表空间

数据存储时,最好是将数据与索引分开存储在不同的表空间中,因为建立索引是要占用硬盘存储空间的,索引表空间和数据表空间建立是一样的 下面语句用于移动索引到指定表空间: alter index ha_wxzj.index_name rebuild tablespace ha_wxzj_index_data; 也可以利用以下语句获得某个schema下移动索引表空间的所有语句:复制代码 代码如下: select 'alter index '||owner||'.'||index_name||' rebui