您的位置:首页 > 其它

如何从BasicFile迁移到SecureFile存储

2016-04-19 11:20 274 查看
 Oracle 11g新的SecureFile存储特性扩展了大对象(LOB)的灵活性和容量,本文研究如何有效地从BasicFile迁移到SecureFile存储,如何测量SecureFile vs BasicFile LOB的效率,以及如何为SecureFile LOB使用不同的压缩和重复数据删除选项。

  我创建了一个新表TRBTKT.SECURE_TICKETS重新定义了原始表TRBTKT.TICKETS的结构,将原始的BasicFile LOB映射到对应的SecureFile LOB,然后执行了一条INSERT INTO … SELECT FROM DML语句将原始表中的内容传输到新表中。

  在一个相对简单的应用程序环境中,这种载入方式足以应付,但目前在数据仓库和商业智能应用程序中广泛地使用了LOB,特别是存储那些包含了复杂商务交易的XML文档和医院信息系统捕获到的医疗影像数据。

  为了便于说明,我使用清单1中的代码重新创建了这两个表,我使用了列表分区对这两个表进行了分区,在清单2中,我使用更大的数据重新载入TRBTKT.TICKETS表。

  清单1 使用列表分区重新创建这两个表以模拟数据仓库环境

-- 重新创建表TRBTKT.TICKETS,这次包括了一个STATUS列

CREATE TABLE trbtkt.tickets (

tkt_id NUMBER

,description VARCHAR2(30)

,submit_dtm TIMESTAMP

,status VARCHAR2(8)

,document BLOB

,scrnimg BLOB

)

LOB(document)

STORE AS BASICFILE (TABLESPACE basicfiles)

,LOB(scrnimg)

STORE AS BASICFILE (TABLESPACE basicfiles)

PARTITION BY LIST (status) (

PARTITION sts_open

VALUES ('OPEN')

,PARTITION sts_pending

VALUES ('PENDING')

,PARTITION sts_closed

VALUES ('CLOSED')

,PARTITION sts_other

VALUES (DEFAULT)

)

;

--注释

COMMENT ON TABLE trbtkt.tickets

IS 'Contains Trouble Ticket transaction data';

COMMENT ON COLUMN trbtkt.tickets.tkt_id

IS 'Unique identifier for a Trouble Ticket';

COMMENT ON COLUMN trbtkt.tickets.description

IS 'Trouble Ticket Description';

COMMENT ON COLUMN trbtkt.tickets.submit_dtm

IS 'Trouble Ticket Submission Time Stamp';

COMMENT ON COLUMN trbtkt.tickets.status

IS 'Trouble Ticket Status';

COMMENT ON COLUMN trbtkt.tickets.document

IS 'Large Object (LOB) that contains a Microsoft Word document that provides detailed information
about a Trouble Ticket';

COMMENT ON COLUMN trbtkt.tickets.scrnimg

IS 'Large Object (LOB) that contains a screen print or other image that helps a problem solver
identify how to act on a Trouble Ticket';

-- 创建索引和约束

CREATE UNIQUE INDEX trbtkt.tickets_pk_idx

ON trbtkt.tickets(tkt_id)

TABLESPACE users;

ALTER TABLE trbtkt.tickets

ADD CONSTRAINT tickets_pk

PRIMARY KEY (tkt_id);

-----

-- 创建表TRBTKT.SECURE_TICKETS的一个改良版本,使用分区划分SecureFile LOB的存储,基于STATUS 的值设置合适的保留周期

DROP TABLE trbtkt.secure_tickets PURGE;

CREATE TABLE trbtkt.secure_tickets (

tkt_id NUMBER

,description VARCHAR2(30)

,submit_dtm TIMESTAMP

,status VARCHAR2(8)

,document BLOB

,scrnimg BLOB

)

LOB(document)

STORE AS SECUREFILE (

TABLESPACE securefiles

DISABLE STORAGE IN ROW

CACHE

)

,LOB(scrnimg)

STORE AS SECUREFILE (

TABLESPACE securefiles

DISABLE STORAGE IN ROW

CACHE READS

)

PARTITION BY LIST (status) (

PARTITION sts_open

VALUES ('OPEN')

LOB (document) STORE AS SECUREFILE (KEEP_DUPLICATES NOCOMPRESS)

,LOB (scrnimg) STORE AS SECUREFILE (KEEP_DUPLICATES COMPRESS)

,PARTITION sts_pending

VALUES ('PENDING')

LOB (document) STORE AS SECUREFILE (KEEP_DUPLICATES NOCOMPRESS)

,LOB (scrnimg) STORE AS SECUREFILE (DEDUPLICATE COMPRESS)

,PARTITION sts_closed

VALUES ('CLOSED')

LOB (document) STORE AS SECUREFILE (DEDUPLICATE COMPRESS)

,LOB (scrnimg) STORE AS SECUREFILE (DEDUPLICATE COMPRESS HIGH)

,PARTITION sts_other

VALUES (DEFAULT)

LOB (document) STORE AS SECUREFILE (DEDUPLICATE COMPRESS HIGH)

,LOB (scrnimg) STORE AS SECUREFILE (DEDUPLICATE COMPRESS HIGH)

)

;

--注释

COMMENT ON TABLE trbtkt.secure_tickets

IS 'Contains Trouble Ticket transaction data';

COMMENT ON COLUMN trbtkt.secure_tickets.tkt_id

IS 'Unique identifier for a Trouble Ticket';

COMMENT ON COLUMN trbtkt.secure_tickets.description

IS 'Trouble Ticket Description';

COMMENT ON COLUMN trbtkt.secure_tickets.submit_dtm

IS 'Trouble Ticket Submission Time Stamp';

COMMENT ON COLUMN trbtkt.secure_tickets.status

IS 'Trouble Ticket Status';

COMMENT ON COLUMN trbtkt.secure_tickets.document

IS 'Large Object (LOB) that contains a Microsoft Word document that provides detailed information
about a Trouble Ticket';

COMMENT ON COLUMN trbtkt.secure_tickets.scrnimg

IS 'Large Object (LOB) that contains a screen print or other image that helps a problem solver
identify how to act on a Trouble Ticket';

   清单2 使用附加数据重新载入表TRBTKT.TICKETS

SET SERVEROUTPUT ON

TRUNCATE TABLE trbtkt.tickets;

BEGIN

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 101

,description => 'Trouble Ticket 101'

,submit_dts => '2008-12-31 23:45:00'

,status => 'OPEN'

,docFileName => 'New_101.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 102

,description => 'Trouble Ticket 102'

,submit_dts => '2009-01-04 00:00:00'

,status => 'OPEN'

,docFileName => 'New_102.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 103

,description => 'Trouble Ticket 103'

,submit_dts => '2009-01-02 00:00:00'

,status => 'OPEN'

,docFileName => 'New_103.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 104

,description => 'Trouble Ticket 104'

,submit_dts => '2009-01-14 12:30:00'

,status => 'OPEN'

,docFileName => 'New_104.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 105

,description => 'Trouble Ticket 105'

,submit_dts => '2009-01-09 00:00:00'

,status => 'OPEN'

,docFileName => 'New_105.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 106

,description => 'Trouble Ticket 106'

,submit_dts => '2009-01-11 00:00:00'

,status => 'OPEN'

,docFileName => 'New_106.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 107

,description => 'Trouble Ticket 107'

,submit_dts => '2009-01-16 00:00:00'

,status => 'OPEN'

,docFileName => 'New_107.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 108

,description => 'Trouble Ticket 108'

,submit_dts => '2009-01-12 00:00:00'

,status => 'OPEN'

,docFileName => 'New_108.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 109

,description => 'Trouble Ticket 109'

,submit_dts => '2009-01-02 00:00:00'

,status => 'OPEN'

,docFileName => 'New_109.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 110

,description => 'Trouble Ticket 110'

,submit_dts => '2009-01-14 12:45:00'

,status => 'OPEN'

,docFileName => 'New_110.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 201

,description => 'Trouble Ticket 201'

,submit_dts => '2008-12-31 23:45:00'

,status => 'PENDING'

,docFileName => 'New_101.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 202

,description => 'Trouble Ticket 202'

,submit_dts => '2009-01-04 00:00:00'

,status => 'OPEN'

,docFileName => 'New_102.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 203

,description => 'Trouble Ticket 203'

,submit_dts => '2009-01-02 00:00:00'

,status => 'CLOSED'

,docFileName => 'New_103.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 204

,description => 'Trouble Ticket 204'

,submit_dts => '2009-01-14 12:30:00'

,status => 'OPEN'

,docFileName => 'New_104.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 205

,description => 'Trouble Ticket 205'

,submit_dts => '2009-01-09 00:00:00'

,status => 'OPEN'

,docFileName => 'New_105.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 206

,description => 'Trouble Ticket 206'

,submit_dts => '2009-01-11 00:00:00'

,status => 'PENDING'

,docFileName => 'New_106.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 207

,description => 'Trouble Ticket 207'

,submit_dts => '2009-01-16 00:00:00'

,status => 'OPEN'

,docFileName => 'New_107.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 208

,description => 'Trouble Ticket 208'

,submit_dts => '2009-01-12 00:00:00'

,status => 'OPEN'

,docFileName => 'New_108.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 209

,description => 'Trouble Ticket 209'

,submit_dts => '2009-01-02 00:00:00'

,status => 'PENDING'

,docFileName => 'New_109.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 210

,description => 'Trouble Ticket 210'

,submit_dts => '2009-01-14 12:45:00'

,status => 'OPEN'

