Oracle 12c 改变数据管理的LOB类型(oracle12clob)
Oracle 12c 改变数据管理的LOB类型
随着企业级应用程序需要处理越来越大的数据量,LOB(大型对象)类型的使用日益普遍。但是,传统的LOB类型设计带来了一系列的问题,如性能瓶颈,数据访问限制等。为了解决这些问题,Oracle 12c引入了新的LOB类型设计,从根本上改变了数据管理的方式。
先来看看传统的LOB类型的局限性:在Oracle 11g及之前的版本中,LOB类型是通过存储指向实际数据的指针来实现的。这种设计虽然可以降低空间占用,但是也带来了一系列的问题。这种设计要求应用程序在读取LOB数据时必须先获得指向实际数据的指针,因此存在访问限制。由于LOB数据的存储位置是动态分配的,因此会导致存储碎片。这些问题极大地阻碍了LOB类型的应用,特别是在数据规模巨大的情况下。为了解决这些问题,Oracle 12c提出了新的LOB类型设计。
Oracle 12c中引入了SecureFiles LOB类型和Automatic Storage Management(ASM)来实现LOB数据的存储和管理。 SecureFiles LOB类型最大的优势在于实现了LOB数据的无限制访问。利用这个新的设计,应用程序可以在没有指向实际数据的指针的情况下直接读取LOB数据。因此,原本的访问限制得到了彻底的解决。同时也避免了传统LOB类型存在的存储碎片问题。另外,通过ASM的使用,SecureFiles LOB类型还可以实现动态分配的存储空间自行释放,从而保证整个存储空间的高效利用。
除了提升性能外,Oracle 12c还提供了丰富的新增LOB类型来适应更多的场景。例如,在11g及之前版本中,LOB类型的最大长度只能是4G。但是在Oracle 12c中,加入了新的inline LOB数据类型,它可以存储比4G更大的数据并且支持更快的操作速度。同时,还新增了一种新的JSON类型,可以帮助应用程序将JSON格式的数据更加高效地存储并进行操作。
接下来,让我们看一下在具体环境中如何使用新的LOB类型。在Oracle 12c中,如果需要使用SecureFiles LOB类型,就必须将表空间的存储属性设置为“SecureFiles”。这可以通过ALTER TABLESPACE语句实现。
ALTER TABLESPACE users
ADD DATAFILE '+DATA', '+FRA' SIZE 10G
DEFAULT COMPRESS FOR OLTP SEGMENT SPACE MANAGEMENT auto
EXTENT MANAGEMENT local AUTOALLOCATE FILENAME_CONVERT ('/u01/app/oracle/oradata/old_users',
'+DATA/orcl/datafile', '/u01/app/oracle/fast_recovery_area/old_users',
'+FRA/orcl/datafile');
然后,定义表时就可以将字段类型设置为SecureFiles LOB类型。例如:
CREATE TABLE mytable (
mycolumn SECUREFILE LOB) TABLESPACE users;
至此,我们已经看到了Oracle 12c提供的新LOB类型是如何改变数据管理方式的。SecureFiles LOB类型和Automatic Storage Management将大量降低LOB类型的使用门槛,同时提升性能和可靠性。此外,新的inline LOB和JSON类型也为企业应用带来了更多的选择。这些新LOB类型的引入,是Oracle database的一个重要里程碑,将带来更加高效的数据管理和更好的应用体验。