【发布时间】:2020-07-16 13:50:56
【问题描述】:
有人能解释一下为什么 Oracle 将 ora-archive-state 列设为 varchar2 的 4000 个字符吗?在使用 Oracle 12c 的数据库内归档特性时,当列为 0 时,记录可见。当为 0 以外的任何值时,记录被隐藏。
当简单地将列设置为 1 时,额外的 3999 个字符的目的是什么?我怀疑 Oracle 只是在浪费空间。
【问题讨论】:
有人能解释一下为什么 Oracle 将 ora-archive-state 列设为 varchar2 的 4000 个字符吗?在使用 Oracle 12c 的数据库内归档特性时,当列为 0 时,记录可见。当为 0 以外的任何值时,记录被隐藏。
当简单地将列设置为 1 时,额外的 3999 个字符的目的是什么?我怀疑 Oracle 只是在浪费空间。
【问题讨论】:
因为它允许您以不同方式标记“已归档”行:您可以将 ORA_ARCHIVE_STATE 更新为不同的值,例如:to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff')
将其设置为归档日期。稍后您可以通过此列分析归档记录。
我怀疑 Oracle 只是在浪费空间。
Varchar2 不会浪费空间。它是变长字符串。即 varchar2(4000b) 并不意味着它将使用 4000 个字节,或者 varchar2(4000c) ~ chars。这只是允许的最大列长度
【讨论】: