移动一个带有lob字段的表到另外一个表空间

简介:
很多人都知道在建立含有lob字段的表时,Oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。但是当我们用alter table tb_name move tablespace tbs_name;来对表做空间迁移时只能移动非lob字段以外的数据,而如果需要同时移动lob相关字段的数据,就必需用如下的含有特殊参数据的语句来完成。
alter table tb_name move tablespace tbs_name
lob (col_lob1,col_lob2) store as(tablesapce tbs_name);
下面是一个具体的示例:
Connected to Oracle8i Enterprise Edition Release 8.1.7.0.0
Connected as scott
 
SQL> desc test_blob;
Name      Type         Nullable Default Comments
--------- ------------ -------- ------- --------
FILE_NAME VARCHAR2(25) Y                        
FILE_BIN  BLOB         Y                        
FILE_BIN2 BLOB         Y                        
 
SQL>
SQL> select t.segment_name, t.segment_type, t.tablespace_name
  2    from sys.user_segments t
  3    where t.segment_name like 'SYS_%'
  4  /
 
SEGMENT_NAME                  SEGMENT_TYPE       TABLESPACE_NAME
------------------------ - ----------------   --------------
SYS_IL0000025842C00003$$       LOBINDEX           SYSTEM
SYS_IL0000025842C00002$$       LOBINDEX           SYSTEM
SYS_LOB0000025842C00002$$      LOBSEGMENT         SYSTEM
SYS_LOB0000025842C00003$$      LOBSEGMENT         SYSTEM
 
6 rows selected
 
SQL> alter table test_blob move tablespace tools;
 
Table altered
 
SQL>
SQL> select t.segment_name, t.segment_type, t.tablespace_name
  2    from sys.user_segments t
  3    where t.segment_name like 'SYS_%'
  4  /
 
SEGMENT_NAME                       SEGMENT_TYPE       TABLESPACE_NAME
-------------------------    ----------------     --------------
SYS_IL0000025842C00003$$            LOBINDEX           SYSTEM
SYS_IL0000025842C00002$$            LOBINDEX           SYSTEM
SYS_LOB0000025842C00002$$           LOBSEGMENT         SYSTEM
SYS_LOB0000025842C00003$$           LOBSEGMENT         SYSTEM
 
6 rows selected
 
SQL> select t.segment_name, t.segment_type, t.tablespace_name
  2  from sys.user_segments t
  3  where t.segment_name like 'TEST_BLOB';
 
SEGMENT_NAME              SEGMENT_TYPE   TABLESPACE_NAME
------------------------  -------------  -----------------
TEST_BLOB                    TABLE              TOOLS
 
SQL> alter table test_blob move tablespace SYSTEM;
 
Table altered
 
SQL> ALTER TABLE test_blob MOVE
  2  TABLESPACE tools
  3  LOB (FILE_BIN,FILE_BIN2) STORE AS
  4  (TABLESPACE tools);
 
Table altered
 
SQL> select t.segment_name, t.segment_type, t.tablespace_name
  2  from sys.user_segments t
  3  where t.segment_name like 'SYS_%';
 
SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME
--------------------------- ------------------ ------------------------
SYS_IL0000025842C00003$$           LOBINDEX           TOOLS
SYS_IL0000025842C00002$$           LOBINDEX           TOOLS
SYS_LOB0000025842C00002$$          LOBSEGMENT         TOOLS
SYS_LOB0000025842C00003$$          LOBSEGMENT         TOOLS
 
6 rows selected









本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/194002,如需转载请自行联系原作者
目录
相关文章
|
存储 Oracle 关系型数据库
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库 Perl
|
存储 关系型数据库 索引
myrocks 之数据字典
--- title: MySQL · myrocks · data dictionary 分析 author: 济天 --- # data dictionary rocksdb作为mysql的一个新的存储引擎,在存储引擎层,会维护自动的元数据信息。在innodb存储引擎中,我们通过information_schema下的INNODB_SYS_DATAFILES,INNODB_SY
2972 0
|
SQL Oracle 关系型数据库
如何正确的删除表空间数据文件
如何正确的删除表空间数据文件 应该使用如下的命令删除: ALTER TABLESPACE TEST DROP DATAFILE 3;   参考mos文章: Unable to...
2250 0
|
关系型数据库 Oracle
LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间
LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间    把LOB字段的SEGMENT 存放在指定表空间、清理CLOB字段及压缩CLOB空间 1、创建LOB字段存放表空间:create tablespace lob_test datafile '/oracle/data/lob_test.
3077 0