数据仓库Oracle系统概念_第1页
数据仓库Oracle系统概念_第2页
数据仓库Oracle系统概念_第3页
数据仓库Oracle系统概念_第4页
数据仓库Oracle系统概念_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle8数据库系统改进表存取性能-索引与数据簇分区选件-分区表与分区索引并行选件-SQL语句并行处理新数据类型(多媒体数据类型)数据仓库Oracle系统概念第1页索引数据仓库Oracle系统概念第2页索引在数据库应用中,性能主要取决于存取表中数据速度。索引能够快速找到待定表统计。索引维护与应用:索引对用户透明当有索引且能提升应用性能时,Oracle自动使用索引。Oracle自动更新索引以使其与表同时。索引类型B树索引(系统自动为主码和唯一完整性约束建立)位图索引索引表,分区索引,反向键值索引…。数据仓库Oracle系统概念第3页SMITHALLENWARDJONESMARTINBLAKECLARKSCOTTKINGTURNERADAMSJAMESFORDMILLERB树索引createindex索引名on表名(列名)

ADAMSALLENBLAKECLARKFORDJAMESJONESKINGMARTINMILLERSCOTTSMITHTURNERWARDMILLERTURNERBLAKEJAMESKINGROWID数据仓库Oracle系统概念第4页对于索引列每一个可能值,都有独立位图项。在位图项中每一位代表一个可能ROWID,为1意味着该行包含关键值。比如:LOC列(3种取值)北京(010011)天津(100000)上海(001100)第二个统计第一个统计位图函数能够将位位置转换为实际ROWID。经过位图索引合并简化查询条件,从而过滤被访问数据集合。位图索引d01合资d02合资d03合资d04外企d05国企d06合资dnotype天津北京上海上海北京北京loc数据仓库Oracle系统概念第5页

selectdnofromdepwheretype=‘合资’andlocin(‘北京’,‘上海’);合资北京上海 1000 1 1 01 d02 1 011 d03 0AND 0OR1=0 0 100 1 10 1 d06 位图索引例子数据仓库Oracle系统概念第6页位图索引建立位图索引;createbitmapindexdep_indexondep(type);createbitmapindexdep_indexondep(doc);位图索引适合用于列值取值不多情况、索引列含有越多值,位图项就越多,需要存放索引空间也越大。因为Oracle必须展开一个位图索引方式,所以不适于经常插入或更新数据应用。位图索引经典地用于决议系统与数据仓库应用中查询数据。数据仓库Oracle系统概念第7页簇(聚集)索引当cluster建立后,必须建立簇索引后,被聚集表才能访问。系统不会自动为簇建索引。例:createclusertdep_emp(depnochar(3));createtabledep(dno..,dname..,…)clusterdep_emp(dno);createtableemp(emp…,…dno...)clusterdep_emp(dno);createindexdep_emp_idxonclusterdep_emp;数据仓库Oracle系统概念第8页簇(聚集)索引簇索引表存放e01王山男d01佳月企业8200e02张丽女d01e10孙军男d02运通企业2034d03安合物业6800来自emp来自depclusterkey数据仓库Oracle系统概念第9页分区选件数据仓库Oracle系统概念第10页分区选件分区原因表和索引快速膨胀数据仓库和决议支持需要什么是分区大表或索引能够拆分为小易于管理数据片断,比如将销售表按销售日期拆分成一系列数据片断其中每一个片断称为一个分区(partition)被分区表称为分区表。数据仓库Oracle系统概念第11页数据仓库概念数据仓库就是面向主题、集成、稳定、不一样时间数据集合,用以支持经营管理中决议制订过程。主题是一个在较高层次将数据归类标准,每一个主题对应一个宏观分析领域数据仓库集成特征是指在数据进入数据仓库之前,必须经过数据加工和集成,统一原始数据中矛盾之处,将原始数据结构做一个从面向应用向面向主题转变。数据仓库稳定性是指数据仓库反应是历史数据内容,而不是日常事务处理产生数据,进入数据仓库后是极少或根本不修改数据仓库Oracle系统概念第12页数据仓库概念数据仓库最根本特点是物理地存放数据。这些数据并不是最新、专有,而是起源于其它数据库。数据仓库建立并不是要取代数据库,它要建立在一个较全方面和完善信息应用基础上,用于支持高层决议分析。而事务处理数据库在企业信息环境中负担是日常操作性任务。数据仓库是数据库技术一个新应用,而且到当前为止,数据仓库还是用数据库管理系统来管理其中数据。数据仓库Oracle系统概念第13页分区只有表和索引能够分区。分区对于应用人员和用户是透明。分区能够控制数据存放地点:将数据分散存放在多个磁盘上。将经常使用数据放在快速磁盘上。分区能够有不一样物理属性:分区能够有不一样存放参数(tablespace,pctfree,pctused,等等)分区表或索引能够跨表空间存放,分区不能够。同一模式对象全部分区必须含有相同逻辑属性:相同列,数据类型,约束。数据仓库Oracle系统概念第14页分区作用增加了数据可用性不一样分区能够跨表空间存放,能够进行分区级备份和恢复。不一样分区能够跨表空间存放,降低了磁盘损坏带来数据不可用性。不可用分区不会影响到对其它分区查询和维护提升了系统性能服务器能够进行智能分区检测跳过与查询无关分区访问跳过不在线分区在物理设备上负载均衡将数据分散存放在多个磁盘上,实现并行存取数据仓库Oracle系统概念第15页分区关键字分区关键字决定了划分分区依据只能是标准数据类型:Number,Date,Character(VARCHAR2,CHAR)能够是多至16个列联合对关键字修改不能造成统计在分区之间移动分区数据范围LESSTHAN子句指定每个分区上限值。除第一个分区外,每一个分区都有一个隐含下限值(即前一个分区上限值)。最终一个分区上限值能够设定为MAXVALUE必须按照升序排列来申明分区。数据仓库Oracle系统概念第16页建立分区表例1CREATETABLEsales97(acct_nonumber(5),product_idnumber(12),qtynumber(8),sales_datedate)PARTITIONBYRANGE(sales_date)(PARTITIONp1VALUESLESSTHAN(to_date('01-4月-1997','dd-mon-yyyy'))TABLESPACEp1_space,PARTITIONp2VALUESLESSTHAN(to_date('01-7月-1997','dd-mon-yyyy'))TABLESPACEp2_space,PARTITIONp3VALUESLESSTHAN(to_date('01-10月-1997','dd-mon-yyyy'))TABLESPACEp3_space,PARTITIONp4VALUESLESSTHAN(MAXVALUE));数据仓库Oracle系统概念第17页建立分区表例2CREATETABLEstu_score(stu_numNUMBER(5),scorenumbernotnull,test_yearnumbernotnull,test_monthnumbernotnull,test_daynumbernotnull)PARTITIONBYRANGE(test_year,test_month,test_day)(PARTITIONscore_q1VALUESLESSTHAN(1997,07,01)TABLESPACEeducation1,PARTITIONscore_q2VALUESLESSTHAN(1998,02,01)TABLESPACEeducation2)数据仓库Oracle系统概念第18页查看分区情况查分区表分区数selectpartition_countfromuser_part_tableswheretable_name='SALES97'PARTITION_COUNT

