首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle 19c不能收缩blob列

Oracle 19c不能收缩blob列
EN

Database Administration用户
提问于 2021-06-02 06:59:21
回答 1查看 2K关注 0票数 0

我从模式中删除了一堆旧数据,包括BLOB数据,然后我尝试缩小和压缩所有数据。我成功地缩小了所有表(启用行移动、收缩空间压缩、禁用行移动),除了存储在单独段上的一个BLOB列之外:

代码语言:javascript
复制
SELECT
    segment_name,
    SUM(bytes) / 1024 / 1024 / 1024 AS "GB_SIZE"
FROM
    dba_segments
WHERE
    owner = 'MY_OWNER'
GROUP BY
    segment_name
ORDER BY
    SUM(bytes) / 1024 / 1024 / 1024 DESC;

所涉部分:

代码语言:javascript
复制
SEGMENT_NAME                GB_SIZE
SYS_LOB0000072887C00005$   0,35955810546875

注意:这是一个测试DB,在prod中,这是660 GB。

当我试图缩小它时,我会得到以下错误:

代码语言:javascript
复制
ALTER TABLE my_table MODIFY LOB ( my_blob ) ( SHRINK SPACE );

Error starting at line : 1 in command -
alter table my_table modify lob (my_blob) (shrink space)
Error report -
ORA-10635: Invalid segment or tablespace type
10635. 00000 -  "Invalid segment or tablespace type"
*Cause:    Cannot shrink the segment because it is not in auto segment space
           managed tablespace or it is not a data, index or lob segment.
*Action:   Check the tablespace and segment type and reissue the statement

部分细节:

代码语言:javascript
复制
SELECT
    *
FROM
    dba_segments
WHERE
    segment_name = 'SYS_LOB0000072887C00005$';

有关详情:

  • 段型: LOBSEGMENT
  • 段子类型: SECUREFILE
  • 表空间名称: MY_DATA

表空间详细信息:

代码语言:javascript
复制
SELECT
    *
FROM
    dba_tablespaces
WHERE
    tablespace_name = 'MY_DATA';

有关详情:

  • 学位管理:当地
  • 分配类型:系统
  • 段空间管理:自动

精确的Oracle版本:

Oracle数据库19c企业版版19.0.0.0.0 -生产

据我所知,一切都是应该的,所以我不知道缺少了什么。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-06-02 08:19:21

Securefile不支持SHRINK SPACE选项。

您可以使用DBMS_REDEFINITION (大部分是联机的)或ALTER TABLE ... MOVE LOB (...) (脱机,表在移动期间被锁定)。

ORA-10635:当尝试收缩收缩[到空闲表空间]时,无效的段或表空间类型错误(医生ID 2382484.1]

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/292643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档