昨天进行了表空间迁移的维护,维护后出现一个问题:MYTEST用户下的表表空间迁移后索引存在失效。
针对该问题和其他DBA进行了一些沟通,大家理解并不统一。后通过实际测试发现,表空间迁移后没有数据的表索引正常,但有数据的表的相关索引确实会失效,
解决的方法是REBUILD索引(今早rubuild MYTEST下的所有索引,通过select INDEX_NAME,status from user_indexes确认status均为VALID的正常状态)。

进一步查找资料发现:
Moving a table changes the rowids of the rows in the table. This causes indexes on the table to be marked UNUSABLE,
and DML accessing the table using these indexes will receive an ORA-01502 error. The indexes on the table must be dropped or rebuilt.
Likewise, any statistics for the table become invalid and new statistics should be collected after moving the table.
移动表会导致行的rowid变化,导致该表上面的index不可用,即标记为UNUSABLE,当用DML来操作该表时用到该索引,会引发ORA-01502 error,因此索引必须drop或者rebuild。
该表的统计信息也会失效,所以需要重新对该表进行统计分析,即analyze table *** compute statistics。)

但是针对ORA-01502,实际测试时并不存在
测试步骤:
SQL> create table test_altertablespace (col1 number) tablespace USERS;------------------------------------------------------创建测试表,表空间为USERS
Table created

SQL> create index idx_test_altertablespace on test_altertablespace(col1);----------------------------------------------------创建索引
Index created

SQL> select tablespace_name,status from user_indexes where index_name = 'IDX_TEST_ALTERTABLESPACE';--确认索引的状态为VALID
TABLESPACE_NAME                STATUS
------------------------------ --------
IN_MYTEST_DATA                     VALID

SQL> alter table test_altertablespace move tablespace IN_MYTEST_DATA;--------------------------------------------------迁移表空间到IN_MYTEST_DATA
Table altered

SQL> select tablespace_name,status from user_indexes where index_name = 'IDX_TEST_ALTERTABLESPACE';--确认索引的状态为VALID
TABLESPACE_NAME                STATUS
------------------------------ --------
IN_MYTEST_DATA                     VALID

SQL> insert into test_altertablespace values(1);------------------------------------------------------------------------------------------插入数据
1 row inserted
SQL> commit;
Commit complete

SQL> select tablespace_name,status from user_indexes where index_name = 'IDX_TEST_ALTERTABLESPACE';--确认索引的状态为VALID
TABLESPACE_NAME                STATUS
------------------------------ --------
IN_MYTEST_DATA                     VALID

SQL> alter table test_altertablespace move tablespace users;----------------------------------------------------------------------移动表空间到USERS
Table altered

SQL> select tablespace_name,status from user_indexes where index_name = 'IDX_TEST_ALTERTABLESPACE';--确认索引的状态为UNUSABLE
TABLESPACE_NAME                STATUS
------------------------------ --------
IN_MYTEST_DATA                     UNUSABLE

转载于:https://blog.51cto.com/yunlongzheng/397758

oracle 10G 表空间迁移 索引需要重建相关推荐

  1. oracle 10g 扩表空间,Oracle 10g 表空间管理(一)

    一.表空间说明 Oracle 10g表空间包括系统表空间和非系统表空间: 1.系统表空间------>一般存储的是数据字典的相关信息 SYSTEM:是数据字典存放的表空间 SYSAUX:辅助的系 ...

  2. oracle 整个表空间迁移,ORACLE表批量迁移表空间

    第一步:将表迁移到目标表空间 1)使用如下语句,可以将需要移动的表空间语句在pl/sql中列出来, select 'alter table ' ||table_name || ' move table ...

  3. oracle 整个表空间迁移,oracle11g迁移表空间

    表空间名为sbjc,要从'D:\APP\ORACLE\ORADATA\TABLESPACE\SBJC.DBF' 迁移到 'F:\oracle\oradata\tablespace\SBJC.DBF'. ...

  4. oracle 10G表空间创建的步骤

    当在数据库中创建用户时,基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间.     1.创建表空间 不论是Lnux环境,还是Wndows环境,都要首先创建好表空间的存放路径,如:     ...

  5. oracle xtts 测试,XTTS 跨平台表空间迁移测试

    简介 这两天一直在研究xtts(跨平台表空间迁移的方法),因为一是网上的资源不是很多,二是个人感觉这是个很实用的迁移技巧.下面就和大家来分享一下我个人做的测试过程吧. 1.搭建测试环境 跨平台表空间迁 ...

  6. 【MOS】如何利用RMAN可传输表空间迁移数据库到不同字节序的平台(文档 ID 1983639.1)...

    如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (文档 ID 1983639.1) 适用于: Oracle Database - Enterprise Edition - 版本 10.1 ...

  7. 更改oracle 表空间大小,更改oracle数据库表空间大小

    Oracle表空间扩展 使用oracle时可能遇到无法通过8192在表空间中扩展错误,原因是数据库的表空间不足. oracle表空间数据文件容量与db_block_size有关,在初始建库时指定DB_ ...

  8. 表空间迁移(transport tablespace)测试案例

    版本要求: 8i企业版以上支持表空间迁移功能.9i以上不要求迁移表空间与目标数据库的块尺寸一样. 限制: 源和目标数据库必须是相同的硬件平台. 源和目标数据库字符集和国家字符集必须相同. 迁移表空间与 ...

  9. Oracle 创建表空间,用户,赋值(简装)

    一, 1.Oracle 创建表空间,用户,赋值(简装) C:\Documents and Settings\Administrator>sqlplus /nolog SQL> conn / ...

最新文章

  1. java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误
  2. “剁手”的第十年,AI加持下的快递速度你还满意吗?
  3. Linux远程远程控制程序TeamViewer
  4. 扇贝编程python是干嘛的-产品观察 | 以对话式互动学习撬动转化,扇贝编程瞄准职教市场...
  5. 怎样在Win7系统建立并开启Wifi热点
  6. Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略
  7. win7如何为计算机添加用户名和密码,win7系统电脑,如何的设置共享,共享计算机的地用户名和密码怎样设置...
  8. linux各机器之间配置无密码访问
  9. css flexbox模型_如何将Flexbox后备添加到CSS网格
  10. 前端学习(2151):webpack之使用vue
  11. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第7篇]随机性如何辅助计算和什么是BPP类问题
  12. Angular项目中核心模块core Module只加载一次的实现
  13. android 系统(7)---android框架大全
  14. 全国计算机考试可以异地考吗,公务员省考可以异地考吗
  15. 集成学习—随机森林原理(理解与论文研读)
  16. R-大数据分析挖掘(4-R爬虫实现)
  17. c语言用程序判断是否素数,用C语言编写判断一个数是否是素数的程序
  18. 【树链剖分】树链剖分讲解
  19. java字符常量_java字符常量
  20. 计算机网络数据链路层之MAC协议概述

热门文章

  1. 送餐机器人被解雇,人工智能“人性”待进化
  2. Nginx之rewrite:域名与二级目录之间的跳转
  3. Silverlight 4常用StringFormat格式总结
  4. 被忽视的 Application
  5. asp.net窗体操作总结
  6. php数字加零,php实现数字补零的两种方法
  7. console用法java_使用console对javaScirpt进行全面调试-全面分析console用法
  8. javascript Windows对象(BOM)
  9. Levenshtein distance最小编辑距离算法实现
  10. 基于 Bochs 的操作系统内核实现