关于Oracle数据库LOB大字段总结
副问题[/!--empirenews.page--]
在ORACLE数据库中,DBA_OBJECTS视图中OBJECT_TYPE为LOB的工具是什么对象呢?着实OBJECT_TYPE为LOB就是大工具(LOB),它指那些用来存储大量数据的数据库字段。 Oracle 11gR2 文档: http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_tables.htm#ADLOB45267 一、LOB 分类 LOB大工具首要是用来存储大量数据的数据库字段,在Oracle 9iR2 中LOB的最大容量是4G,Oracle 10g 最大8T,Oracle 11g 最大是128T。详细取决于blocksize 的巨细。 1. Oracle 支持4 种范例的LOB:
2. LOB数据范例分类 (1) 按存储数据的范例分: 字符范例:
二进制范例:
二进制文件范例:
(2) 按存储方法分:
二、Lob的存储 我们成立含有lob字段的表时,oracle会自动为lob字段成立两个单独的segment,一个用来存放数据,另一个用来存放索引,而且它们城市存储在对应表指定的表空间中。 如上例所示,每个lob字段都对应两个segment,个中存放lob数据的以SYS_LOB开头,存放索引以SYS_IL开头。 LOB 按“块”(chunk)或(piece)来存储,每个片断都可以会见。 三、Lob与其余范例的转换 通过TO_CLOB可以将CHAR,NCHAR,VARCHAR2,NVARCHAR2,NCLOB范例转换成CLOB; 通过TO_LOB可以将LONG RAW转换成BLOB,LONG转换成CLOB; 通过TO_NCLOB可以将CHAR,NCHAR,VARCHAR2,NVARCHAR2,CLOB转换成NCLOB。 四、Oracle数据库的SYS_LOB 看看你的内外是不是存在blog,clob等范例的字段,当我们所成立的表中含有lob型的数据时,oracle会为每个lob字段天生一个独立的segment用来存放数据,同时也成立了独立的index segment .oracle对它们是单独打点的。 平凡表只会新增一个或两个段工具.范例为TABLE和INDEX,数据就存放在表段中.索引就放在索引段中。可是LOB列则特殊新增了两个段工具,范例为LOBSEGMENT和LOBINDEX,LOBINDEX用于指向LOB段,找出个中的某一部门,以是存储在表中的LOB存储的是一个地点,可能说是一个指针,现实上表中的lob列中存的是一个地点段.然后在lobindex找到全部的地点段.然后在lobSegment中把全部地点段的值都读取了来。以是lobSegment就生涯了LOG列的真正的数据,以是会很是大,而且独立于原始表存在。 先看看这个对应的表的字段是否稀有据,假若有你就无法删除这个sys_lob$的工具。想镌汰空间的占用就整理汗青数据,可能从头导出导入下。 五、相干观念 关于LOB,我们可以行使dbms_metadata来得到它的完备的剧本:
1. 表空间 生涯lob数据的表空间可以差异于生涯表数据的表空间,为LOB数据单独行使一个表空间有利于备份和规复以及空间打点可是lobindex和lobsegment必需在统一个表空间中 2. IN ROW
节制LOB数据是否总与表分隔存储(存储在lobsegment中),或是偶然可以与表一同存储,而不消单独放在lobsegment中。 假如配置了ENABLE STORAGE IN ROW,而不是DISABLE STORAGE IN ROW,小LOB(最多4,000字节)就会像VARCHAR2一样存储在表自己中。只有当LOB高出了4,000字节时,才会“移出”到lobsegment中 默认举动是启用行内存储ENABLE STORAGE IN ROW,假如lob存储的数据巨细能在表自己中放下,提议回收内联存储 3. CHUNK 块(chunk)是逻辑上持续的一组数据库块(block),这也是LOB的最小分派单位。,每个LOB实例(每个行外存储的LOB值)会占用至少一个CHUNK。一个CHUNK有一个LOB值行使,每个chunk的巨细应该尽也许与现实lob数据的巨细临近,以镌汰挥霍空间; 4. PCTVERSION 节制lob的读同等性。 PCTVERSION节制着用于实现LOB数据版本化的已分派LOB空间的百分比(这些数据库块由某个时刻点的LOB所用,并处在lobsegment的HWM以下)。对付很多行使环境来说,默认配置12%就足够了,由于在许多环境下,你只是要INSERT和获取LOB(凡是不会执行LOB的更新;LOB每每会插入一次,而获取多次)。因此,不必为LOB版本化预留太多的空间(乃至可以没有)。 假如你的应用确实常常修改LOB,假设很频仍地读LOB,与此同时其它某个会话正在修改这些LOB,12%也许就太小了。假如处理赏罚LOB时碰着一个ORA-22924错误,办理方案不是增进undo表空间的巨细,也不是增进undo保存时刻(UNDO_RETENTION),假如你在行使手动undo打点,那么增进更多RBS空间也不能办理这个题目。而是应该行使以下呼吁:
增进lobsegment中为实现数据版本化所用的空间巨细。 5. CACHE (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |