11g大对象数据新技术

Oracle Acs资深顾问罗敏 老罗技术核心感悟: 11g大对象数据新技术

2016/02/15 by Maclean Liu Leave a Comment

作者为: 

SHOUG成员 – ORACLE ACS高级顾问罗敏

本文永久地址:http://www.askmaclean.com/?p=16572

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)段空间管理
LOCALUNIFORM256AUTO
LOCALUNIFORM256AUTO

 

  • 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
没有没有0

 

  • 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)CHUNKPCTVERSIONCACHE
        
TB_URLCONTENT

 

 

F_CONTENTS CLOBTS_TB_URLCONTENT_F_CONTENTSSEG_TB_URLCONTENT_F_CONTENTS2340965

 

 

CACHE READS

 

 

 F_SNAPSHOT CLOBTS_TB_URLCONTENT_F_SNAPSHOTSEG_TB_URLCONTENT_F_SNAPSHOT234096 
TB_MATERIALF_CONTENTS CLOBTS_TB_MATERIAL_F_CONTENTSSEG_TB_MATERIAL_F_CONTENTS16409620CACHE
TB_URLIMAGEF_PICS BLOBTS_TB_URLIMAGE_F_PICSSEG_TB_URLIMAGE_F_PICS921638410CACHE 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字段技术缺乏去重、压缩等功能,导致空间消耗过大。首发于askmaclean.com

例如,我们在分析某系统过程中发现,该系统数据库总容量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;

本章参考资料及进一步读物

本章参考资料及进一步读物:

序号资料类别资料名称资料概述
    
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字段故障诊断的宝典!

 

 

Filed Under: Oracle, Oracle LOB大对象

利用44951 event解决LOB SPACE enq HW – contention等待争用

2011/11/07 by Maclean Liu 2 Comments

对存有LOB大对象的表的并发插入、更新引起的LOB Segment High Water Mark是常见的LOb并发争用; 特别是在ASSM(Auto Segment Space Management)的表空间上这种LOB的HWM可能比MSSM(Manual Segment Space Management)更为严重,其原因是在MSSM下LOB的HWM bump一次会获取128个chunk, 而在ASSM下默认只获取必要的chunk(default 1) (This is worse in ASSM than MSSM because ASSM only gets the amount of space requested while MSSM gets 128 chunks at a time.)。

 

针对该LOB HWM高水位争用问题,常见的一种解决方法是为LOB segment预分配空间,因为预分配了空间所以出现高水位争用的机会少了,则 enq HW – contention争用出现的概率也随之降低,为LOB  allocate extent的语法如下:

 

ALTER TABLE <lob_table>
MODIFY LOB (<column_name>) (allocate extent (size <extent size>));

 

使用该方法手动为LOB SEGMENT预分配空间时需要注意,存在<NOTE 1229669.1 Bug 8198906 – Segment header corruption if extent allocation operation is interrupted>。

 

另一种缓解该LOB HW争用的有效方式是从 10.2.0.3上Bug 6376915引入的44951 event,该事件在10.2.0.4和11.1.0.7之后也都被引入。在10.2.0.3中使用该44951 event则需要优先apply Bug 6376915的one-off patch。

44951 event的LEVEL参数定义了在ASSM下当LOB segment的HWM上升时一次获取的chunks数目,一般推荐设置为1024,即一次get 1024个chunk,由于单次跃升的HWM更高了,这让进入enq HW – contention等待的机会变少了。 需要注意的是该44951 event仅仅对ASSM表空间上的LOB SEGMENT有效。

设置方法如下:

 

alter system set events ‘44951 trace name context forever, level 1024’;

 

 

以下是在11.2.0.3 中的实际测试,通过大量并发插入到LOB表模拟enq HW,并通过AWR报告中的性能信息比对设置该44951 event先后的区别:

 

 

 

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> show parameter event

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
event                                string
xml_db_events                        string      enable
SQL> 

conn maclean/oracle

 CREATE TABLE "MACLEAN_LOB" ( "T1" VARCHAR2(200) NOT NULL , "T2" CLOB, "T3" CLOB)  tablespace users
    LOB ("T2") 
    STORE AS  ( TABLESPACE "USERS" CHUNK 16K PCTVERSION 50 CACHE ) 
    LOB ("T3") 
    STORE AS  ( TABLESPACE "USERS" CHUNK 16K PCTVERSION 50 CACHE );

SQL> select segment_space_management from dba_tablespaces where tablespace_name='USERS';

SEGMEN
------
AUTO

exec dbms_workload_repository.create_snapshot;

开3个进程并发插入LOB表

begin
for i in 1..10000 loop
 insert into maclean.maclean_lob values ('ABC',rpad('Z',32000,'L'),rpad('Z',32000,'L'));
 end loop;
 commit;
 end;
 /

 exec dbms_workload_repository.create_snapshot;

SQL>   select bytes/1024,segment_name from dba_segments where segment_name in (select segment_name from dba_lobs where table_name='MACLEAN_LOB' and owner='MACLEAN');

BYTES/1024 SEGMENT_NAME
---------- ---------------------------------------------------------------------------------
    490496 SYS_LOB0000076982C00003$$
    482304 SYS_LOB0000076982C00002$$

	SQL> truncate table maclean.maclean_lob;

Table truncated.

SQL> SQL> 
SQL> 
SQL>  select bytes/1024,segment_name from dba_segments where segment_name in (select segment_name from dba_lobs where table_name='MACLEAN_LOB' and owner='MACLEAN');

BYTES/1024 SEGMENT_NAME
---------- ---------------------------------------------------------------------------------
        64 SYS_LOB0000076982C00003$$
        64 SYS_LOB0000076982C00002$$

SQL> alter system flush buffer_cache;

System altered.

SQL> alter system flush shared_pool;

System altered.

alter system set events '44951 trace name context forever, level 1024';

		 exec dbms_workload_repository.create_snapshot;

	开3个进程并发插入LOB表

begin
for i in 1..10000 loop
 insert into maclean.maclean_lob values ('ABC',rpad('Z',32000,'L'),rpad('Z',32000,'L'));
 end loop;
 commit;
 end;
 /	

 		 exec dbms_workload_repository.create_snapshot;

 select bytes/1024,segment_name from dba_segments where segment_name in (select segment_name from dba_lobs where table_name='MACLEAN_LOB' and owner='MACLEAN');

BYTES/1024 SEGMENT_NAME
---------- ---------------------------------------------------------------------------------
    483328 SYS_LOB0000076982C00003$$
    483328 SYS_LOB0000076982C00002$$

 

 

以上可以看到虽然设置了44951 level 1024,但并不会因为单次bump hwm的chunks数增加而导致大量空间的浪费。

对比AWR可以发现设置44961 level 1024后 enq HW – contention消耗的DB TIME明显减少:

 

 

 

 

此外在10.2.0.3之前还有一种方案即设置LOB的PCTVERSION 为0/100,但是该方案会导致LOB占用的SPACE大幅上升,所以不推荐,你有大量的理由至少升级DB到10.2.0.5.9。

 

 

Filed Under: Oracle, Oracle Internal Research内部原理研究, Oracle LOB大对象

[repost]Oracle RDBMS:Generic Large Object (LOB) Performance Guidelines

2011/09/11 by Maclean Liu Leave a Comment

Oracle的Giri Mandalika给我们介绍了LOB大型对象的一些调优注意事项,之前我一直对_shared_io_pool_size这个undocumented参数不甚了解,以为它是一个shared pool相关的参数,根本原因是甚至没有任何一个公开的Mos Note介绍了这几个隐藏参数。

而这篇文章给出了比较好的解释,这里引用一下:

This blog post is generic in nature and based on my recent experience with a content management system where securefile BLOBs are critical in storing and retrieving the checked in content. It is stro ngly suggested to check the official documentation in addition to these brief guidelines. In general, Oracle Database SecureFiles and Large Objects Developer’s Guide 11g Release 2 (11.2) is a good starting point when creating tables involving SecureFiles and LOBs.

Guidelines

  • Tablespace: create the LOB in a different tablespace isolated from the rest of the database
  • Block size: consider larger block size (default 8 KB) if the expected size of the LOB is big
  • Chunk size: consider larger chunk size (default 8 KB) if larger LOBs are expected to be stored and retrieved
  • Inline or Out-of-line: choose “DISABLE STORAGE IN ROW” (out-of-line) if the average LOB size is expected to be > 4 KB. The default inlining is fine for smaller LOBs
  • CACHE or NOCACHE: consider bypassing the database buffer cache (NOCACHE) if large number of LOBs are stored and not expected to be retrieved frequently
  • COMPRESS or NOCOMPRESS: choose COMPRESS option if storage capacity is a concern and a constraint. It saves disk space at the expense of some performance overhead. In a RAC database environment, it is recommended to compress the LOBs to reduce the interconnect traffic
  • De-duplication: by default, duplicate LOBs are stored as a separate copy in the database. Choosing DEDUPLICATE option enables sharing the same data blocks for similar files thus reducing storage overhead and simplifying storage management
  • Partitioning: consider partitioning the parent table to maximize application performance. Hash partitioning is one of the options if there is no potential partition key in the table
  • Zero-Copy I/O protocol: turned on by default. Turning it off in a RAC database environment could be beneficial. Set the initialization parameter _use_zero_copy_io=FALSE to turn o ff the Zero-Copy I/O protocol
  • Shared I/O pool: database uses the shared I/O pool to perform large I/O operations on securefile LOBs. The shared I/O pool uses shared memory segments. If this pool is not large enough or if there is not enough memory available in this pool for a securefile LOB I/O operation, Oracle uses a portion of PGA until there is sufficient memory available in the shared I/O pool. Hence it is recommen ded to size the shared I/O pool appropriately by monitoring the database during the peak activity. Relevant initialization parameters: _shared_io_pool_size and _shared_iop_max_size

Filed Under: Oracle, Oracle LOB大对象 Tagged With: hidden parameter, Oracle LOB大对象, PERFORMANCE, pool_size, _shared_iop_max_size, _use_zero_copy_io

转载于:https://my.oschina.net/rootliu/blog/1623496

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用开发基础,并通过两个完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程。对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序开发员,也有很好的学习和参考价值。   Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。   全书结构合理、内容翔实、示例丰富、语言简洁。不仅适合作为高等院校本/专科计算机软件、信息系统、电子商务等相关专业的数据库课程教材,同时还适合作为各种数据库技术培训班的教材以及数据库开发人员的参考资料。 目录 前言 第1章 Oracle数据库概述 1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整性约束 1.2.7 联机事务处理和联机分析处理 1.2.8 数据仓库 1.3 Oracle基本术语 1.3.1 数据字典 1.3.2 数据文件 1.3.3 控制文件 1.3.4 日志文件 1.3.5 表空间 1.3.6 段 1.3.7 区 1.3.8 数据块 1.4 Oracle 11g的新特性 1.4.1 数据库管理部分 1.4.2 PL/SQL部分 1.4.3 其他部分 第2章 Oracle在Windows平台上的安装与配置 2.1 Oracle通用安装器 2.2 Oracle数据库软件的安装 2.3 Oracle数据库软件的卸载 2.3.1 停止所有的Oracle服务 2.3.2 用OUI卸载所有的Oracle组件 2.3.3 手动删除Oracle遗留的成分 2.4 Oracle的应用结构 2.4.1 单磁盘独立主机结构 2.4..2 多磁盘独立主机结构 2.4.3 多数据库独立主机结构 2.4.4 C/S结构 2.4.5 分布式结构 2.5 Oracle网络与防火墙 2.5.1 Oracle网络服务 2.5.2 配置Oracle网络环境 2.5.3 Oracle防火墙 第3章 SQL语言基础 3.1 SQL概述 3.1.1 SQL语言的功能 3.1.2 SQL的特点 3.1.3 SQL语句的编写规则 3.2 数据定义 3.2.1 CREATE 3.2.2 DROP 3.2.3 ALTER 3.3 数据查询 3.3.1 简单查询 3.3.2 WHERE子句 3.3.3 ORDER BY子句 3.3.4 GROUPBY子句 3.3.5 HAVING子句 3.3.6 多表连接查询 3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 4.2 PL/SQL的游标 4.2.1 基本原理 4.2.2 显式游标 4.2.3 隐式游标 4.2.4 游标属性 4.2.5 游标变量 4.3 过程 4.3.1 创建过程 4.3.2 调用过程 4.3.3 删除过程 4.3.4 过程的参数类型及传递 4.4 函数 4.4.1 创建函数 4.4.2 调用函数 4.4.3 删除函数 4.5 程序包 4.5.1 基本原理 4.5.2 创建包 4.5.3 调用包 4.5.4 删除包 4.6 触发器 4.6.1 触发器的基本原理 4.6.2 创建触发器 4.6.3 执行触发器 4.6.4 删除触发器 第5章 熟悉SQL*Plus-Oracle数据库环境 5.1 进入和退出SQL*Plus环境 5.1.1 启动SQL*Plus 5.1.2 创建SQL*Plus快捷方式 5.1.3 退出SQL*Plus环境 5.2 SQL*Plus编辑器的编辑命令 5.2.1 编辑命令 5.2.2 保存命令 5.2.3 加入注释 5.2.4 运行命令 5.2.5 编写交互命令 5.2.6 使用绑定变量 5.2.7 跟踪语句 5.3 设置SQL*Plus环境 5.3.1 SHOW命令 5.3.2 SET命令 5.4 SQL*Plus环境介绍 5.4.1 存储SQL*Plus环境 5.4.2 假脱机输出 5.4.3 联机帮助 5.5 使用SQL*Plus格式化查询结果 5.5.1 格式化列 5.5.2 定义页与报告的标题和维数 5.5.3 存储和打印结果 第6章 Oracle的基本操作 6.1 Oracle的启动与关闭 6.1.1 启动Oracle数据库 6.1.2 关闭Oracle数据库 6.2 表的创建与改进 6.2.1 表的基本概念 6.2.2 表结构设计 6.2.3 表的创建 6.2.4 修改表结构 6.3 索引 6.3.1 索引的概念 6.3.2 创建索引 6.3.3 删除索引 6.4 视图 6.4.1 视图的概念 6.4.2 创建视图 6.4.3 视图更改 6.4.4 删除视图 6.5 数据操纵与数据查询 6.5.1 复制原表插入记录 6.5.2 使用视图 6.5.3 使用PL/SQL语言 6.5.4 数据查询 第7章 Oracle数据库管理操作 7.1 学会使用视图 7.1.1 增加安全性 7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录的唯一性 7.2.1 用键实现 7.2.2 创建唯一索引 7.2.3 使用序列实现 7.3 实现数据的完整性 7.3.1 域完整性 7.3.2 实体完整性 7.3.3 引用完整性 7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理”创建 角色 8.1.4 使用ALTERUSER语句修改 用户的默认角色 8.1.5 使用SET ROLE控制角色使用 8.2 回收权限 8.2.1 逐一回收 8.2.2 删除角色 8.2.3 删除数据库对象 8.2.4 删除用户 8.3 不同用户权限管理 8.4 管理对数据库对象的访问 8.4.1 使用用户口令 8.4.2 使用权限控制 8.4.3 使用数据库链接 8.4.4 使用配置文件 第9章 数据库空间管理 9.1 建立数据库时的空间设计 9.1.1 指定system表空间初值 9.1.2 设置其他表空间初值 9.2 在空间充足时的管理 9.2.1 使用数据字典动态监视 9.2.2 向表空间增加数据文件 9.3 解决空间不足的方法 9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑备份和恢复 10.2.1 使用expdp导出数据 10.2.2 使用impdp导入数据 10.3 使用OEM中进行备份与恢复 10.3.1 通过导出文件来备份 10.3.2 通过导入来恢复 10.4 脱机备份与恢复 10.4.1 脱机备份 10.4.2 脱机恢复 10.5 联机备份与恢复 10.5.1 归档日志模式的设置 10.5.2 创建恢复目录所用的表空间 10.5.3 创建RMAN用户并授权 10.5.4 创建恢复目录 10.5.5 注册目标数据库 10.5.6 使用RMAN程序进行备份 10.5.7 使用RMAN程序进行恢复 10.6 自动备份与恢复 10.6.1 闪回数据库 10.6.2 闪回表 10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询与删除 11.1.6 OEM中控制文件的管理 11.2 日志文件 11.2.1 日志文件及存储策略 11.2.2 增加日志组和日志成员 11.2.3 设置日志自动存档功能 11.2.4 监视日志工作 第12章 数据库控制 12.1 用事务控制操作 12.1.1 什么是事务 12.1.2 设置事务 12.1.3 事务提交 12.1.4 事务回滚 12.1.5 设置回退点 12.2 用锁控制并发存取 12.2.1 为何加锁 12.2.2 加锁的方法 第13章 Oracle数据库的安全管理 13.1 Oracle数据库安全性概述 13.1.1 Oracle 11g的安全性体系 13.1.2 Oracle 11g的安全性机制 13.2 用户管理 13.2.1 创建用户 13.2.2 修改用户 13.2.3 删除用户信息 13.2.4 查询用户 13.3 虚拟专用数据库 13.3.1 基于行的VPD 13.3.2 基于列的VPD 13.4 透明数据加密(’FDE) 13.4.1 创建Oracle钱夹 13.4.2 加密表 13.4.3 加密表空间 13.5 对备份进行加密 13.5.1 透明加密模式 13.5.2 基于密码的加密模式 13.5.3 混合加密模式 第14章 留言板系统 14.1 系统概述 14.1.1 留言板系统的应用背景 14.1.2 留言板系统的总体需求 14.1.3 留言板系统的功能分析 14.1.4 留言板系统的设计思路 14.2 系统功能模块设计 14.2.1 系统框架 14.2.2 系统功能模块划分 14.3 数据库设计 14.3.1 数据库需求分析 14.3.2 数据库概念结构设计 14.3.3 数据库逻辑结构设计 14.3.4 数据库表的创建 14.3.5 数据库的连接 14.4 系统主要功能模块的设计与实现 14.4.1 用户登录模块 14.4.2 添加留言模块 14.4.3 回复留言模块 14.4.4 访问留言人主页 14.4.5 删除留言 14.4.6 修改密码 14.5 本章小结 第15章 新闻发布系统 15.1 系统概述 15.1.1 新闻发布系统的应用背景 15.1.2 新闻发布系统的总体需求 15.1.3 新闻发布系统的功能分析 15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 15.4 网站总体框架 15.4.1 文件布局 15.4.2 网站首页的运行结果 15.5 系统后台主要功能模块的设计与实现 15.5.1 登录模块设计 15.5.2 管理员维护模块设计 15.5.3 新闻管理模块设计 15.6 系统前台主要功能模块的设计与实现 15.6.1 今日新闻的显示 15.6.2 查找新闻 15.6.3 查看新闻人物和投票 15.7 本章小结
/ CHINA MANAGEMENT INFORMATIONIZATION 大数据技术与档案数据挖掘 郑 杨 渊齐齐哈尔市委党校袁黑龙江 齐齐哈尔 161006冤 [ 摘 要]随着信息时代的到来袁人们处理信息的方式越来越多种多样袁传统的档案数据检索和处理技术已经不能满足人们 的日常工作需求袁为此袁人们开始将关注重点放在大型数据库的档案数据挖掘技术上面袁成功提高了工作人员的信息处理效 率袁在一定程度上推动了大数据时代的发展遥本文基于大型数据库的档案数据挖掘技术进行研究袁分析了其当前的应用情况 以及未来的应用前景遥 [关键词]大数据曰档案数据数据挖掘 doi: 10. 3969/j. issn. 1673 - 0194. 2018. 01. 053 [ 中图分类号 ] G270.7; TP311.13 [ 文献标识码 ]A [ 文章编号 ] 1673-0194渊2018冤01-0132-03 [收稿日期] 2017-11-14 [作者简介] 郑杨渊1984-冤袁女袁黑龙江齐齐哈尔人袁副研究馆员袁主 要研究方向院档案管理。 员 大数据技术 近年来袁野大数据技术冶一词经常为人们所提及袁从字面意思 来看袁它所指代的是人们已经进入到信息爆炸的时代袁在日常生 活当中袁各式各样的网络信息尧个人信息尧资源信息等充斥在我 们身边袁它对人们的生活带来了较为深远的影响遥 可以说袁大数 据技术把人们带到了一个新的纪元当中袁同时袁它的出现也为企 业或工厂的生产销售带来了巨大的便利条件遥 当前社会袁每一个 领域的正常运作都离不开数据的收集和整合袁 而数据的处理恰 恰又要依附野大数据冶遥 员援员 野大数据冶的背景介绍 近年来袁互联网技术发展突飞猛进袁人们的生活越来越依靠 网络信息袁这在很大程度上改善了人们的生活质量遥 无论是日常 的工作学习袁还是度假游玩袁人们已经开始越来越依赖网络袁在 某种程度上来说袁离开了互联网数据袁人们的生活就难以继续遥 人们将工作和生活的信息存储在互联网当中袁 利用互联网技术 对信息进行整合袁处理袁使其更加方便快捷遥 员援圆 野大数据冶的定义 至今为止袁中外的学者都没有给出野大数据冶的统一定义遥 当 前袁越来越多的人开始关注野大数据时代冶袁将其研究对象锁定在 对大数据的研究和分析上面袁 但不同学者的观点有所不同袁因 而袁对于野大数据冶的定义仁者见仁智者见智遥 总的来说袁野大数据冶给人们的生活带来了翻天覆地的变化袁 推动了国内外的产业革命遥 大数据不仅包括数据整合袁 数学模 型袁还包括对原始数据的分析和处理袁它是一种新兴的技术袁利 用互联网对数据信息进行收集和处理袁 从而提高人们的工作效 率袁减轻人们的工作负担遥 员援猿 野大数据技术冶的基本特征 对于野大数据技术冶来说袁它有其独特的个性和特征遥 第一袁 大数据的信息是十分庞大的袁在数据库当中袁技术人员会将成千 上万的数据信息进行收集和整理袁 并将它们统一地存放在对应 的数据系统当中遥 第二袁大数据的信息是多样化的遥 在数据库当 中存在着各式各样的信息袁 无论是日常生活信息袁 还是国防安 全尧生态系统信息袁都会分门别类地保存在数据库当中遥 第三袁大 数据具有较高的价值性遥 各行各业的人们的工作信息尧生活信息 都可以很好地反映在数据库系统当中袁 这对于数据的采集和处 理提供了很大的便利遥 第四袁大数据的高效性遥 在数据库系统中 进行检索的时候袁可以方便快捷地获取所需的有用信息袁这种时 效性有效提高了工作人员的工作效率遥 圆 档案数据挖掘技术 圆援员 档案数据挖掘技术基本概念 在日常的信息检索和整合处理的时候袁 管理档案的技术工 作人员会采用一些较为特殊的技术手段进行处理袁 这种特殊的 数据处理方式就是我们所说的档案数据挖掘技术遥 在传统的信 息检索处理中袁 档案管理工作人员往往需要花费很多的时间和 精力才能在众多的数据库当中挑选出合适的数据信息咱员暂遥数据时 代的到来给人们的生活带来了无限的便利条件袁当前袁档案管理 技术工人可以利用数据挖掘技术处理日常的工作袁 大大提高了 工作效率袁拓宽了档案数据挖掘技术的应用空间遥 圆援圆 档案数据挖掘技术的特点 一般来说袁 在大数据时代下的档案数据挖掘技术相对十分 复杂袁 它虽然在一定程度上改善了传统档案数据检索中常常遇 到的问题和困难袁但还需要建立合适的数学模型遥 没有合适的数 据数学模型袁档案技术人员很难进行下一步的工作袁也就无法对 中 国 管 理 信 息 化 悦hina Management Informationization 2018 年 1 月 第 21 卷第 1 期 Jan.袁2018 Vol援21袁No援1 132 .com.cn. All Rights Reserved. CHINA MANAGEMENT INFORMATIONIZ
内容简介    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用开发基础,并通过两个完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程。对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序开发员,也有很好的学习和参考价值。   Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。   全书结构合理、内容翔实、示例丰富、语言简洁。不仅适合作为高等院校本/专科计算机软件、信息系统、电子商务等相关专业的数据库课程教材,同时还适合作为各种数据库技术培训班的教材以及数据库开发人员的参考资料。 目录 前言 第1章 Oracle数据库概述 1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整性约束 1.2.7 联机事务处理和联机分析处理 1.2.8 数据仓库 1.3 Oracle基本术语 1.3.1 数据字典 1.3.2 数据文件 1.3.3 控制文件 1.3.4 日志文件 1.3.5 表空间 1.3.6 段 1.3.7 区 1.3.8 数据块 1.4 Oracle 11g的新特性 1.4.1 数据库管理部分 1.4.2 PL/SQL部分 1.4.3 其他部分 第2章 Oracle在Windows平台上的安装与配置 2.1 Oracle通用安装器 2.2 Oracle数据库软件的安装 2.3 Oracle数据库软件的卸载 2.3.1 停止所有的Oracle服务 2.3.2 用OUI卸载所有的Oracle组件 2.3.3 手动删除Oracle遗留的成分 2.4 Oracle的应用结构 2.4.1 单磁盘独立主机结构 2.4..2 多磁盘独立主机结构 2.4.3 多数据库独立主机结构 2.4.4 C/S结构 2.4.5 分布式结构 2.5 Oracle网络与防火墙 2.5.1 Oracle网络服务 2.5.2 配置Oracle网络环境 2.5.3 Oracle防火墙 第3章 SQL语言基础 3.1 SQL概述 3.1.1 SQL语言的功能 3.1.2 SQL的特点 3.1.3 SQL语句的编写规则 3.2 数据定义 3.2.1 CREATE 3.2.2 DROP 3.2.3 ALTER 3.3 数据查询 3.3.1 简单查询 3.3.2 WHERE子句 3.3.3 ORDER BY子句 3.3.4 GROUPBY子句 3.3.5 HAVING子句 3.3.6 多表连接查询 3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 3.6.4 转换类函数 3.6.5 聚集类函数 第4章 Oracle PL/SQL语言及编程 4.1 PL/SQL简介 4.1.1 PL/SQL的基本结构 4.1.2 PUSQL注释 4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 4.2 PL/SQL的游标 4.2.1 基本原理 4.2.2 显式游标 4.2.3 隐式游标 4.2.4 游标属性 4.2.5 游标变量 4.3 过程 4.3.1 创建过程 4.3.2 调用过程 4.3.3 删除过程 4.3.4 过程的参数类型及传递 4.4 函数 4.4.1 创建函数 4.4.2 调用函数 4.4.3 删除函数 4.5 程序包 4.5.1 基本原理 4.5.2 创建包 4.5.3 调用包 4.5.4 删除包 4.6 触发器 4.6.1 触发器的基本原理 4.6.2 创建触发器 4.6.3 执行触发器 4.6.4 删除触发器 第5章 熟悉SQL*Plus-Oracle数据库环境 5.1 进入和退出SQL*Plus环境 5.1.1 启动SQL*Plus 5.1.2 创建SQL*Plus快捷方式 5.1.3 退出SQL*Plus环境 5.2 SQL*Plus编辑器的编辑命令 5.2.1 编辑命令 5.2.2 保存命令 5.2.3 加入注释 5.2.4 运行命令 5.2.5 编写交互命令 5.2.6 使用绑定变量 5.2.7 跟踪语句 5.3 设置SQL*Plus环境 5.3.1 SHOW命令 5.3.2 SET命令 5.4 SQL*Plus环境介绍 5.4.1 存储SQL*Plus环境 5.4.2 假脱机输出 5.4.3 联机帮助 5.5 使用SQL*Plus格式化查询结果 5.5.1 格式化列 5.5.2 定义页与报告的标题和维数 5.5.3 存储和打印结果 第6章 Oracle的基本操作 6.1 Oracle的启动与关闭 6.1.1 启动Oracle数据库 6.1.2 关闭Oracle数据库 6.2 表的创建与改进 6.2.1 表的基本概念 6.2.2 表结构设计 6.2.3 表的创建 6.2.4 修改表结构 6.3 索引 6.3.1 索引的概念 6.3.2 创建索引 6.3.3 删除索引 6.4 视图 6.4.1 视图的概念 6.4.2 创建视图 6.4.3 视图更改 6.4.4 删除视图 6.5 数据操纵与数据查询 6.5.1 复制原表插入记录 6.5.2 使用视图 6.5.3 使用PL/SQL语言 6.5.4 数据查询 第7章 Oracle数据库管理操作 7.1 学会使用视图 7.1.1 增加安全性 7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录的唯一性 7.2.1 用键实现 7.2.2 创建唯一索引 7.2.3 使用序列实现 7.3 实现数据的完整性 7.3.1 域完整性 7.3.2 实体完整性 7.3.3 引用完整性 7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理”创建 角色 8.1.4 使用ALTERUSER语句修改 用户的默认角色 8.1.5 使用SET ROLE控制角色使用 8.2 回收权限 8.2.1 逐一回收 8.2.2 删除角色 8.2.3 删除数据库对象 8.2.4 删除用户 8.3 不同用户权限管理 8.4 管理对数据库对象的访问 8.4.1 使用用户口令 8.4.2 使用权限控制 8.4.3 使用数据库链接 8.4.4 使用配置文件 第9章 数据库空间管理 9.1 建立数据库时的空间设计 9.1.1 指定system表空间初值 9.1.2 设置其他表空间初值 9.2 在空间充足时的管理 9.2.1 使用数据字典动态监视 9.2.2 向表空间增加数据文件 9.3 解决空间不足的方法 9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史表空间 第10章 备份与恢复机制 10.1 备份与恢复的方法 10.2 使用数据泵进行逻辑备份和恢复 10.2.1 使用expdp导出数据 10.2.2 使用impdp导入数据 10.3 使用OEM中进行备份与恢复 10.3.1 通过导出文件来备份 10.3.2 通过导入来恢复 10.4 脱机备份与恢复 10.4.1 脱机备份 10.4.2 脱机恢复 10.5 联机备份与恢复 10.5.1 归档日志模式的设置 10.5.2 创建恢复目录所用的表空间 10.5.3 创建RMAN用户并授权 10.5.4 创建恢复目录 10.5.5 注册目标数据库 10.5.6 使用RMAN程序进行备份 10.5.7 使用RMAN程序进行恢复 10.6 自动备份与恢复 10.6.1 闪回数据库 10.6.2 闪回表 10.6.3 闪回回收站 10.6.4 闪回查询 10.6.5 闪回版本查询 10.6.6 闪回事务查询 10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询与删除 11.1.6 OEM中控制文件的管理 11.2 日志文件 11.2.1 日志文件及存储策略 11.2.2 增加日志组和日志成员 11.2.3 设置日志自动存档功能 11.2.4 监视日志工作 第12章 数据库控制 12.1 用事务控制操作 12.1.1 什么是事务 12.1.2 设置事务 12.1.3 事务提交 12.1.4 事务回滚 12.1.5 设置回退点 12.2 用锁控制并发存取 12.2.1 为何加锁 12.2.2 加锁的方法 第13章 Oracle数据库的安全管理 13.1 Oracle数据库安全性概述 13.1.1 Oracle 11g的安全性体系 13.1.2 Oracle 11g的安全性机制 13.2 用户管理 13.2.1 创建用户 13.2.2 修改用户 13.2.3 删除用户信息 13.2.4 查询用户 13.3 虚拟专用数据库 13.3.1 基于行的VPD 13.3.2 基于列的VPD 13.4 透明数据加密(’FDE) 13.4.1 创建Oracle钱夹 13.4.2 加密表 13.4.3 加密表空间 13.5 对备份进行加密 13.5.1 透明加密模式 13.5.2 基于密码的加密模式 13.5.3 混合加密模式 第14章 留言板系统 14.1 系统概述 14.1.1 留言板系统的应用背景 14.1.2 留言板系统的总体需求 14.1.3 留言板系统的功能分析 14.1.4 留言板系统的设计思路 14.2 系统功能模块设计 14.2.1 系统框架 14.2.2 系统功能模块划分 14.3 数据库设计 14.3.1 数据库需求分析 14.3.2 数据库概念结构设计 14.3.3 数据库逻辑结构设计 14.3.4 数据库表的创建 14.3.5 数据库的连接 14.4 系统主要功能模块的设计与实现 14.4.1 用户登录模块 14.4.2 添加留言模块 14.4.3 回复留言模块 14.4.4 访问留言人主页 14.4.5 删除留言 14.4.6 修改密码 14.5 本章小结 第15章 新闻发布系统 15.1 系统概述 15.1.1 新闻发布系统的应用背景 15.1.2 新闻发布系统的总体需求 15.1.3 新闻发布系统的功能分析 15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 15.4 网站总体框架 15.4.1 文件布局 15.4.2 网站首页的运行结果 15.5 系统后台主要功能模块的设计与实现 15.5.1 登录模块设计 15.5.2 管理员维护模块设计 15.5.3 新闻管理模块设计 15.6 系统前台主要功能模块的设计与实现 15.6.1 今日新闻的显示 15.6.2 查找新闻 15.6.3 查看新闻人物和投票 15.7 本章小结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值