,docFileName => 'New_110.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 301

,description => 'Trouble Ticket 301'

,submit_dts => '2008-12-31 23:45:00'

,status => 'CLOSED'

,docFileName => 'New_101.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 302

,description => 'Trouble Ticket 302'

,submit_dts => '2009-01-04 00:00:00'

,status => 'OPEN'

,docFileName => 'New_102.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 303

,description => 'Trouble Ticket 303'

,submit_dts => '2009-01-02 00:00:00'

,status => 'OPEN'

,docFileName => 'New_103.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 304

,description => 'Trouble Ticket 304'

,submit_dts => '2009-01-14 12:30:00'

,status => 'CLOSED'

,docFileName => 'New_104.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 305

,description => 'Trouble Ticket 305'

,submit_dts => '2009-01-09 00:00:00'

,status => 'PENDING'

,docFileName => 'New_105.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 306

,description => 'Trouble Ticket 306'

,submit_dts => '2009-01-11 00:00:00'

,status => 'CLOSED'

,docFileName => 'New_106.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 307

,description => 'Trouble Ticket 307'

,submit_dts => '2009-01-16 00:00:00'

,status => 'OPEN'

,docFileName => 'New_107.doc'

,imgFileName => 'DBRIssues.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 308

,description => 'Trouble Ticket 308'

,submit_dts => '2009-01-12 00:00:00'

,status => 'OPEN'

,docFileName => 'New_108.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 309

,description => 'Trouble Ticket 309'

,submit_dts => '2009-01-02 00:00:00'

,status => 'CLOSED'

,docFileName => 'New_109.doc'

,imgFileName => 'Unresolved.jpg'

);

trbtkt.pkg_securefiles.AddTroubleTicket (

tkt_id => 310

,description => 'Trouble Ticket 310'

,submit_dts => '2009-01-14 12:45:00'

,status => 'CLOSED'

,docFileName => 'New_110.doc'

,imgFileName => 'DBRIssues.jpg'

);

COMMIT;

END;

/

-- 收集优化器统计信息

BEGIN

DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'TRBTKT', CASCADE => TRUE);

END;

/

有效地从BasicFile移植到SecureFile

  现在已经将这些表进行了分区,以便在数据仓库环境更有效地使用,我也已经考虑过如何将LOB从BasicFile格式快速有效地转换成对应的SecureFile格式,幸运的是,Oracle 11g提供了两个方法:分区交换和在线重定义。

  1、分区交换

  分区交换载入(Partition Exchange Load,即PDL)有时也叫做分区转动,包含创建一个非分区表,它的格式和内容完全匹配目标分区表想要的分区,一旦原始表创建好了,就可以开始可已经分区的表的目标分区进行交换了,这个方法确实提供了许多好处,换句话说,原始表的本地索引在交换期间得到维护,它可以并行执行,这个方法可以重复多次以填充每个分区,它的主要缺点是接收数据的分区在进行交换时必须离线。

  2、在线重定义

  Oracle推荐使用DBMS_REDEFINITION包对源表和目标表执行在线重定义,因为它实现了分区交换方法相同的目标。但它不需要在重定义过程中将目标离线。在线重定义可以在表级也可以在分区级执行,它也可以同时并行为多个分区执行,我喜欢在线重定义的特性是在这个过程成功执行完毕后,源和目标对象将对真正地在数据库数据目录中转换定义,这意味着任何引用了新对象名的PL/SQL对象都不需要进行任何修改。清单3显示了如何使用TRBTKT.TICKETS表作为源对象,使用TRBTKT.SECURE_TICKETS表作为目标对象进行在线重定义的。从BasicFile
LOB转换到SecureFile LOB最后一个注意事项是:一旦转换完成,LOB就不能再降级回到BasicFile LOB了。

  管理SecureFile元数据

  这些新的SecureFile特性无疑扩展了LOB的能力,对于DBA而言,也需要注意几个在传统的BasicFile LOB上增加的额外属性,幸运的是,Oracle 11g提供了多个方法跟踪BasicFile和SecureFile LOB的元数据。

  1、数据字典视图

  Oracle 11g也更新了多个关于SecureFile信息的数据字典视图,下面列出这些做了变动的视图。



  清单4显示了多条SQL*Plus查询,它们使用了这些数据字典视图返回关于SecureFile元数据的信息,报告1显示了从这些查询返回的结果。

  清单4 查询BasicFile和SecureFile LOB的元数据

SET PAGESIZE 1000

SET LINESIZE 140

-- 视图: DBA_SEGMENTS

--显示关于BasicFile 和SecureFile 段的元数据

TTITLE 'LOB Segment Information|(from DBA_SEGMENTS)'

COL segment_name FORMAT A30 HEADING 'Segment Name'

COL segment_type FORMAT A20 HEADING 'Segment|Type'

