Oracle Acs資深顧問羅敏 老羅技術核心感悟: 11g大對象數據新技術
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 微信公眾號:
來自: http://www.askmaclean.com/archives/oracle-acs資深顧問羅敏-老羅技術核心感悟:-11g大對象數據.html