预览模式: 普通 | 列表

oracle培训笔记

下载文件oracle培训18天老师笔记.rar (491.91 KB , 下载:341次)

Oracle的物化视图

Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。

物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。创建物化视图时可以指定多种选项,下面对几种主要的选择进行简单说明:

创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。

查询重写(Query Rewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。

刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:ON DEMAND和ON COMMIT。ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种:FAST、COMPLETE、FORCE和NEVE*。**ST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行

[阅读全文]

Oracle表介绍--簇表

簇和簇表
    簇其实就是一组表,是一组共享相同数据块的多个表组成。将经常一起使用的表组合在一起成簇可以提高处理效率。
    在一个簇中的表就叫做簇表。建立顺序是:簇→簇表→数据→簇索引
    1、创建簇的格式
    CREATE CLUSTER cluster_name
    (column date_type [,column datatype]...)
    [PCTUSED 40 | integer] [PCTFREE 10 | integer]
    [SIZE integer]
    [INITRANS 1 | integer] [MAXTRANS 255 | integer]
    [TABLESPACE tablespace]
    [STORAGE storage]
    SIZE:指定估计平均簇键,以及与其相关的行所需的字节数。
    2、创建簇
    createclustermy_clu (deptno number)    pctused60    pctfree10    size1024    tablespaceusers    storage(      initial128k      next128k      minextents2      maxextents20

    );

    3、创建簇表
&

[阅读全文]

Oracle表介绍--分区表

分区表
    在大型应用中,数据表可能会非常巨大,为了使用户在大量数据读写、查询中速度更快,可使用分区技术。
    分区表就是把非常大的表分割成较小的片段(分区),在实际应用中在独立分区上操作各个部分,而对用户透明。
    分区表有5中类型:范围分区散列分区列表分区组合范围散列分区组合范围列表分区
    1、范围分区(range)
    对数据表中某个值的范围进行分区,格式如下:
    createtablet1_trans      (        trans_id number,        item varchar2(300),        trans_date date,        trans_state varchar2(10)       )      partitionbyrange(trans_id)      (        partitionpart_01 valueslessthan(10000) tablespacewxq_tbs,        partitionpart_02 valueslessthan(30000) tablespaceusers,        partitionpart_03 valueslessthan(maxvalue) ta

[阅读全文]

Oracle表介绍--对象表(二)

继承
    1、创建父类型
    createorreplacetypeperson asobject      (        NAMEvarchar2(10),        SEX char(2),        BIRTHDATE date,        PLACE varchar2(100),        memberfunctionget_name returnvarchar2      ) notfinal; --必须注明,默认为final          createorreplacetypebodyperson is      memberfunctionget_name returnvarchar2is        begin          returnself.name;        endget_name;

    end;

    2、创建person的子类
    createorreplacetypeemployee underperson      (       

[阅读全文]

Oracle表介绍--对象表(一)

对象
    在Oracle中把对象作为一种数据类型object,不但可以包含基本的数据类型集合,还可以为其定义函数过程作为其方法。
    创建格式如下:
    createorreplacetype person asobject      (        NAMEvarchar2(10),        SEX char(2),        BIRTHDATE date,        PLACE varchar2(100)

      );

    注意:不能在数据类型中定义以下类型:
         1.LONG、LONG RAW
         2.ROWID
         3.PL/SQL特定类型(BINARY_INTEGER、BOOLEAN、%TYPE、%ROWTYPE)
         4.程序包中自定义的数据类型
构造函数
    使用之前创建的对象建立构造函数:
    declare      person_one person;    begin      person_one:=person('张三','',

[阅读全文]

Oracle临时表

Oracle临时表只需要创建一次,其结构总是有效的,每次使用后被清空的只是表里的数据。
    Oracle的临时表还保证了多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性;
    Oracle临时表分为两种,如下:
    createglobaltemporarytablet66 (      IDnumber,      NAMEvarchar2(20),      OP_DATE date)

    oncommitdeleterows;--数据提交时清空表

    createglobaltemporarytablet66 (      IDnumber,      NAMEvarchar2(20),      OP_DATE date)

    oncommitpreserverows;--会话结束时清空表

临时表的存储空间

    selectowner,table_name,tablespace_name fromdba_tables wheretable_name='T66';

    由上面的查询发现,创建的临时表T66不在默认的表空间中储存
    SQL> alter tablespace temp offline;     
    表空间已更改。
    SQL> insert into 

[阅读全文]

Oracle表介绍--索引组织表

 索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的索引。索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。
    索引组织表的创建格式如下:
    createtableindexTable(      IDvarchar2(10),      NAMEvarchar2(20),      constraintpk_id primarykey(ID)      )

    organizationindex;

    注意两点:

    ● 创建IOT时,必须要设定主键,否则报错。

    ● 索引组织表实际上将所有数据都放入了索引中。

索引组织表属性

    1、OVERFLOW子句(行溢出)

    因为所有数据都放入索引,所以当表的数据量很大时,会降低索引组织表的查询性能。此时设置溢出段将主键和溢出数据分开来存储以提高效率。溢出段的设置有两种格式:

      PCTTHRESHOLD n :制定一个数据块的百分比,当行数据占用大小超出时,该行的其他列数据放入溢出段

      INCLUDING column_name :指定列之前的列都放入索引块,之后的列都放到溢出段

      ● 当行中某字段的数据量无法确定时使用PCTTHRESHOLD

      ● 若所有行均超出PCTTHRESHOLD规定大小,则考虑使用INCLUDING

     

 

[阅读全文]