4查分区表分区划分情况情况selectpartition_name,tablespace_name,partition_position,high_valuefromuser_tab_partitionswheretable_name='STU_SCORE’;SCORE_Q1EDUCATION111997,07,01SCORE_Q2EDUCACION221998,02,01数据仓库Oracle系统概念第19页建立分区注意事项设置分区界限VALUESLESSTHAN定义了分区上界VALUESLESSTHAN必须取值Number,Character,DateMAXVALUE定义分区最上界任何正当存放子句均可用于分区(tablespace,pctfree...)没有为单独分区设置存放子句时,使用基表存放子句在分区表中不能包含LONG类型列。系统为每一分区设置一个隐含CHECK约束(分区最高限制是MAXVALUE时除外)。聚集表不能分区数据仓库Oracle系统概念第20页分区表访问分区对表名扩展:[模式名.]表名[PARTITION(分区名)]例:SELECT*FROMsales97WHEREqty>1000ANDsales_dateBETWEEN‘01-4月-97’AND‘30-6月-97’;指定分区SELECT*FROMsales97PARTITION(p2) WHEREqty>1000;INSERTINTOsales97PARTITION(p4) SELECT*FROMlastest_data;注意:分区表名不兼容性数据仓库Oracle系统概念第21页分区表访问分区值检验insertintostu_scorevalues(98007,50,1998,2,1);错误位于第1行:ORA-14400:插入分区键超出最高正当分区键。使用别名select*fromstu_scorepartition(score_q1)q1whereq1.score>85建立视图createviewsco_q1asselect*fromstu_scorepartition(score_q1);数据仓库Oracle系统概念第22页分区索引普通索引(非分区索引)CREATEINDEXsales97_idx ONsales97(sales_date);分区索引—索引分区只有当索引本身足够大且适于分区时,索引分区才是有意义。索引分区可提升可用性,提供并行索引扫描,提升性能。选择分区索引主列(索引列)与选择非分区索引主列没有区分(依据where子句应用)。数据仓库Oracle系统概念第23页分区索引策略一旦决定为表创建一个分区索引,必须决定怎样组织、划分该索引分区。两种选择:全局分区索引(GLOBAL):按自定索引关键字来分区,对等分区索引,也称局部索引(LOCAL):创建与分区表各分区一一对应索引分区GLOBAL分区表分区表非分区表LOCAL分区索引对等分区索引非分区索引数据仓库Oracle系统概念第24页对等分区对象定义:以下属性完全一样两个模式对象有相同分区关键字相同数量分区相同分区界限使用对等分区优点:对等分区对象是主、细表。全部对应主细统计在对应数据分区中,可很快完成两个表连接。在这种情况下,磁盘存取降低类似于使用数据簇(聚集)来“予连接”主细表。对等分区对象是表和索引::

当查询时,特定索引分区中全部键值只引用对应表分区中统计。

当一个分区不可用时只有对应分区索引不可用,不影响其它分区及分区索引,所以提升数据可用性。

当更新一个表分区数据时,只须调整对应分区索引。数据仓库Oracle系统概念第25页分区表与对等分区索引建分区表CREATETABLEsales97 (acct_noNUMBER(5),product_idNUMBER(12), qtyNUMBER(8),sales_dateDATE)PARTITIONBYRANGE(sales_date) (PARTITIONq1VALUESLESSTHAN…, PARTITIONq2VALUESLESSTHAN…, PARTITIONq3VALUESLESSTHAN…, PARTITIONq4VALUESLESSTHAN….);建分区索引与对应分区表组成对等分区对象,。使用LOCAL属性CREATEINDEXsales_idxONsales97(sales_date) LOCAL(PARTITIONindex_q1,PARTITIONindex_q2, PARTITIONindex_q3,PARTITIONindex_q4);数据仓库Oracle系统概念第26页全局分区索引与分区表不组成对等分区对象,按索引码分区,而不是按表分区关键字使用GLOBAL全局分区索引能够包含对应表全部分区键值,在OLTP环境下提供比分区索引更加好性能。CREATEINDEXproduct_idxONsales97(product_id)GLOBALPARTITIONBYRANGE(product_id)(PARTITIONpidx1VALUESLESSTHAN(100)tablespaceusers,PARTITIONpidx2VALUESLESSTHAN(200)tablespacestudents,PARTITIONpidx3VALUESLESSTHAN(MAXVALUE));数据仓库Oracle系统概念第27页分区索引例对等分区索引(local)createindexstu_idx(97,7,198,2,1)onstu_score(test_year,test_month,test_day)local(partitionindex_q1,partitionindex_q2);全局分区索引(global)createindexstu_g_idxonstu_score(stu_num)globalpartitionbyrange(stu_num)(partitionpidx1valueslessthan(95000)tablespaceusers,partitionpidx2valueslessthan(96000)tablespacestudents,partitionpidx3valueslessthan(maxvalue));数据仓库Oracle系统概念第28页查看分区索引selectpartition_name,high_value,statusfromuser_ind_partitionswhereindex_name='STU_IDX';