COL segment_subtype FORMAT A20 HEADING 'Segment|SubType'

COL partition_name FORMAT A12 HEADING 'Partition|Name'

COL tablespace_name FORMAT A12 HEADING 'Tablespace'

SELECT

segment_name

,segment_type

,segment_subtype

,partition_name

,tablespace_name

FROM dba_segments

WHERE owner = 'TRBTKT'

ORDER BY segment_name

;

TTITLE OFF

-- 视图: DBA_LOBS

--显示关于BasicFile和SecureFile LOB的元数据

TTITLE 'BasicFile and SecureFile LOBs Metadata|(from DBA_LOBS)'

COL table_name FORMAT A14 HEADING 'Table'

COL segment_name FORMAT A26 HEADING 'Segment'

COL column_name FORMAT A10 HEADING 'Column'

COL tablespace_name FORMAT A12 HEADING 'Tablespace'

COL logging FORMAT A08 HEADING 'Logging'

COL cache FORMAT A10 HEADING 'Cacheing'

COL in_row FORMAT A07 HEADING 'Stored|In Row'

COL encrypt FORMAT A07 HEADING 'Encryp-|tion'

COL compression FORMAT A07 HEADING 'Compre-|ssion'

COL deduplication FORMAT A08 HEADING 'DeDupli-|cation'

COL securefile FORMAT A07 HEADING 'Secure|File?'

COL partitioned FORMAT A07 HEADING 'Parti-|tioned'

SELECT

table_name

,column_name

,segment_name

,tablespace_name

,logging

,cache

,in_row

,encrypt

,compression

,deduplication

,securefile

,partitioned

FROM dba_lobs

WHERE owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

--视图: DBA_PART_LOBS

--显示BasicFile和SecureFile LOB的默认值

TTITLE 'BasicFile and SecureFile Partitioned LOB Default Settings|(from DBA_PART_LOBS)'

COL table_name FORMAT A20 HEADING 'Table'

COL column_name FORMAT A12 HEADING 'Column'

COL def_cache FORMAT A12 HEADING 'Cached'

COL def_tablespace_name FORMAT A12 HEADING 'Tablespace'

COL def_securefile FORMAT A12 HEADING 'SecureFile'

COL def_encrypt FORMAT A12 HEADING 'Encrypted'

COL def_compress FORMAT A12 HEADING 'Compressed'

COL def_deduplicate FORMAT A12 HEADING 'DeDuplicated'

SELECT

table_name

,column_name

,def_cache

,def_tablespace_name

,def_securefile

,def_compress

,def_deduplicate

,def_encrypt

FROM dba_part_lobs

WHERE table_owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

--视图: DBA_LOB_PARTITIONS

--在独立的LOB级描述BasicFile和SecureFile设置

TTITLE 'BasicFile and SecureFile LOB Partitions|(from DBA_LOB_PARTITIONS)'

COL table_name FORMAT A16 HEADING 'Table'

COL column_name FORMAT A12 HEADING 'Column'

COL partition_name FORMAT A12 HEADING 'Stored in|Partition'

COL cache FORMAT A10 HEADING 'Cacheing'

COL in_row FORMAT A10 HEADING 'Stored|In Row'

COL encrypt FORMAT A10 HEADING 'Encrypted'

COL compression FORMAT A10 HEADING 'Compressed'

COL deduplication FORMAT A10 HEADING 'DeDupli-|cated'

COL securefile FORMAT A10 HEADING 'SecureFile?'

SELECT

table_name

,column_name

,partition_name

,cache

,in_row

,encrypt

,compression

,deduplication

,securefile

FROM dba_lob_partitions

WHERE table_owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

报告1 从BasicFIle和SecureFile LOB元数据报告返回的结果

SET PAGESIZE 1000

SET LINESIZE 140

-- 视图: DBA_SEGMENTS

--显示关于BasicFile 和SecureFile 段的元数据

TTITLE 'LOB Segment Information|(from DBA_SEGMENTS)'

COL segment_name FORMAT A30 HEADING 'Segment Name'

COL segment_type FORMAT A20 HEADING 'Segment|Type'

COL segment_subtype FORMAT A20 HEADING 'Segment|SubType'

COL partition_name FORMAT A12 HEADING 'Partition|Name'

COL tablespace_name FORMAT A12 HEADING 'Tablespace'

SELECT

segment_name

,segment_type

,segment_subtype

,partition_name

,tablespace_name

FROM dba_segments

WHERE owner = 'TRBTKT'

ORDER BY segment_name

;

TTITLE OFF

-- 视图: DBA_LOBS

--显示关于BasicFile和SecureFile LOB的元数据

TTITLE 'BasicFile and SecureFile LOBs Metadata|(from DBA_LOBS)'

COL table_name FORMAT A14 HEADING 'Table'

COL segment_name FORMAT A26 HEADING 'Segment'

COL column_name FORMAT A10 HEADING 'Column'

COL tablespace_name FORMAT A12 HEADING 'Tablespace'

COL logging FORMAT A08 HEADING 'Logging'

COL cache FORMAT A10 HEADING 'Cacheing'

COL in_row FORMAT A07 HEADING 'Stored|In Row'

COL encrypt FORMAT A07 HEADING 'Encryp-|tion'

COL compression FORMAT A07 HEADING 'Compre-|ssion'

COL deduplication FORMAT A08 HEADING 'DeDupli-|cation'

COL securefile FORMAT A07 HEADING 'Secure|File?'

COL partitioned FORMAT A07 HEADING 'Parti-|tioned'

SELECT

table_name

,column_name

,segment_name

,tablespace_name

,logging

,cache

,in_row

,encrypt

,compression

,deduplication

,securefile

,partitioned

FROM dba_lobs

WHERE owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

--视图: DBA_PART_LOBS

--显示BasicFile和SecureFile LOB的默认值

TTITLE 'BasicFile and SecureFile Partitioned LOB Default Settings|(from DBA_PART_LOBS)'

COL table_name FORMAT A20 HEADING 'Table'

COL column_name FORMAT A12 HEADING 'Column'

COL def_cache FORMAT A12 HEADING 'Cached'

COL def_tablespace_name FORMAT A12 HEADING 'Tablespace'

COL def_securefile FORMAT A12 HEADING 'SecureFile'

COL def_encrypt FORMAT A12 HEADING 'Encrypted'

COL def_compress FORMAT A12 HEADING 'Compressed'

COL def_deduplicate FORMAT A12 HEADING 'DeDuplicated'

SELECT

table_name

,column_name

,def_cache

,def_tablespace_name

,def_securefile

,def_compress

,def_deduplicate

,def_encrypt

FROM dba_part_lobs

WHERE table_owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

--视图: DBA_LOB_PARTITIONS

--在独立的LOB级描述BasicFile和SecureFile设置

TTITLE 'BasicFile and SecureFile LOB Partitions|(from DBA_LOB_PARTITIONS)'

COL table_name FORMAT A16 HEADING 'Table'

COL column_name FORMAT A12 HEADING 'Column'

COL partition_name FORMAT A12 HEADING 'Stored in|Partition'

COL cache FORMAT A10 HEADING 'Cacheing'

COL in_row FORMAT A10 HEADING 'Stored|In Row'

COL encrypt FORMAT A10 HEADING 'Encrypted'

COL compression FORMAT A10 HEADING 'Compressed'

COL deduplication FORMAT A10 HEADING 'DeDupli-|cated'

COL securefile FORMAT A10 HEADING 'SecureFile?'

SELECT

table_name

,column_name

,partition_name

,cache

,in_row

,encrypt

,compression

,deduplication

,securefile

FROM dba_lob_partitions

WHERE table_owner = 'TRBTKT'

ORDER BY table_name, column_name

;

TTITLE OFF

报告1 从BasicFIle和SecureFile LOB元数据报告返回的结果

LOB段信息

(来自DBA_SEGMENTS)

Segment Segment Partition

Segment Name Type SubType Name Tablespace

------------------------- -------------------- -------------------- ------------ ------------

SECURE_TICKETS TABLE PARTITION ASSM STS_PENDING USERS

SECURE_TICKETS TABLE PARTITION ASSM STS_CLOSED USERS

SECURE_TICKETS TABLE PARTITION ASSM STS_OPEN USERS

SECURE_TICKETS TABLE PARTITION ASSM STS_OTHER USERS

SYS_IL0000072118C00005$$ INDEX PARTITION ASSM SYS_IL_P180 BASICFILES

SYS_IL0000072118C00005$$ INDEX PARTITION ASSM SYS_IL_P179 BASICFILES

SYS_IL0000072118C00005$$ INDEX PARTITION ASSM SYS_IL_P178 BASICFILES

SYS_IL0000072118C00005$$ INDEX PARTITION ASSM SYS_IL_P177 BASICFILES

SYS_IL0000072118C00006$$ INDEX PARTITION ASSM SYS_IL_P185 BASICFILES

SYS_IL0000072118C00006$$ INDEX PARTITION ASSM SYS_IL_P188 BASICFILES

SYS_IL0000072118C00006$$ INDEX PARTITION ASSM SYS_IL_P187 BASICFILES

SYS_IL0000072118C00006$$ INDEX PARTITION ASSM SYS_IL_P186 BASICFILES

SYS_IL0000072144C00005$$ INDEX PARTITION ASSM SYS_IL_P194 SECUREFILES

SYS_IL0000072144C00005$$ INDEX PARTITION ASSM SYS_IL_P193 SECUREFILES

SYS_IL0000072144C00005$$ INDEX PARTITION ASSM SYS_IL_P195 SECUREFILES

