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

Oracle 为什么CLOB段的大小是实际大小的两倍

ASKTOM 2020-01-14
234

问题描述

我在Oracle 19c中创建了一个带有SecureFiles CLOB的表。我有一个程序从文件系统上的文本文件填充CLOB。执行填充例程后,我查看了CLOB段的大小,它是2560 Mb。文件大小本身的总和大约是该大小的一半。

因此,似乎段大小是文件大小的两倍。我更改了CREATE TABLE命令上的RETENTION参数以使用RETENTION MIN 60,以查看这是否会减少CLOB使用的空间量。这没有效果。段大小仍然是2560 Mb。

我的问题是: 我知道Oracle文档指出,撤消的CLOB段本身存储在CLOB段中。但是为什么它是文件大小的两倍?我可以做些什么来减少存储量吗?有没有办法确定多少CLOB段空间是实际的CLOB值与撤消空间?

专家解答

它与您的保留无关,但与您的字符集有关。

如果您的数据库具有可变宽度的特征集 (UTF-8等),那么我们将在所有情况下以UCS-2 (UTF-16) 格式存储clob。

你也可以在数据库之外看到这一点:

这里我有一个标准的文本文件:

C:\>dir c:\temp\file1.txt
 Volume in drive C is OS
 Volume Serial Number is 66D0-4AB5

 Directory of c:\temp

15/01/2020  03:00 PM         1,000,000 file1.txt


我打开该文件并选择将其保存为UTF-16格式,结果文件现在是:

C:\>dir c:\temp\file1*
 Volume in drive C is OS
 Volume Serial Number is 66D0-4AB5

 Directory of c:\temp

15/01/2020  03:00 PM         1,000,000 file1.txt
15/01/2020  03:09 PM         2,000,000 file1u.txt



文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论