【问题标题】:Oracle SQL Database creating a clob with size greater than 4000Oracle SQL 数据库创建大小大于 4000 的 clob
【发布时间】:2017-06-09 14:48:13
【问题描述】:

我正在尝试更改表并添加一个新列作为 clob,但我只能将大小设置为 4,000。我使用的语法是:

ALTER TABLE table_name
add column_name CLOB(100000)

我得到的错误是:

ORA-01735: 无效的 ALTER TABLE 选项

如果我说:

ALTER TABLE table_name
add column_name CLOB

这允许我创建一个默认大小为 4,000 的列。

【问题讨论】:

  • 您不能指定 CLOB 的大小。 LOB 的限制是几个 GB(在当前版本中甚至是 TB)。
  • 问题不太可能出在 CLOB 列上,更有可能是您尝试将数据添加到列中的方式。您是如何尝试填充该列的?
  • @Boneist 通过 php 脚本,但我现在要做的只是添加一列,而不是填充它
  • @Daoud 您从哪里获得“默认大小 4000”?如果它来自 dba/all/user_tab_columns,则忽略它。我假设 LOB 列的 data_length 是指可以内联存储的最大数据量(即,不必将 CLOB 存储在表外的内存中,然后在表行中添加指向内存区域的指针)。请参阅the documentation 了解更多信息。

标签: sql database oracle clob


【解决方案1】:

它告诉你 invalid ALTER TABLE option 因为它是一个无效的选项 - 你不能指定 clob 的大小。

【讨论】:

  • 我如何超过 4,000 字节的限制,因为 varchar2 也允许 4,000
  • 您使用的是哪个版本的 oracle db?
  • 11.1,应该是oracle 11c
  • 正如 Boneist 指出的那样,它不太可能与 clob 大小有关。在 Oracle 10 及以上版本中,最大 clob 大小为 (4 GB - 1) * DB_BLOCK_SIZE(请参阅docs.oracle.com/cd/B28359_01/server.111/b28320/…),因此如果数据库中的表空间是标准块大小 (8k),则 CLOB 的最大长度为 4GB * 8000 = 32TB .
  • 你知道为什么它总是将大小设置为 4,000 字节吗?它可能是数据库管理员在某处设置的默认大小吗?
猜你喜欢
  • 2012-11-14
  • 2011-06-03
  • 2019-10-03
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多