SYS_IL0000072144C00005$$ INDEX PARTITION ASSM SYS_IL_P196 SECUREFILES

SYS_IL0000072144C00006$$ INDEX PARTITION ASSM SYS_IL_P204 SECUREFILES

SYS_IL0000072144C00006$$ INDEX PARTITION ASSM SYS_IL_P203 SECUREFILES

SYS_IL0000072144C00006$$ INDEX PARTITION ASSM SYS_IL_P202 SECUREFILES

SYS_IL0000072144C00006$$ INDEX PARTITION ASSM SYS_IL_P201 SECUREFILES

SYS_LOB0000072118C00005$$ LOB PARTITION ASSM SYS_LOB_P173 BASICFILES

SYS_LOB0000072118C00005$$ LOB PARTITION ASSM SYS_LOB_P176 BASICFILES

SYS_LOB0000072118C00005$$ LOB PARTITION ASSM SYS_LOB_P175 BASICFILES

SYS_LOB0000072118C00005$$ LOB PARTITION ASSM SYS_LOB_P174 BASICFILES

SYS_LOB0000072118C00006$$ LOB PARTITION ASSM SYS_LOB_P184 BASICFILES

SYS_LOB0000072118C00006$$ LOB PARTITION ASSM SYS_LOB_P183 BASICFILES

SYS_LOB0000072118C00006$$ LOB PARTITION ASSM SYS_LOB_P181 BASICFILES

SYS_LOB0000072118C00006$$ LOB PARTITION ASSM SYS_LOB_P182 BASICFILES

SYS_LOB0000072144C00005$$ LOB PARTITION SECUREFILE SYS_LOB_P191 SECUREFILES

SYS_LOB0000072144C00005$$ LOB PARTITION SECUREFILE SYS_LOB_P192 SECUREFILES

SYS_LOB0000072144C00005$$ LOB PARTITION SECUREFILE SYS_LOB_P189 SECUREFILES

SYS_LOB0000072144C00005$$ LOB PARTITION SECUREFILE SYS_LOB_P190 SECUREFILES

SYS_LOB0000072144C00006$$ LOB PARTITION SECUREFILE SYS_LOB_P198 SECUREFILES

SYS_LOB0000072144C00006$$ LOB PARTITION SECUREFILE SYS_LOB_P199 SECUREFILES

SYS_LOB0000072144C00006$$ LOB PARTITION SECUREFILE SYS_LOB_P197 SECUREFILES

SYS_LOB0000072144C00006$$ LOB PARTITION SECUREFILE SYS_LOB_P200 SECUREFILES

TICKETS TABLE PARTITION ASSM STS_PENDING USERS

TICKETS TABLE PARTITION ASSM STS_OTHER USERS

TICKETS TABLE PARTITION ASSM STS_OPEN USERS

TICKETS TABLE PARTITION ASSM STS_CLOSED USERS

TICKETS_PK_IDX INDEX ASSM USERS

BasicFile和SecureFile LOB元数据

(来自DBA_LOBS)

Stored Encryp- Compre- DeDupli- Secure Parti-

Table Column Segment Tablespace Logging Cacheing In Row tion ssion
cation File? tioned

-------------- ---------- -------------------------- ------------ -------- ---------- ------- ------- ------- -------- ------- -------

SECURE_TICKETS DOCUMENT SYS_LOB0000072118C00005$$ BASICFILES NONE NO YES NONE NONE NONE NO YES

SECURE_TICKETS SCRNIMG SYS_LOB0000072118C00006$$ BASICFILES NONE NO YES NONE NONE NONE NO YES

TICKETS DOCUMENT SYS_LOB0000072144C00005$$ SECUREFILES NONE YES NO NO NO NO YES YES

TICKETS SCRNIMG SYS_LOB0000072144C00006$$ SECUREFILES NONE CACHEREADS NO NO NO NO YES YES

BasicFile和SecureFile分区LOB默认设置

(来自DBA_PART_LOBS)

Table Column Cached Tablespace SecureFile Compressed DeDuplicated Encrypted

----- ------------ ------------ ------------ ------------ ------------ ------------ ------------

SECURE_TICKETS DOCUMENT NO BASICFILES NO NONE NONE NONE

SECURE_TICKETS SCRNIMG NO BASICFILES NO NONE NONE NONE

TICKETS DOCUMENT YES SECUREFILES YES NO NO NO

TICKETS SCRNIMG CACHEREADS SECUREFILES YES NO NO NO

BasicFile和SecureFile LOB分区

(来自DBA_LOB_PARTITIONS)

Stored in Stored DeDupli-

Table Column Partition Cacheing In Row
Encrypted Compressed cated SecureFile

---- ------------ ------------ ---------- ---------- ---------- ---------- ---------- ----------

