Oracle 迁移一个带lob的表到另一个表空间(二)

参考:
http://blog.itpub.net/21374452/viewspace-2129560/

1. LOB类型
CLOB:存储大量、单字节、字符数据,存储在内部表空间
NLOB:存储定宽、多字节、字符数据,存储在内部表空间
BLOB:存储较大无结构的二进制数据,存储在内部表空间
BFILE:将二进制文件存储在数据库外部的操作系统文件中,存放文件路径。

2.我们在建立含有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 (tablespace tbs_name);

3. 查看要移动的表结构

SQL> desc busi.CUST_INFO_PHOTO;
Name Type Nullable Default Comments
---------- ------------- -------- ------- --------
PHOTO_ID           VARCHAR2(100)
PHOTO_INFO      CLOB Y
IMAGE_ENV        CLOB Y

4.将表移到另一个表空间

--先查看现在表归属哪个表空间
select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLE_NAME= '表名大写';

使用下面句将表 CUST_INFO_PHOTO 移到另一个表空间 LIU
alter table yang.CUST_INFO_PHOTO move tablespace LIU lob(PHOTO_INFO,IMAGE_ENV) store as (tablespace LIU);

5.索引不会跟着一起move,只能重新 rebuild
alter index index_name rebuild tablespace tbs_name;

--查看表的索引是否可用status
select index_name,owner,table_name,tablespace_name,status from all_indexes where owner='用户名大写' and table_name='表名大写'

--重建索引
alter index index_name rebuild tablespace tablespace_name;

6. 再查看该表及相关对像所属的表空间

 https://www.cnblogs.com/flash100/p/14459961.html

done

参考:
https://www.cnblogs.com/wrong/p/9146822.html

posted @ 2021-02-28 18:56  莫让年华付水流  阅读(762)  评论(0编辑  收藏  举报