alter table xx move tablespace xx

转载 2007年09月11日 16:54:00

SQL> select table_name,tablespace_name from user_tables where table_name='T_NEW';

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T_NEW USERS

SQL> select num_rows,blocks,last_analyzed from user_tables where table_name='T_NEW';

NUM_ROWS BLOCKS LAST_ANALYZED
---------- ---------- --------------
50024 180 31-8月 -07

SQL> ALTER TABLE T_NEW MOVE TABLESPACE TEST;

表已更改。

SQL> select num_rows,blocks,last_analyzed from user_tables where table_name='T_NEW';

NUM_ROWS BLOCKS LAST_ANALYZED
---------- ---------- --------------
50024 180 31-8月 -07

发现统计表的信息依然存在.

但是10G的文档是这么说的:
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.

SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER,'T_NEW');
BEGIN DBMS_STATS.GATHER_TABLE_STATS(USER,'T_NEW'); END;

*
第 1 行出现错误:
ORA-20000: index "TEST"."IND_T" or partition of such index is in unusable
state
ORA-06512: 在 "SYS.DBMS_STATS", line 13056
ORA-06512: 在 "SYS.DBMS_STATS", line 13076
ORA-06512: 在 line 1


SQL> DESC USER_INDEXES
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
INDEX_NAME NOT NULL VARCHAR2(30)
INDEX_TYPE VARCHAR2(27)
TABLE_OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
TABLE_TYPE VARCHAR2(11)
UNIQUENESS VARCHAR2(9)
COMPRESSION VARCHAR2(8)
PREFIX_LENGTH NUMBER
TABLESPACE_NAME VARCHAR2(30)
INI_TRANS NUMBER
MAX_TRANS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
PCT_THRESHOLD NUMBER
INCLUDE_COLUMN NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
PCT_FREE NUMBER
LOGGING VARCHAR2(3)
BLEVEL NUMBER
LEAF_BLOCKS NUMBER
DISTINCT_KEYS NUMBER
AVG_LEAF_BLOCKS_PER_KEY NUMBER
AVG_DATA_BLOCKS_PER_KEY NUMBER
CLUSTERING_FACTOR NUMBER
STATUS VARCHAR2(8)
NUM_ROWS NUMBER
SAMPLE_SIZE NUMBER
LAST_ANALYZED DATE
DEGREE VARCHAR2(40)
INSTANCES VARCHAR2(40)
PARTITIONED VARCHAR2(3)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
BUFFER_POOL VARCHAR2(7)
USER_STATS VARCHAR2(3)
DURATION VARCHAR2(15)
PCT_DIRECT_ACCESS NUMBER
ITYP_OWNER VARCHAR2(30)
ITYP_NAME VARCHAR2(30)
PARAMETERS VARCHAR2(1000)
GLOBAL_STATS VARCHAR2(3)
DOMIDX_STATUS VARCHAR2(12)
DOMIDX_OPSTATUS VARCHAR2(6)
FUNCIDX_STATUS VARCHAR2(8)
JOIN_INDEX VARCHAR2(3)
IOT_REDUNDANT_PKEY_ELIM VARCHAR2(3)
DROPPED VARCHAR2(3)

SQL> SELECT INDEX_NAME,TABLE_NAME FROM USER_INDEXES;

INDEX_NAME TABLE_NAME
------------------------------ ------------------------------
SYS_C005548 EMP
IND_T T_NEW
SYS_C005541 BOOKS
SYS_C005540 AUTHORS
SYS_C005547 DEPT
SYS_C005536 T
IND_FLA1 FLASH1

已选择7行。

SQL> ALTER INDEX IND_T REBUILD;

索引已更改。

SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER,'T_NEW');

PL/SQL 过程已成功完成。

SQL> SELECT TABLE_NAME, NUM_ROWS, BLOCKS, LAST_ANALYZED FROM USER_TABLES WHERE TABLE_NAME ='T_NEW';

TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- --------------
T_NEW 50024 136 03-9月 -07


重新进行表分析后发现索引是已经失效了!
需要重建索引,重新分析后,发现BLOCKS减少
 

关于 alter table move tablespace 的一点理解

测试一: SQL> alter table hlj move tablespace test; alter table hlj move tablespace test             * E...
  • royjj
  • royjj
  • 2014年12月03日 22:33
  • 2182

alter table move和 shrink space

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

ALTER TABLE...MOVE 相关使用方法

1.  The ALTER TABLE...MOVE statement enables you to relocate data of a non-partitioned table or of a...

oracle LOB 大对象的表Move方法

       对于LOB型的表,数据量比较大的话,比如单个表的大对象有6G以上的话,使用导入和导出的方法是比较浪费时间的,并且不划算。本人测试过在P4 2.4G 1G内存 的一般工作站使用imp/dm...

oracle中如何移动控制文件,数据文件,日志文件

ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。 windows环境中用: host copy 或 host move 其它均相同。 以下是unix或linux环境中, 一.移...
  • yudehui
  • yudehui
  • 2011年10月23日 19:48
  • 2813

oracle下查看表、索引、分区表用空间大小

其实是网上找到的,怕不记得就写到这里:   0、查看用户表、索引、分区表占用空间 select segment_name, sum(bytes)/1024/1024 Mbytese from u...

alter table move跟shrink space的区别

alter table move跟shrink space的区别   今天主要从两点说他们的区别: 1. 碎片的整理 2.空间的收缩 SQL> select * from v$vers...

支持alter table move 的数据类型 :raw blob clob

收缩表清理空间和移动表到另外表空间时常遇到long、blob等数据类型不能迁移的情况。对此做个总结 支持alter table move 的数据类型 :raw blob clob 不支持的数据类型 ...

NDK开发中JNI ERROR XXX table overflow (max = XX)异常

在Java虚拟的运行时数据分区中,本地方法栈用来保存native方法调用中产生的引用,虚拟机可以用之来做可达性分析GC Roots。如果本地方法栈中的引用一直存活,且保持一定数量,则与之相关的对象将无...

关于MYSQL Error:ERROR 1005 (HY000) at line 3: Can't create table '.\xx.frm'错误

在使用mysql导入sql文件的时候出错了。 我机器上mysql重装了N次,数据文件已经达到了400MB之多,可能以前曾经导入过源表,再次导入的时候发现这个错误: ERROR 1005 (...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:alter table xx move tablespace xx
举报原因:
原因补充:

(最多只允许输入30个字)