SECURE_TICKETS DOCUMENT STS_OTHER NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_CLOSED NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_OPEN NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_PENDING NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_OTHER NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_CLOSED NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_PENDING NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_OPEN NO YES NONE NONE NONE NO

TICKETS DOCUMENT STS_OTHER YES NO NO HIGH LOB YES

TICKETS DOCUMENT STS_PENDING YES NO NO NO NO YES

TICKETS DOCUMENT STS_CLOSED YES NO NO MEDIUM LOB YES

TICKETS DOCUMENT STS_OPEN YES NO NO NO NO YES

TICKETS SCRNIMG STS_PENDING CACHEREADS NO NO MEDIUM LOB YES

TICKETS SCRNIMG STS_OPEN CACHEREADS NO NO MEDIUM NO YES

TICKETS SCRNIMG STS_CLOSED CACHEREADS NO NO HIGH LOB YES

TICKETS SCRNIMG STS_OTHER CACHEREADS NO NO HIGH LOB YES

 2、DBMS_SPACE

  这是另一个Oracle古老支持包,它的SPACE_USAGE存储过程提供关于BasicFile和SecureFile LOB的空间利用率,我在TRBTKT.PKG_SECUREFILES包中引入了两个存储过程:CALC_SPACE_BASICFILES和CALC_SPACE_SECUREFILES。但遗憾的是,这个功能只能在启用了自动段空间管理(ASSM)的表空间上使用,而且,它也不会考虑任何BasicFile LOB块的空间利用率,在清单5中,我对表TRBTKT.TICKETS和TRBTKT.SECURE_TICKETS分别调用了这些存储过程,并返回了相应的输出。

  清单5 确定BasicFile和SecureFile LOB的空间利用率

SET SERVEROUTPUT ON

-- BasicFile存储利用率:

BEGIN

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_OPEN'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_PENDING'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_CLOSED'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_OTHER'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_OPEN'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_PENDING'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_CLOSED'

);

trbtkt.pkg_securefiles.calc_space_basicfiles (

ownname => 'TRBTKT'

,tabname => 'SECURE_TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_OTHER'

);

END;

/

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.DOCUMENT

Partition Name: STS_OPEN

------------------------------------------------------------

Full Blocks: 123 KB: .96

Unformatted Blocks: 379 KB: 2.96

Total Blocks: 123 Total KB: .96

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.DOCUMENT

Partition Name: STS_PENDING

------------------------------------------------------------

Full Blocks: 20 KB: .16

Unformatted Blocks: 482 KB: 3.77

Total Blocks: 20 Total KB: .16

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.DOCUMENT

Partition Name: STS_CLOSED

------------------------------------------------------------

Full Blocks: 37 KB: .29

Unformatted Blocks: 465 KB: 3.63

Total Blocks: 37 Total KB: .29

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.DOCUMENT

Partition Name: STS_OTHER

------------------------------------------------------------

Full Blocks: 0 KB: 0

Unformatted Blocks: 0 KB: 0

Total Blocks: 0 Total KB: 0

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.SCRNIMG

Partition Name: STS_OPEN

------------------------------------------------------------

Full Blocks: 420 KB: 3.28

Unformatted Blocks: 82 KB: .64

Total Blocks: 420 Total KB: 3.28

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.SCRNIMG

Partition Name: STS_PENDING

------------------------------------------------------------

Full Blocks: 66 KB: .52

Unformatted Blocks: 436 KB: 3.41

Total Blocks: 66 Total KB: .52

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.SCRNIMG

Partition Name: STS_CLOSED

------------------------------------------------------------

Full Blocks: 144 KB: 1.13

Unformatted Blocks: 358 KB: 2.8

Total Blocks: 144 Total KB: 1.13

============================================================

============================================================

Space Usage for BasicFile LOB TRBTKT.SECURE_TICKETS.SCRNIMG

Partition Name: STS_OTHER

------------------------------------------------------------

Full Blocks: 0 KB: 0

Unformatted Blocks: 0 KB: 0

Total Blocks: 0 Total KB: 0

============================================================

-- SecureFile存储利用率:

BEGIN

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_OPEN'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_PENDING'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_CLOSED'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'DOCUMENT'

,partname => 'STS_OTHER'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_OPEN'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_PENDING'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_CLOSED'

);

trbtkt.pkg_securefiles.calc_space_securefiles (

ownname => 'TRBTKT'

,tabname => 'TICKETS'

,colname => 'SCRNIMG'

,partname => 'STS_OTHER'

);

END;

/

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.DOCUMENT

Partition Name: STS_OPEN

------------------------------------------------------------

Segment Blocks: 1024 KB: 8192

Used Blocks: 124 KB: 992

Expired Blocks: 882 KB: 7056

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.DOCUMENT

Partition Name: STS_PENDING

------------------------------------------------------------

Segment Blocks: 1024 KB: 8192

Used Blocks: 21 KB: 168

