暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle:Alter Table 将 LOB 移动到另一个表空间

原创 小小亮 2022-10-27
2782

移动 LOB 段

每当表空间拥挤时,我首先想到的就是将 INDEX 移到另一个表空间,因为在另一个地方重建索引非常灵活,副作用很小。

如果情况持续,我们会考虑将表移动到另一个表空间,但要注意,该表中的大对象(LOB)包括二进制大对象(BLOB)和字符大对象(CLOB)不会被移动,我们必须分别移动它们。

一般来说,像 BLOB 或 CLOB 这样的数据大多是冷数据。应该将它们移出基于 SSD 或 NVMe 磁盘的表空间,以便更有效地使用存储。所以我向你推荐的一个更好的做法是你应该先移动 LOB,然后移动 TABLE。

首先,我们连接到数据库。

SQL> conn system/welcome1@orcl
Connected.

1.检查当前表空间

我们应该首先检查表定义。

SQL> desc pm.print_media;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PRODUCT_ID                                NOT NULL NUMBER(6)
 AD_ID                                     NOT NULL NUMBER(6)
 AD_COMPOSITE                                       BLOB
 AD_SOURCETEXT                                      CLOB
 AD_FINALTEXT                                       CLOB
 AD_FLTEXTN                                         NCLOB
 AD_TEXTDOCS_NTAB                                   PM.TEXTDOC_TAB
 AD_PHOTO                                           BLOB
 AD_GRAPHIC                                         BINARY FILE LOB
 AD_HEADER                                          PM.ADHEADER_TYP

我们想将AD_PHOTO列(一个 BLOB 列)移动到另一个表空间。让我们检查列的当前表空间。

SQL> select tablespace_name from dba_lobs where owner = 'PM' and table_name = 'PRINT_MEDIA' and column_name = 'AD_PHOTO';

TABLESPACE_NAME
------------------------------
EXAMPLE

2.移动LOB

为了移动一个大对象,我们结合ALTER TABLE语法的move_table_clauseLOB_storage_clause 。

正常移动

SQL> alter table PM.PRINT_MEDIA move lob(AD_PHOTO) store as (tablespace USERS);

Table altered.

平行移动

我们使用某种程度的并行性 (DOP) 来移动段。

SQL> alter table PM.PRINT_MEDIA move lob(AD_PHOTO) store as (tablespace USERS) parallel 16;

Table altered.

与并行移动索引不同,将parallel_clause与 move_table_clause 一起指定会使并行性仅适用于此移动,而不适用于表。

在线移动?

在线更改表移动 lob 是不可能的,这会引发ORA-14808: table does not support ONLINE MOVE TABLE

3.检查结果

SQL> select tablespace_name from dba_lobs where owner = 'PM' and table_name = 'PRINT_MEDIA' and column_name = 'AD_PHOTO';

TABLESPACE_NAME
------------------------------
USERS

我们已经移动了 LOB。



原文标题:Alter Table Move LOB to Another Tablespace

原文作者:Ed Chen

原文链接:https://logic.edchen.org/how-oracle-move-lob-column/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论