INDEX_Q11997,07,01USABLEINDEX_Q21998,02,01USABLEselectpartition_name,high_value,statusfromuser_ind_partitionswhereindex_name=‘STU_G_IDX’;

PIDX195000USABLEPIDX296000USABLEPIDX3MAXVALUEUSABLE数据仓库Oracle系统概念第29页分区表管理分区可独立管理,分区操作仅在单一分区上发生作用。分区级操作:altertable…Add分区altertable…Drop分区…modify分区…Move分区…Split分区…Rename分区…Exchange分区…Imported/Exported…Load分区数据数据仓库Oracle系统概念第30页分区索引管理分区索引管理类似于分区表管理alterindexdroppartition(只对global索引)alterindexsplitpartition(只对global索引)alterindexrenamepartitionalterindexrebuildpartitionalterindexmodifypartitionalterindexunusablealterindexstu_idxrebuildpartitionindex_q1;alterindexstu_g_idxrebuildpartitionpidx1;数据仓库Oracle系统概念第31页分区表维护-增加分区ALTERTABLE

stu_score

ADDPARTITION

score_q3 VALUESLESSTHAN(1998,07,01) TABLESPACEstudents;惯用来维护历史数据,用来增加另外时间段数据。用于在分区表高端增加分区假如增加分区在分区表中间,或最终分区边界是MAXVALUE时在高端增加分区,要用其它方法(拆分分区)假如分区表有对等分区索引,则分区索引会随之增加(分区索引名用表分区名)。数据仓库Oracle系统概念第32页分区索引自动调整selectpartition_name,high_value,statusfromuser_ind_partitionswhereindex_name='STU_IDX';

INDEX_Q11997,07,01USABLEINDEX_Q21998,02,01USABLESCORE_Q31998,07,01USABLE(更名之前)索引更名:alterindexstu_idxrenamepartitionscore_q3toindex_q3;select…whereindex_name=‘STU_G_IDX’;

PIDX195000USABLEPIDX296000USABLE没有改变PIDX3MAXVALUEUSABLE数据仓库Oracle系统概念第33页分区表维护—删除分区ALTERTABLEstu_scoreDROPPARTITIONscore_q3;用于删除历史数据不想删除分区中数据时,应首先将分区数据合并到邻近分区对应分区索引将被删除全局索引变为不可用(需要重构)数据仓库Oracle系统概念第34页删除分区—索引selectpartition_name,high_value,statusfromuser_ind_partitionswhereindex_name='STU_IDX';

INDEX_Q11997,07,01USABLEINDEX_Q21998,02,01USABLEselectpartition_name,high_value,statusfromuser_ind_partitionswhereindex_name=‘STU_G_IDX’;

PIDX195000UNUSABLEPIDX296000UNUSABLEPIDX3MAXVALUEUNUSABLE数据仓库Oracle系统概念第35页分区表操作—删除分区统计ALTERTABLEstu_scoreTRUNCATEPARTITIONscore_q3;也能够使用SQL语句中Delete删除分区中数据,但会比较慢。表中数据清空以后,对等分区索引会自动改变。非对等分区索引和普通索引变为不可用状态。

SCORE_Q2STUDENTS1998,02,01表分区SCORE_Q3STUDENTS1998,07,01SCORE_Q1USERS1997,07,01

INDEX_Q21998,02,01USABLE索引分区INDEX_Q11997,07,01USABLEINDEX_Q31998,07,01USABLE

PIDX195000UNUSABLE全局分区PIDX296000UNUSABLEPIDX3MAXVALUEUNUSABLE数据仓库Oracle系统概念第36页索引不可用可能使索引不可用(IU)操作去除统计分区操作(TRUNCATEPARTITION)跳过局部索引(LOCAL)Import对数据库直接SQL*LOADER改变ROWID分区操作(MOVE/SPLITPARTITION)假如索引分区被标识为IU,用户发出使用该索引分区SELECT或DML语句时,将得到错误提醒。这时需要重建索引。select*fromstu_scorewherestu_num=950001错误位于第1行:ORA-01502:索引‘WXY.STU_G_IDX’或这类索引分区是在不可使用状态数据仓库Oracle系统概念第37页重建索引alterindexrebuildpartition可认为local或global分区索引重建某个分区。例alterindexstu_g_idxrebuildpartitionpidx1;alterindexstu_g_idxrebuildpartitionpidx2;alterindexstu_g_idxrebuildpartitionpidx3;重建索引还可以改变表空间等其他存放属性。alterindexstu_g_idxrebuildpartitionpidx1tablespacestudent2数据仓库Oracle系统概念第38页分区表维护—修改分区修改分区物理属性altertablestu_scoremodifypartitionscore_q1storage(maxextents50);置分区表对应局部索引为不可用状态。altertablestu_scoremodifypartitionscore_q1unusablelocalindexes;,用于插入和转入数据。为使局部索引可用,必须重建索引分区重建已被标识为iu局部分区索引altertablestu_scoremodifypartitionscore_q1rebuildunusablelocalindexes数据仓库Oracle系统概念第39页分区表操作—重命名分区修改分区名ALTERTABLEstu_scoreRENAMEPARTITIONscore_q3toscore_qq3;附:修改表名ALTERTABLEstu_scoreRENAMEtostudent_score;数据仓库Oracle系统概念第40页分区表操作—移动分区ALTERTABLEMOVEPARTITION移动表分区到另外一个数据段上。新数据段产生,旧数据段删除(可在原表空间,也可移到其它表空间。用于将分区移动到其它设备上,或用于降低分区碎片。对应分区索引和其它类型索引都应该重建。altertablestu_scoremovepartitionscore_q1<tablespaceeducation>;数据仓库Oracle系统概念第41页分区表操作—拆分分区ALTERTABLESPLITPARTITION将分区在分区范围内拆分为两个分区创建了两个分区,每一个新分区有单独数据段,新物理属性,旧分区被删除对应局部索引也被SPLIT,并被标识为IU全局索引和非分区索引被标识为IUaltertablestu_scoresplitpartitionscore_q2at(1997,10,1)into(partitionscore_q21,partitionscore_q22);

分区名分区上限值分区索引

SCORE_Q11997,07,01INDEX_Q1SCORE_Q211997,10,01SCORE_Q21SCORE_Q221998,02,01SCORE_Q22SCORE_Q31998,07,01INDEX_Q3数据仓库Oracle系统概念第42页分区表操作—交换数据ALTERTABLEEXCHANGEPARTITION用于非分区表和分区表一个分区之间双向交换。能够交换数据和索引段物理属性不变能够带withvalidation或withoutvalidation。当数据不在分区范围时,WITHVALIDATION将报错。WITHOUTVALIDATION假定数据均在分区范围。例:altertablestu_scoreexchangepartitionscore_q1withtablestu_score97withoutvalidation;数据仓库Oracle系统概念第43页分区表操作—合并分区使用IMPORT/EXPORT能够将邻近分区合并为一个分区使用Export从低层分区取出要合并数据使用SQL语句DROP已经Exported分区使用Import将取出数据合并到邻近分区使用SQL语句实现分区合并insertintostu_tempselect*fromstu_scorepartition(score_q1);altertablestu_scoredroppartitionscore_q1;insertintostu_scoreselect*fromstu_temp;数据仓库Oracle系统概念第44页SQL语句并行处理数据仓库Oracle系统概念第45页什么是Oracle并行并行服务器选项允许多个数据库实例运行在一个涣散耦合多处理器系统(或集群系统)不一样接点上,同时存取一个Oracle物理数据库,从而为用户提供了各种数据库存取路径。并行、容错并行SQL语句处理将一个SQL语句(如查询)分为几个子任务,然后开启多个进程并行处理子任务,并将结果快速返回给用户。利用多进程、多CPU,缩短语句执行时间。SQL语句并行执行不需要并行服务器选项。数据仓库Oracle系统概念第46页串行处理扫描emp表扫描dep表连接排序CPUCPUCPUCPU查询结果Selectename,age,dnamefromemp,depwhereemp.dno=dep.dnoorderbyage;单个进程执行一条SQL语句数据仓库Oracle系统概念第47页SQL语句并行处理Selectename,age,dnamefromemp,depwhereemp.dno=dep.dnoorderbyage;扫描emp表扫描dep表连接排序CPUCPUCPUCPU查询结果多个进程执行一条SQL语句数据仓库Oracle系统概念第48页并行处理条件软件环境—并行SQL处理系统。一个并行SQL处理系统接收一个SQL请求,智能地将它分解为几个较小能够并行子任务,然后使用全部空闲CPU并行处理这些子任务,以到达缩短总处理时间目标。Oracle服务器使用一个特殊操作系统进程结构,并行处理对数据库一些请求。硬件—多CPU系统数据仓库Oracle系统概念第49页并行SQL语句硬件环境SMP(symmetricmultiprocessor)对称多处理机CPUCPUCPU内存数据仓库Oracle系统概念第50页能够被并行处理操作select(扫描表),update,deleteinsert…select连接操作(join)聚合操作(统计)notin,groupby,orderbyselectdistinct,unioncreatetable…asselectcreateindex,rebuildindexsplitpartiton,movepartition,rebuildindexpartition从SQL语句中调用PL/SQL函数。数据仓库Oracle系统概念第51页并行机制-协调进程一个协调进程(coordinator)调度多个隶属进程(slaveprocesses)并行执行SQL语句。Select*fromemp;串行进程Emp表Select*fromemp;协调进程Emp表并行进程数据仓库Oracle系统概念第52页并行机制并行优化器当用户执行SQL语句时,优化器确定是否以并行方式执行语句,以及每一个操作并行度是多少。并行进程池在开启一个数据库实例后,Oracle建立一个并行进程池。当开始并行操作时,协调进程从并行池中取得并行进程资源,并把它们分配给相关操作。实施并行步骤SQL语句前台进程变为并行协调进程。协调进程依据并行度从并行池中取得所需数量隶属并行进程。系统将SQL语句化为一系列操作,每个操作都尽可能地并行执行。当语句处理完成,协调进程返回结果给用户进程,并释放隶属并行进程(回进程池)。数据仓库Oracle系统概念第53页并行方法块并行按ROWID范围并行适合用于查询(包含select语句和在DML和DCL中子查询)。适合用于movesplit分区,rebuild分区….适合用于分区/非分区表和索引。分区并行适合用于对分区表和分区索引操作。隶属进程并行适合用于往非分区表中插入数据。插入统计时,将统计分摊到各个隶属进程分别插入因新统计还没有rowid,所以无法块并行。数据仓库Oracle系统概念第54页并行计划优化器确定了一条语句执行计划协调器决定计划中每一个操作并行方法块并行、分区并行…优化器确定执行计划中操作执行次序

语句数据流操作之间并行需要其它操作输出操作称为父操作父操作

子操作:消费者生产者两种并行一个操作并行intro-operation并行数据流中不一样操作之间并行inter-operation并行数据仓库Oracle系统概念第55页并行模式Select*fromemporderbyename;(无索引)假如并行度为4,意味着对于任何给定操作,能够激活4个并行进程。实际上8个进程执行该语句。Introinterintro用户进程协调进程A-GH-MN-ST-ZscanscanscanscanEmp表数据仓库Oracle系统概念第56页并行度指定为执行一个单一操作而开启进程数叫并行度语句级指定PARALLEL子句PARALLEL(DEGREE4)语句提醒hint/*+parallel(emp,3)*/ 表和索引级在建表和索引语句中指定。隐含指定基于CPU数、存放表设备(磁盘)数、分区数等数据仓库Oracle系统概念第57页并行度确定并行协调程序决定并行度依据:检验在SQL语句中hint或parallel子句。检验在表和索引定义语句中指定。使用隐含并行度指定。一旦确定并行度,它将成为相关操作并行度,即协调进程为一操作申请并行进程数。而实际进程数还取决于进程池中可用资源。数据仓库Oracle系统概念第58页并行子句语法Parallel子句语法(在DDL语句中使用)用于createtable,createindex,createclusteraltertable,alterindex…rebuild,alterclusteralterdatabase…recoverhint指定(在DML语句中使用)/*+parallel(表名,并行度)*/noparallellparallell()degreeinstancesintegerdefault数据仓库Oracle系统概念第59页并行执行SQL语句例以并行度4同时执行扫描和更新

update/*+parallel(emp,4)*/emp setsal=sal+100whereage>50;以并行度3执行插入语句insert/*+parallel(emp2,3)*/ intoemp2 select/*+parallel(emp1,5)*/fromemp1;以并行度4执行删除语句delete/*+parallel(tab1,4)*/fromtab1 wherecol1>50andcol1<10000;数据仓库Oracle系统概念第60页并行执行SQL语句例在DDL语句中指定parallel子句(并行度为5)该命令执行时使用10个进程,5个用于扫描emp1表,5个用于向emp2表中添加数据。CREATETABLEemp2 PARALLEL(DEGREE5) ASSELECT*FROMemp1WHEREdeptno=10;下面命令使用10个进程结构索引,5个用于扫描EMP表,另外5个用于向EMP_IDX中添加数据CREATEINDEXemp_idx ONemp(ename)PARALLEL(DEGREE5);数据仓库Oracle系统概念第61页并行度确定例在DML语句(查询)中指定并行度2select/*+parallel(emp22)*/*fromemp2whereage>50;采取表定义隐含并行度值(5)select*fromemp2whereage>50;采取系统隐含值select*fromemp1whereage>50;PARALLEL(DEGREE1INSTANCES1)等同于NOPARALLELdegree单实例中并行instances实例间并行(没有并行服务器时忽略)数据仓库Oracle系统概念第62页两种并行度分别在并行服务器5个实例上各开启5个恢复进程,共25个进程。ALTERDATABASERECOVER TABLESPACEbinky PARALLEL(DEGREE5INSTANCES5);改变EMP1表预定义并行度ALTERTABLEemp1 PARALLEL(DEGREE2);数据仓库Oracle系统概念第63页并行DML模式为使并行DML生效,会话需要PARALLELDML模式(特殊锁、空间分配等)ALTERSESSIONENABLEPARALLELDML;一个事物能够包含多个修改不一样表并行DML,但对于某个表作了并行DML修改后,不能在此事务中再对该表作任何形式访问。查询(包含DML语句中子查询)和DDL语句不受此影响。其它约束在并行DML操作中不支持触发器对本身引用和连带删除必须被禁止并行插入删除和修改不支持包含对象类型表不支持聚集表复制功效中不支持并行DML数据仓库Oracle系统概念第64页并行工作平衡适当指定并行度能够优化性能、平衡并行操作例:emp表有10个分区并行度=1并行度=5并行度=10并行度=9并行度=4处理时间不等于分区数/进程数数据仓库Oracle系统概念第65页大型对象-新数据类型

支持多媒体数据数据仓库Oracle系统概念第66页大型对象-多媒体数据类型三种类型LOB二进制LOB(BLOB):无结构二进制大对象字符LOB(CLOB):字符数据(不支持变宽字符集)二进制文件(BFILE):最大长度由OS定对于LOB类型数据,表列值为一定位器值,标明数据存放位置:BLOB和CLOB:指向一个分开由数据库分配保留LOB位置。BFILE:指向一个外部文件。LOB数据没有必要与普通数据存放在一起。仅在需要时才访问它们。LOB能够是对象类型属性数据仓库Oracle系统概念第67页每行只能有一个LONGLONG在线存放LONG<=2GLONG不能复制LONG不能统计日志OCI能够处理该类型数据。varchar24k字符比较每行能够包含多个LOBLOB能够离线存放LOB<=4GLOB能够复制LOB操作能够统计在日志中

LOB与LONG[RAW]比较数据仓库Oracle系统概念第68页多媒体数据类型应用(LOB例)CREATETABLEperson( pnameVARCHAR2(10), resumeCLOB, photoBLOB, homepageBFILE) LOB(resume,photo)STOREAS(TABLESPACEresume_spaceSTORAGE(INITIAL5mNEXT1mPCTINCREASE0));对LOB数据所使用空间另行指定存放参数LOB子句数据仓库Oracle系统概念第69页多媒体数据类型(LOB设置)CHUNK尺寸决定访问LOB数据时一次处理数据块个数假如LOB以大数据量读写时,将CHUNK设大假如LOB以小数据量读写时,将CHUNK设小假如LOB被经常访问,设置CACHE,缺省为NOCACHECREATETABLEperson_tab( …)LOB(resume,picture)STOREAS(TABLESPACElob_tablespaceCHUNK4 NOCACHE);数据仓库Oracle系统概念第70页初始化LOB数据Insertintopersonvalues(‘张大年’,empty_clob(),empty_blob(),bfilename(‘person_dir’,’person.html’));函数empty_clob()和empty_blob()返回一个空LOB定位器值(与空值不一样)。函数bfilename(逻辑目录名,文件名)返回一个bfile定位器值,它与一个位于服务器文件系统中物理文件相连。建立逻辑目录名(数据库对象):createdirectoryperson_diras‘/user/person’;数据仓库Oracle系统概念第71页BFILE与逻辑目录使用BFILE将LOB存放在数据库外BFILE只读,只能在ORACLE外创建和更新经过数据库对象DIRECTORY定位外部文件用户对于DIRECTORY访问需经过授权(不是在某个模式下建目录对象)。创建DIRECTORY对象时:不检验实际目录、文件是否存在。应先创建对应物理路径不要将DIRECTORY设置在ORACLE数据文件目录ORACLE必须对该目录有读权限。严格控制CREATE或DROPANYDIRECTORY权限授予数据仓库Oracle系统概念第72页BFILE与逻辑目录以管理员帐号执行以下语句CREATEDIRECTORYmydirAS‘/home/image’;GRANTREADONDIRECTORYmydirtouesr01;以user01帐号执行以下语句CREATETABLEmytable(idNUMBER,image_colBFILE);INSERTINTOmytableVALUES(139,filename(‘mydir’,‘world.gif’));数据仓库Oracle系统概念第73页复制LOB数据在SQL语句中复制LOB数据Insertintopersonselect'王中里',photo,homepagefrompersonwherepname=‘张大年’;在SQL*Plus平台上只能对普通数据I/OSQL>select*fromperson;列或属性类型无法经过SQL*Plus显示数据仓库Oracle系统概念第74页更新LOB数据自动加行锁不适合用于LOB数据。要读加锁selectpnamefrompersonwherepname=‘张大年’forupdate;updatepersonsetresume=‘新简历…’wherepname=‘张大年’;updatepersonsethomepage=bfilename(‘person_dir’,’zhang.html’)wherepname=‘张大年’;排他锁仅在更新内部存放LOB数据时必要数据仓库Oracle系统概念第75页处理LOB数据接口ORACLE提供大量操纵LOB数据接口DBMS_LOB包—包含一系列函数和过程OCI也包含大量API检验LOB数据函数和过程COMPARE比较两个LOB数据GETLENGTH执行sqllength函数INSTR查找字符串位置,执行sqlinstr函数READ读入一段LOB值SUBSTRLOB数据取子串,执行sqlsubstr函数数据仓库Oracle系统概念第76页处理LOB数据接口改变LOB数据函数和过程APPEND把一个LOB数据追加到另一LOB数据后COPY将一个LOB值指定部分拷贝到另一LOB列ERASE删除部分或全部LOB值LOADFROMFIL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论