Oracle 10g:CLOB数据长度可以小于4,000吗?
|
我们有三个数据库:dev,staging和production。我们在开发环境中进行所有编码。然后,我们将所有代码和数据库更改推送到暂存,以便客户端可以看到其在实时环境中的工作方式。他们签署后,我们将最终部署到生产环境。
现在,关于以下CLOB列:使用desc和/或在dev_all的all_tab_columns视图中查询时,CLOB的数据长度为4,000。但是,在登台和生产数据库中,等效于dev的CLOB列的数据长度是奇数,例如86。我一直在寻找所有可能的解决方案,以了解这是如何实现的。我什至尝试添加一个新的CLOB(86)列,认为它可以像对VARCHAR2一样工作,但是Oracle只是吐出了一个错误。
DBA会破坏一些东西吗?这甚至有什么可担心的吗?因此,似乎一切都没有中断,但我只是希望元数据在所有环境中都相同。
没有找到相关结果
已邀请:
4 个回复
泻伴墓荒
您在哪里发现血块长度不能小于4000?
纤洞需匪
编辑,在* _LOBS视图上添加信息 使用[DBA | ALL | USER] _LOBS视图查看行中定义的行存储设置:
编辑2,一些参考 有关定义LOB存储的更多信息,请参见《 Oracle数据库应用程序开发人员指南-大型对象》中的LOB存储,尤其是关于可更改内容的第三个注释: 注意: 仅某些存储参数可以修改。例如你 可以使用
语句更改
,
,
或
或
和
条款。 您还可以使用ALTER TABLE更改TABLESPACE ... MOVE语句。 但是,一旦创建了表,就无法更改CHUNK 大小或“启用或禁用行中存储”设置。 同样,索引组织表中的LOB表示: 默认情况下,创建的索引组织表中没有溢出段的所有LOB将不在线存储。换句话说,如果创建的索引组织表没有溢出段,则该表中的LOB的默认存储属性为DISABLE STORAGE IN ROW。如果您强行尝试为此类LOB指定ENABLE STORAGE IN ROW子句,则SQL将引发错误。 这解释了为什么jonearles在索引组织表中创建LOB时在data_length列中看不到4,000的原因。
挂帘妈乡
您会注意到data_length始终为4000,但这应该忽略。 CLOB的最小大小为零(0),最大为8 TB至128 TB,具体取决于数据库块大小。
诫商
在10.2.0.1.0上,结果为116。 在11.2.0.1.0上,结果为476。 这些数字对我来说没有任何意义,我想这是一个错误。但是我对不同的存储选项没有很好的了解,也许我只是缺少了一些东西。 有人知道这里到底发生了什么吗?