Expired Blocks: 985 KB: 7880

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.DOCUMENT

Partition Name: STS_CLOSED

------------------------------------------------------------

Segment Blocks: 1024 KB: 8192

Used Blocks: 13 KB: 104

Expired Blocks: 993 KB: 7944

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.DOCUMENT

Partition Name: STS_OTHER

------------------------------------------------------------

Segment Blocks: 512 KB: 4096

Used Blocks: 501 KB: 4008

Expired Blocks: 0 KB: 0

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.SCRNIMG

Partition Name: STS_OPEN

------------------------------------------------------------

Segment Blocks: 2560 KB: 20480

Used Blocks: 405 KB: 3240

Expired Blocks: 2134 KB: 17072

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.SCRNIMG

Partition Name: STS_PENDING

------------------------------------------------------------

Segment Blocks: 1024 KB: 8192

Used Blocks: 62 KB: 496

Expired Blocks: 944 KB: 7552

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.SCRNIMG

Partition Name: STS_CLOSED

------------------------------------------------------------

Segment Blocks: 1024 KB: 8192

Used Blocks: 142 KB: 1136

Expired Blocks: 864 KB: 6912

Unexpired Blocks: 0 KB: 0

============================================================

============================================================

Space Usage for SecureFile LOB TRBTKT.TICKETS.SCRNIMG

Partition Name: STS_OTHER

------------------------------------------------------------

Segment Blocks: 512 KB: 4096

Used Blocks: 501 KB: 4008

Expired Blocks: 0 KB: 0

Unexpired Blocks: 0 KB: 0

============================================================

SET SERVEROUTPUT ON

修改SecureFile属性

  当我创建TRBTKT.SECURE_TICKETS表时,你可能注意到我为每个LOB列在它们对应的分区中执行压缩和重复删除,重要的是我还使用了ALTER TABLE语句进行修正,另外,如果需要的话,我还可以在每个LOB独立的分区上应用改变到SecureFile LOB。清单6中的代码显示了4个修改TRBTKT.TICKETS表的SecureFile LOB属性的例子,注意这个表现在已经用清单3中的代码和TRBTKT.SECURE_TICKETS表执行了交换,我也从DBA_PART_LOBS创建了一个报告显示在修改这些LOB属性前后的状态,结果输出如报告2所示。

  清单6 管理SecureFile LOB属性

SQL> ALTER TABLE TRBTKT.TICKETS

SQL> MODIFY LOB(DOCUMENT) (NOCOMPRESS);

Table altered.

SQL> ALTER TABLE TRBTKT.TICKETS

SQL> MODIFY LOB(SCRNIMG) (KEEP_DUPLICATES);

Table altered.

SQL> ALTER TABLE TRBTKT.TICKETS

SQL> MODIFY PARTITION STS_PENDING LOB(SCRNIMG) (COMPRESS HIGH);

Table altered.

SQL> ALTER TABLE TRBTKT.TICKETS

SQL> MODIFY PARTITION STS_PENDING LOB(DOCUMENT) (DEDUPLICATE);

Table altered.

报告2 修改许多SecureFile LOB后查询DBA_LOB_PARTITIONS返回的结果

BasicFile and SecureFile LOB Partitions

(from DBA_LOB_PARTITIONS)

Stored in Stored DeDupli-

Table Column Partition Cacheing In Row
Encrypted Compressed cated SecureFile

---------------- ------------ ------------ ---------- ---------- ---------- ---------- --------

SECURE_TICKETS DOCUMENT STS_OTHER NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_CLOSED NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_OPEN NO YES NONE NONE NONE NO

SECURE_TICKETS DOCUMENT STS_PENDING NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_OTHER NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_CLOSED NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_PENDING NO YES NONE NONE NONE NO

SECURE_TICKETS SCRNIMG STS_OPEN NO YES NONE NONE NONE NO

TICKETS DOCUMENT STS_OTHER YES NO NO NO LOB YES

TICKETS DOCUMENT STS_PENDING YES NO NO NO LOB YES

TICKETS DOCUMENT STS_CLOSED YES NO NO NO LOB YES

TICKETS DOCUMENT STS_OPEN YES NO NO NO NO YES

TICKETS SCRNIMG STS_PENDING CACHEREADS NO NO HIGH NO YES

TICKETS SCRNIMG STS_OPEN CACHEREADS NO NO MEDIUM NO YES

TICKETS SCRNIMG STS_CLOSED CACHEREADS NO NO HIGH NO YES

TICKETS SCRNIMG STS_OTHER CACHEREADS NO NO HIGH NO YES

最后,请记住任何对LOB属性进行修改都只会影响到新创建的LOB或新修改的LOB,例如,将列TRBTKT.SECURE_TICKETS.SCRNIMG的压缩方法从COMPRESS修改为NOCOMPRESS不会影响到现有的LOB条目。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: