Oracle Acs資深顧問羅敏 老羅技術核心感悟: 11g大對象數據新技術

jopen 8年前發布 | 31K 次閱讀 Oracle數據庫

IT系統不僅需要存儲和處理大量的傳統結構化數據,而且對各類半結構化,例如XML文檔、Word文檔等,以及非結構化的圖片、圖像、視頻等信息的處理需求也日益增長。Oracle自8i開始就推出了大對象(LOB)技術,用于存儲半結構化和非結構化的數據。

本章將首先介紹傳統LOB技術的運用,并總結傳統LOB技術的不足,然后將介紹Oracle 11g新一代的大對象處理技術:SecureFiles,以及將傳統LOB向SecureFiles進行遷移的相關技術,最后介紹相關案例和進一步的參考資料。

傳統LOB技術的運用

LOB字段分為存儲二進制的BLOB字段、存儲字符類型的CLOB、存儲國家字符集的NCLOB,以及存儲外部文件的BFILE等類型。LOB字段的設計和使用并不復雜,例如,以下就是創建一個包含LOB字段表的語句:

CREATE TABLE print_media
    ( product_id        NUMBER(6)
    , ad_id             NUMBER(6)
    , ad_composite      BLOB
    , ad_sourcetext     CLOB
    , ad_finaltext      CLOB
    , ad_fltextn        NCLOB
    , ad_textdocs_ntab  textdoc_tab
    , ad_photo          BLOB
    , ad_graphic        BFILE);

LOB表物理設計基本原則

LOB字段在物理設計和應用開發中,都具有獨特的技術特征。以下是Oracle顧問根據國內外不同項目實施LOB字段的經驗,提出的LOB表物理設計基本原則。這些原則的貫徹,將有效提高LOB字段的可管理型和性能:

  • LOB表空間設計

為方便管理和處理的高性能,建議所有LOB字段單獨建立表空間,并為每個LOB數據段單獨命名。LOB表空間和數據段命名規則如下:

類型 命名
LOB表空間 TS_<基表名>_<LOB字段名>
LOB數據段 SEG_<基表名>_<LOB字段名>

如果在LOB字段建立索引,Oracle將LOB索引與LOB數據共同存儲在LOB表空間。因此不需要建立LOB索引表空間。

另外建議LOB表空間的物理參數設計如下:

管理方式 分配方式 Uniform Size(M) 段空間管理
LOCAL UNIFORM 256 AUTO
LOCAL UNIFORM 256 AUTO
  • ENABLE/DISABLE STORAGE IN ROW的確定

通過ENABLE/DISABLE STORAGE IN ROW的設置,當LOB字段值(包括控制信息)小于4K時,Oracle可將LOB字段值直接保存在基表或LOB段。

ENABLE STORAGE IN ROW為缺省值,其優點如下:

  • 當大量LOB字段值小于4K時,則直接讀取基表的記錄,就可讀取到LOB字段,減少了I/O次數,而且空間利用率較高。
  • 當LOB字段值大于4K時,雖然LOB字段值被存儲在LOB段,但LOB的控制信息依然存儲在基表記錄中,能加速LOB字段的訪問。

DISABLE STORAGE IN ROW的優點如下:

  • 當對基表的操作較多時,例如大量SELECT、UPDATE等,全表掃描、按范圍掃描(range scans)時,基表不包括LOB字段值,處理效率更高。
  • 基表和LOB字段值完全分開存儲,有利于數據的管理。

基于上述特點分析,我們通常建議所有LOB表均采用DISABLE STORAGE IN ROW技術,即基表記錄和LOB字段值完全分開存儲,代價是空間消耗較大。

  • CHUNK的確定

CHUNK值表示通過OCI或PL/SQL等訪問LOB字段時,一次讀取或寫入LOB的數據量,缺省為一個數據塊。CHUNK一般是數據塊的倍數。

在某系統中,我們建議將CHUNK設定每個LOB字段的平均長度或頻率最高的長度。即數據包的平均長度,例如,1M,2M等。

  • PCTVERSION的確定

當LOB字段值(文稿)被修改時,Oracle將在LOB數據段保存原來的LOB值版本,以提供讀取的一致性。

PCTVERSION表示了老版本LOB的消耗空間比例,缺省值為10%。PCTVERSION值主要取決于如下兩個因素:

  • LOB字段的修改頻率?
  • 被修改LOB字段的讀取頻率?

根據上述原理,我們為該系統的LOB字段的PCTVERSION值的確定,制定如下設置原則:

LOB值修改頻率 讀被修改的LOB頻率 PCTVERSION
20
10
10
5
沒有 沒有
  • CACHE/NOCACHE/CACHE READS的確定

Oracle在對LOB字段的處理時,可提供如下三種內存處理的方式:

  • CACHE:將LOB字段值存儲在內存中。
  • NOCACHE:不將LOB字段值存儲在內存中。或者存儲在LRU列表的尾端,從而會容易被淘汰出內存。
  • CACHE READS:只有在對LOB讀取處理時,才存儲在內存。

根據上述原理,我們在該系統建立如下原則:

CACHE方式 讀頻度 寫頻度
CACHE
NOCACHE
CACHE READS
  • LOGGING/NOLOGGING的確定

同普通表的處理類似,LOB表日志方式的設計決定了日志文件的產生量和數據的可恢復性。以下是該系統LOB表日志文件的設計原則建議:

  • 一般正常處理情況下,所有LOB表均設置為LOGGING方式。
  • 在批量裝載和插入LOB數據之前,建議將LOB表設置為NOCACHE NOLOGGING方式,從而降低LOG的產生量,從而保障數據物理備份的可行性。

傳統LOB字段設計舉例

根據客戶提供的LOB表結構設計和處理特性分析,遵循上述LOB字段的設計原則,我們對該系統的LOB表字段設計如下:

表名稱 LOB字段 LOB表空間名 LOB數據段名 大小(G) CHUNK PCTVERSION CACHE
TB_URLCONTENT F_CONTENTS CLOB TS_TB_URLCONTENT_F_CONTENTS SEG_TB_URLCONTENT_F_CONTENTS 23 4096 5 CACHE READS
F_SNAPSHOT CLOB TS_TB_URLCONTENT_F_SNAPSHOT SEG_TB_URLCONTENT_F_SNAPSHOT 23 4096
TB_MATERIAL F_CONTENTS CLOB TS_TB_MATERIAL_F_CONTENTS SEG_TB_MATERIAL_F_CONTENTS 16 4096 20 CACHE
TB_URLIMAGE F_PICS BLOB TS_TB_URLIMAGE_F_PICS SEG_TB_URLIMAGE_F_PICS 92 16384 10 CACHE READS

以下就是LOB表的創建語句樣本:

CREATE TABLE TB_URLCONTENT (
... ...
F_CONTENTS  CLOB,
F_SNAPSHOT  CLOB,
... ...
)
LOB (F_CONTENTS) STORE AS SEG_TB_URLCONTENT_F_CONTENTS (
TABLESPACE TS_TB_URLCONTENT_F_CONTENTS 
CHUNK 4096
PCTVERSION 5
CACHE READS
LOGGING
STORAGE(MAXEXTENTS UNLIMITED)
DISABLE STORAGE IN ROW);

傳統LOB技術的不足

通過上述傳統LOB技術的使用,可見欲做到充分滿足LOB字段的可管理性和性能需求,還是需要下一番功夫的,而且傳統LOB技術本身的如下局限,已很難滿足高速增長的需求。

  • 首先,傳統LOB字段技術缺乏去重、壓縮等功能,導致空間消耗過大。

例如,我們在分析某系統過程中發現,該系統數據庫總容量640GB,其中LOB字段共消耗了600GB,最主要的兩個LOB字段就消耗了550GB,占了數據庫總量的85%以上,而且還在高速增長中。實際上,該系統的LOB字段存在大量重復數據和可壓縮空間。

  • LOB字段的大量物理屬性難于設計和管理

傳統LOB字段有CHUNK、LOGGING/NOLOGGING、PCTVERSION、CACHE/NOCACHE/CACHE READS、ENABLE/DISABLE STORAGE IN ROW等大量物理屬性。根據每個LOB字段訪問特征的不同,合理地設計這些物理屬性,才能在存儲效率、訪問性能等方面達到良好的效果。但國內大部分采用LOB字段的IT系統,幾乎缺乏這些物理屬性的定制化設計,而是采用Oracle的缺省物理屬性,這種狀況很難滿足需求。例如,CACH參數缺省值為NO,即Oracle在缺省情況下,讀取LOB字段時沒有進行緩存,顯然不能滿足LOB字段讀寫頻度較高的需求。

  • LOB字段存在一些局限

傳統LOB字段存在一些明顯的局限。例如存儲數據容量有限,通常是幾兆數據;CHUNK屬性不僅為定長,而且有上限(32K),容易導致大量碎片;LOB字段對OLTP應用支持不好;在 RAC環境下,LOB字段會導致應用擴展性不好,等等。

新一代大對象處理技術: SecureFiles

為有效解決現有LOB字段技術存在的上述問題,Oracle 公司在11g版本中推出了針對 LOB字段處理的新技術:SecureFiles。該技術在性能、可管理性、易用性等方面,具有如下具體特點和優勢:

  • 提供數據去重、壓縮和透明加密功能

SecureFiles不僅可以有效降低LOB字段存儲空間消耗,提高了訪問效率,而且提高了LOB字段的數據安全性。

以上述某系統為例,我們將其中一個100GB的LOB字段轉換為SecureFiles,并采用壓縮技術之后,最終只消耗30GB空間,大大壓縮了存儲空間。

  • 新的網絡協議

SecureFiles提供一種新的Client/Server方式的內部讀寫機制,有效提高了大量數據傳輸的效率。

  • 簡化物理屬性設計和管理

SecureFiles提供了大量自動化的物理屬性機制,免去了大量物理屬性設計和管理工作。例如:CHUNK屬性為可變長,最大能支持到64M;Oracle能自動進行碎片整理;SecureFiles還自動進行redo和undo的管理,避免大量不必要的redo和 undo信息的產生。

由于SecureFiles技術的推出,Oracle從11g開始將傳統LOB技術稱之為BASICFILE。

SecureFiles相關技術細節

  • 啟用SecureFiles技術

通過新的初始化參數DB_SECUREFILE,DBA可控制如何使用SecureFiles。DB_SECUREFILE的取值和含義如下:

  • PERMITTED(缺省值):允許使用SecureFiles技術。
  • ALWAYS:將所有LOB字段缺省創建為SecureFiles。但如果該表所在表空間不是ASSM(Automatic Segment Space Management)表空間,則將LOB字段創建為BASICFILE。
  • NERVER:禁止使用SecureFiles技術。所有定義為SecureFiles的LOB字段,將被創建為BASICFILE。如果定義了與SecureFiles相關的選項(例如:去重、壓縮、加密等),將導致異常。
  • IGNORE:忽略SecureFiles關鍵字和所有相關的選項。
  • 創建表舉例

以下語句創建一個包含LOB字段的表,并且具有去重功能,另外具有緩存、不保留日志的功能。

CREATE TABLE func_spec(
 id number, doc CLOB) 
 LOB(doc) STORE AS SECUREFILE 
 (DEDUPLICATE LOB CACHE NOLOGGING);

以下語句創建一個包含LOB字段的表,并且具有高密度壓縮、但不去重功能,另外具有緩存、不保留日志的功能。

CREATE TABLE test_spec (
 id number, doc  CLOB) 
 LOB(doc) STORE AS SECUREFILE 
 (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING);

以下語句創建一個包含LOB字段的表,并且具有透明加密功能。

CREATE TABLE design_spec (id number, doc  CLOB) 
 LOB(doc) STORE AS SECUREFILE (ENCRYPT);
  • 修改表舉例

以下語句關閉去重功能:

ALTER TABLE t1 MODIFY LOB(a) ( KEEP_DUPLICATES );

以下語句開啟去重功能:

ALTER TABLE t1 MODIFY LOB(a) ( DEDUPLICATE LOB );

以下語句關閉壓縮功能:

ALTER TABLE t1 MODIFY LOB(a) ( NOCOMPRESS );

以下語句針對某個分區開啟壓縮功能:

ALTER TABLE t1 MODIFY PARTITION p1 LOB(a) ( COMPRESS HIGH );

  • SecureFiles技術的監控

通過查詢*_SEGMENTS、*_LOBS、*_LOB_PARTITIONS、*_PART_LOBS等視圖,可了解LOB字段的相關信息。例如,如下語句將查詢SECF_TBS2表空間中的LOB字段信息:

SQL> SELECT segment_name, segment_type, segment_subtype 
  2  FROM dba_segments 
  3  WHERE tablespace_name = 'SECF_TBS2'
  4  AND segment_type = 'LOBSEGMENT'
  5  /

SEGMENT_NAME                 SEGMENT_TYPE        SEGMENT_SU
---------------------------- ------------------  ----------
SYS_LOB0000071583C00004$$    LOBSEGMENT          SECUREFILE

另外,通過DBMS_LOB.GETOPTIONS可查詢SecureFiles類型的LOB字段的相關選項,例如是否去重、壓縮或加密。通過DBMS_LOB.SETOPTIONS可進行相應的設置工作。通過DBMS_SPACE.SPACE_USAGE可查詢SecureFiles類型的LOB字段的空間消耗情況。

上述操作的詳細語句略,詳細情況請見Oracle 11g聯機文檔的《Oracle? Database PL/SQL Packages and Types Reference》有關DBMS_LOB包的說明。

SecureFiles遷移方法

通過普通技術,例如CTAS/ITAS、Export/Import等可以將傳統LOB字段轉換為SecureFiles,但這些技術可能導致業務停頓時間過長。下面介紹兩種更有效的技術:

  • 在線重定義技術

通過在線重定義技術(Online Redefinition),可在業務不停頓的情況下,將傳統LOB字段轉換為SecureFiles。例如:

REM Grant privileges required for online redefinition.
GRANT EXECUTE ON DBMS_REDEFINITION TO pm;
GRANT ALTER ANY TABLE TO pm;
GRANT DROP ANY TABLE TO pm;
GRANT LOCK ANY TABLE TO pm;
GRANT CREATE ANY TABLE TO pm;
GRANT SELECT ANY TABLE TO pm;
REM Privileges required to perform cloning of dependent objects.
GRANT CREATE ANY TRIGGER TO pm;
GRANT CREATE ANY INDEX TO pm;
CONNECT pm
DROP TABLE cust;
CREATE TABLE cust(c_id NUMBER PRIMARY KEY,
c_zip NUMBER,
c_name VARCHAR(30) DEFAULT NULL,
c_lob CLOB
);
INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt');
-- Creating Interim Table
-- There is no need to specify constraints because they are
-- copied over from the original table.
CREATE TABLE cust_int(c_id NUMBER NOT NULL,
c_zip NUMBER,
c_name VARCHAR(30) DEFAULT NULL,
c_lob CLOB
) LOB(c_lob) STORE AS SECUREFILE (NOCACHE FILESYSTEM_LIKE_LOGGING);
DECLARE
col_mapping VARCHAR2(1000);
BEGIN
-- map all the columns in the interim table to the original table
col_mapping :=
'c_id c_id , '||
'c_zip c_zip , '||
'c_name c_name, '||
'c_lob c_lob';
DBMS_REDEFINITION.START_REDEF_TABLE('pm', 'cust', 'cust_int', col_mapping);
END;
/
DECLARE
error_count pls_integer := 0;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('pm', 'cust', 'cust_int',
    1, TRUE,TRUE,TRUE,FALSE, error_count);
DBMS_OUTPUT.PUT_LINE('errors := ' || TO_CHAR(error_count));
END;
/
EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('pm', 'cust', 'cust_int');
-- Drop the interim table
DROP TABLE cust_int;
DESC cust;
-- The following insert statement fails. This illustrates
-- that the primary key constraint on the c_id column is
-- preserved after migration.
INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt');
SELECT * FROM cust;

雖然在線重定義技術需要額外的空間,但仍然建議優先考慮該技術的運用。

? 分區交換技術

通過分區交換技術,也可在盡量減少業務不停頓,將傳統LOB字段轉換為SecureFiles。該技術具有如下特點:

? 與分區技術結合,需要該表最大分區的額外空間。

? 在分區交換時,可同步進行本地化索引的維護。

? 按分區進行操作,縮短維護窗口。

詳細操作過程略。

SecureFiles實施案例

我們在上述曾介紹過,某系統數據庫總容量640GB,其中使用傳統LOB技術的字段共消耗了600GB,最主要的兩個LOB字段就消耗了550GB,占了數據庫總量的85%以上,而且還在高速增長中。實際上,該系統的LOB字段存在大量重復數據和可壓縮空間。

于是,我們將這兩個表采用傳統的CTAS技術,將傳統LOB字段轉換為SecureFiles字段,結果是這兩個表空間又550GB下降為160GB,空間幾乎下降了70%!

以下就是詳細腳本:

CREATE TABLE FORESTFIREEW.T_FORECAST_THEMATIC_NEW 
   (    THEMATIC_ID VARCHAR2(36) NOT NULL ENABLE, 
    RESULT_ID VARCHAR2(36) NOT NULL ENABLE, 
    THEMATIC_TYPE VARCHAR2(10) NOT NULL ENABLE, 
    DATA_NO NUMBER(10,0), 
    DATA_DATE CHAR(8), 
    DATA_HOUR CHAR(2), 
    DATA_TYPE VARCHAR2(10), 
    DATA_VALUE NUMBER(8,2), 
    DATA_LEVEL NUMBER(2,0), 
    GEOMETRY CLOB, 
     CONSTRAINT PK_FORECAST_THEMATIC_NEW PRIMARY KEY (THEMATIC_ID)
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE FORESTFIREEW  ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE FORESTFIREEW 
 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING)
PARTITION BY RANGE (DATA_DATE) (PARTITION SYS_P27 VALUES LESS THAN ('20120101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2011 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) , PARTITION SYS_P28 VALUES LESS THAN ('20130101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2012 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) , PARTITION SYS_P29 VALUES LESS THAN ('20140101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2013 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) , PARTITION SYS_P30 VALUES LESS THAN ('20150101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2014 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) , PARTITION SYS_P31 VALUES LESS THAN ('20160101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2015 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) , PARTITION SYS_P32 VALUES LESS THAN (MAXVALUE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2016 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) );

insert /+ append /into T_FORECAST_THEMATIC_NEW nologging select * from T_FORECAST_THEMATIC;

CREATE TABLE FORESTFIREEW.T_LIVE_THEMATIC_NEW ( THEMATIC_ID VARCHAR2(36) NOT NULL ENABLE, RESULT_ID VARCHAR2(36) NOT NULL ENABLE, THEMATIC_TYPE VARCHAR2(10) NOT NULL ENABLE, DATA_NO NUMBER(10,0), DATA_DATE CHAR(8), DATA_HOUR CHAR(2), DATA_VALUE NUMBER(8,2), DATA_LEVEL NUMBER(2,0), GEOMETRY CLOB, CONSTRAINT PK_LIVE_THEMATIC_NEW PRIMARY KEY (THEMATIC_ID) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE( BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING) PARTITION BY RANGE (DATA_DATE) (PARTITION SYS_P51 VALUES LESS THAN ('20120101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2011 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING), PARTITION SYS_P52 VALUES LESS THAN ('20130101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2012 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING), PARTITION SYS_P53 VALUES LESS THAN ('20140101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2013 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING), PARTITION SYS_P54 VALUES LESS THAN ('20150101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2014 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING), PARTITION SYS_P55 VALUES LESS THAN ('20160101') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2015 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING), PARTITION SYS_P56 VALUES LESS THAN (MAXVALUE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE FORESTFIREEW2016 LOB (GEOMETRY) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING));

insert /+ append /into T_LIVE_THEMATIC_NEW nologging select * from T_LIVE_THEMATIC;</pre>

本章參考資料及進一步讀物

本章參考資料及進一步讀物:

序號 資料類別 資料名稱 資料概述
1. Oracle 11g R2聯機文檔 《Oracle? Database SecureFiles and Large Objects Developer’s Guide》 這是Oracle 11g聯機文檔中專門介紹SecureFiles和大對象開發的專著,從事大對象開發的人員必讀之物。
2. Oracle大學教材 《Oracle? Database 11g New Features》的第10課 這是Oracle大學教材。欲看到圖文并茂的該文檔,只能報名參加該課程的培訓了。
3. My Oracle Support 《Master Note: Overview of Oracle Large Objects (BasicFiles LOBs and SecureFiles LOBs) (Doc ID 1490228.1)》 欲全面了解傳統的BasicFiles大對象和新一代SecureFiles大對象,這篇文檔就是主目錄。
4. My Oracle Support 《Summary Note Index for BasicFiles(LOB’s/BLOB’s/CLOB’s/NCLOB’s,BFILES) and SecureFiles (Doc ID 198160.1)》 又一個介紹傳統的BasicFiles大對象和新一代SecureFiles大對象的文檔集結地。
5. My Oracle Support 《LOB Performance Guideline (Doc ID 268476.1)》 這篇文檔針對傳統BasicFiles大對象的性能問題進行了全面分析。既有設計問題,也有Oracle產品Bug問題,好好看看吧。其實更好的辦法就是升級到11g,并采用SecureFiles技術。
6. My Oracle Support 《LOBS – Storage, Redo and Performance Issues (Doc ID 66431.1)》 這篇文檔介紹了傳統BasicFiles大對象的存儲特性、Redo等內部信息,以及可能存在的一些性能問題。重復一下:別糾結這些問題了,還是升級到11g,并采用SecureFiles技術吧。
7. My Oracle Support 《POOR PERFORMANCE WITH LOB INSERTS (Doc ID 978045.1)》 LOB字段插入比較慢,什么原因?這篇文章給出了一個原因,那就是Recylebin!解決辦法:關掉Recylebin!
8. My Oracle Support 《Troubleshooting Guide (TSG) – Large Objects (LOBs) (Doc ID 846562.1)》 這篇文檔介紹了如何診斷分析LOB字段故障的思路和方法。例如,如何確定問題?如何收集故障信息?如何研究和分析問題?如何提供解決方案?如何驗證解決效果?這可是LOB字段故障診斷的寶典!

關注dbDao.com的新浪微博

掃碼關注dbDao.com 微信公眾號:

Oracle Acs資深顧問羅敏 老羅技術核心感悟: 11g大對象數據新技術

來自: http://www.askmaclean.com/archives/oracle-acs資深顧問羅敏-老羅技術核心感悟:-11g大對象數據.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!