Oracle Move命令总结
从8i开始,oracle开始提供Move的命令。我们通常使用这个命令,将一个table segment从一个tablespace移动到另一个tablespace。Move实际上是在block之间物理的copy数据,那么,我们可以通过这种方式来降低table的HWM。我们先通过一个实验来看看move是如何移动数据的。
1.建表并插入数据:
SQL> create table sjh.test1(id int) tablespaceusers;
表已创建。
SQL> insert into sjh.test1 values(1);
已创建 1 行。
SQL> insert into sjh.test1 values(2);
已创建 1 行。
SQL> insert into sjh.test1 values(3);
已创建 1 行。
SQL> insert into sjh.test1 values(4);
已创建 1 行。
SQL> insert into sjh.test1 values(5);
已创建 1 行。
SQL> insert into sjh.test1 values(6);
已创建 1 行。
SQL> insert into sjh.test1 values(7);
已创建 1 行。
SQL> insert into sjh.test1 values(8);
已创建 1 行。
S QL> commit;
提交完成。
SQL> select * from sjh.test1;
已选择8行。
2.查看表的rowid信息和block id信息:
SQL> select rowid,id from sjh.test1;
已选择8行。
SQL> select EXTENT_ID,FILE_ID,RELATIVE_FNO,BLOCK_ID,BLOCKS
--8条记录都在一个块上(AAAABH)
这里简单介绍一下ROWID的知识:ROWID在磁盘上需要10个字节的存储空间并使用18个字符来显示它包含下列组件:
数据对象编号:每个数据对象如表或索引在创建时都分配有此编号,并且此编号在数据库中是唯一的;
相关文件编号:此编号对于一个表空间中的每个文件是唯一的;
块编号:表示包含此行的块在文件中的位置;
行编号:标识块头中行目录位置的位置;
在内部数据对象编号