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

本文介绍在Oracle数据库中如何将含有LOB字段的表及其相关数据从一个表空间迁移到另一个表空间的方法。通过具体示例展示了标准迁移命令仅能迁移非LOB字段数据的问题,并提供了包含LOB字段的完整迁移命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 文章出处:http://blog.itpub.net/post/2553/16664

大家都知道在我们建立含有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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值