精华内容
下载资源
问答
  • 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。  对于数据库来说,索引是一个必选项,但对于...

    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 

    对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。

    索引分类:

    逻辑分类

    single column or concatenated     对一列或多列建所引

    unique or nonunique    唯一的和非唯一的所引,也就是对某一列或几列的键值(key)是否是唯一的。

    Function-based    基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率。 

    Doman    索引数据库以外的数据,使用相对较少

    物理分类

    B-Tree :normal or reverse key   B-Tree索引也是我们传统上常见所理解的索引,它又可以分为正常所引和倒序索引。

    Bitmap  : 位图所引,后面会细讲

    B-Tree 索引                                                                                 

      B-Tree index 也是我们传统上常见所理解的索引。B-tree (balance tree)即平衡树,左右两个分支相对平衡。

    B-Tree index

    Root为根节点,branch 为分支节点,leaf 到最下面一层称为叶子节点。每个节点表示一层,当查找某一数据时先读根节点,再读支节点,最后找到叶子节点。叶子节点会存放index entry (索引入口),每个索引入口对应一条记录。

    Index entry 的组成部分:

    Indexentry entry  header    存放一些控制信息。

    Key column length     某一key的长度

    Key column value      某一个key 的值

    ROWID    指针,具体指向于某一个数据

    创建索引:

    用户登录:
    SQL> conn as1/as1
    Connected.

    创建表:
    SQL> create table dex (id int,sex char(1),name char(10));
    Table created.

    向表中插入1000条数据
    SQL> begin
      2  for i in 1..1000
      3  loop
      4  insert into dex values(i,'M','chongshi');
      5  end loop;
      6  commit;
      7  end;
      8  /

    PL/SQL procedure successfully completed.

    查看表记录
    SQL> select * from dex;
            ID SE NAME
    ---------- -- --------------------
           ... . .....

           991 M  chongshi
           992 M  chongshi
           993 M  chongshi
           994 M  chongshi
           995 M  chongshi
           996 M  chongshi
           997 M  chongshi
           998 M  chongshi
           999 M  chongshi
          1000 M  chongshi

    1000 rows selected.

    创建索引:
    SQL> create index dex_idx1 on dex(id);
    Index created.
    注:对表的第一列(id)创建索引。

    查看创建的表与索引
    SQL> select object_name,object_type from user_objects;

    OBJECT_NAME                  OBJECT_TYPE
    --------------------------------------------------------------------------------
    DEX                           TABLE
    DEX_IDX1                      INDEX

      索引分离于表,作为一个单独的个体存在,除了可以根据单个字段创建索引,也可以根据多列创建索引。Oracle要求创建索引最多不可超过32列。

    SQL> create index dex_index2 on dex(sex,name);
    Index created.

    SQL>  select object_name,object_type from user_objects;

    OBJECT_NAME                           OBJECT_TYPE
    --------------------------------------------------------------------------------
    DEX                                       TABLE
    DEX_IDX1                                 INDEX
    DEX_INDEX2                               INDEX

    这里需要理解:

      编写一本书,只有章节页面定好之后再设置目录;数据库索引也是一样,只有先插入好数据,再建立索引。那么我们后续对数据库的内容进行插入、删除,索引也需要随之变化。但索引的修改是由oracle自动完成的。

    上面这张图能更加清晰的描述索引的结构。

    跟节点记录0至50条数据的位置,分支节点进行拆分记录0至10.......42至50,叶子节点记录每第数据的长度和值,并由指针指向具体的数据。

    最后一层的叶子节是双向链接,它们是被有序的链接起来,这样才能快速锁定一个数据范围。

    如:

    SQL> select * from dex where id>23 and id<32;

            ID SE NAME
    ---------- -- --------------------
            24 M  chongshi
            25 M  chongshi
            26 M  chongshi
            27 M  chongshi
            28 M  chongshi
            29 M  chongshi
            30 M  chongshi
            31 M  chongshi

    8 rows selected.

      如上面查找的列子,通过索引的方式先找到第23条数据,再找到第32条数据,这样就能快速的锁定一个查找的范围,如果每条数据都要从根节点开始查找的话,那么效率就会非常低下。

    位图索引                                                                        

      位图索引主要针对大量相同值的列而创建。拿全国居民登录一第表来说,假设有四个字段:姓名、性别、年龄、和身份证号,年龄和性别两个字段会产生许多相同的值,性别只有男女两种值,年龄,1到120(假设最大年龄120岁)个值。那么不管一张表有几亿条记录,但根据性别字段来区分的话,只有两种取值(男、女)。那么位图索引就是根据字段的这个特性所建立的一种索引。

    Bitmap Index

      从上图,我们可以看出,一个叶子节点(用不同颜色标识)代表一个key , start rowid 和 end rowid规定这种类型的检索范围,一个叶子节点标记一个唯一的bitmap值。因为一个数值类型对应一个节点,当时行查询时,位图索引通过不同位图取值直接的位运算(与或),来获取到结果集合向量(计算出的结果)。

     

    举例讲解:

    假设存在数据表T,有两个数据列A和B,取值如下,我们看到A和B列中存在相同的数据。

    对两个数据列A、B分别建立位图索引:idx_t_bita和idx_t_bitb。两个索引对应的存储逻辑结构如下:

    Idx_t_bita索引结构,对应的是叶子节点:

    Idx_t_bitb索引结构,对应的是叶子节点:

    对查询“select * from t where b=1 and (a=’L’ or a=’M’)”

    分析:位图索引使用方面,和B*索引有很大的不同。B*索引的使用,通常是从根节点开始,经过不断的分支节点比较到最近的符合条件叶子节点。通过叶子节点上的不断Scan操作,“扫描”出结果集合rowid。

    而位图索引的工作方式截然不同。通过不同位图取值直接的位运算(与或),来获取到结果集合向量(计算出的结果)。

    针对实例SQL,可以拆分成如下的操作:

    1、a=’L’ or a=’M’

    a=L:向量:1010

    a=M:向量:0001

    or操作的结果,就是两个向量的或操作:结果为1011。

    2、结合b=1的向量

    中间结果向量:1011

    B=1:向量:1001

    and操作的结果,1001。翻译过来就是第一和第四行是查询结果。

    3、获取到结果rowid

    目前知道了起始rowid和终止rowid,以及第一行和第四行为操作结果。可以通过试算的方法获取到结果集合rowid。

    位图索引的特点

    1.Bitmap索引的存储空间节省 

    2.Bitmap索引创建的速度快

    3.Bitmap索引允许键值为空 

    4.Bitmap索引对表记录的高效访问

    创建位图索引:

    查看表记录
    SQL> select * from dex;
    ...................
            ID SEX NAME
    ---------- -- --------------------
           991 M  chongshi
           992 M  chongshi
           993 G  chongshi
           994 G  chongshi
           995 G  chongshi
           996 M  chongshi
           997 G  chongshi
           998 G  chongshi
           999 G  chongshi
          1000 M  chongshi

    1000 rows selected.

    对于上面表来说sex(性别)只有两种值,最适合用来创建位图所引
    创建索引:
    SQL> create bitmap index my_bit_idx on dex(sex);

    Index created.

    查看创建的所引
    SQL>  select object_name,object_type from user_objects;

    OBJECT_NAME                           OBJECT_TYPE
    --------------------------------------------------------------------------------
    MY_BIT_IDX                               INDEX

    创建索引的一些规则                                                   

    1、权衡索引个数与DML之间关系,DML也就是插入、删除数据操作。

    这里需要权衡一个问题,建立索引的目的是为了提高查询效率的,但建立的索引过多,会影响插入、删除数据的速度,因为我们修改的表数据,索引也要跟着修改。这里需要权衡我们的操作是查询多还是修改多。

    2、把索引与对应的表放在不同的表空间。

         当读取一个表时表与索引是同时进行的。如果表与索引和在一个表空间里就会产生资源竞争,放在两个表这空就可并行执行。

    3、最好使用一样大小是块。

         Oracle默认五块,读一次I/O,如果你定义6个块或10个块都需要读取两次I/O。最好是5的整数倍更能提高效率。

    4、如果一个表很大,建立索引的时间很长,因为建立索引也会产生大量的redo信息,所以在创建索引时可以设置不产生或少产生redo信息。只要表数据存在,索引失败了大不了再建,所以可以不需要产生redo信息。

    索引常见操作                                                            

    改变索引

    SQL> alter index employees_last _name_idx storage(next 400K maxextents 100);

    索引创建后,感觉不合理,也可以对其参数进行修改。详情查看相关文档

    调整索引的空间:

    新增加空间
    SQL> alter index orders_region_id_idx allocate extent (size 200K datafile '/disk6/index01.dbf');
    
    释放空间
    SQL> alter index oraers_id_idx deallocate unused;

    索引在使用的过程中可能会出现空间不足或空间浪费的情况,这个时候需要新增或释放空间。上面两条命令完成新增与释放操作。关于空间的新增oracle可以自动帮助,如果了解数据库的情况下手动增加可以提高性能。

    重新创建索引

    所引是由oracle自动完成,当我们对数据库频繁的操作时,索引也会跟着进行修改,当我们在数据库中删除一条记录时,对应的索引中并没有把相应的索引只是做一个删除标记,但它依然占据着空间。除非一个块中所有的标记全被删除的时,整个块的空间才会被释放。这样时间久了,索引的性能就会下降。这个时候可以重新建立一个干净的索引来提高效率。

    SQL> alter index orders_region_id_idx rebuild tablespace index02;

    通过上面的命令就可以重现建立一个索引,oracle重建立索引的过程:

    1、锁表,锁表之后其他人就不能对表做任何操作。

    2、创建新的(干净的)临时索引。

    3、把老的索引删除掉

    4、把新的索引重新命名为老索引的名字

    5、对表进行解锁。

    移动所引

    其实,我们移动索引到其它表空间也同样使用上面的命令,在指定表空间时指定不同的表空间。新的索引创建在别位置,把老的干掉,就相当于移动了。

    SQL> alter index orders_region_id_idx rebuild tablespace index03;

    在线重新创建索引

    上面介绍,在创建索引的时候,表是被锁定,不能被使用。对于一个大表,重新创建索引所需要的时间较长,为了满足用户对表操作的需求,就产生的这种在线重新创建索引。

    SQL> alter index orders_id_idx  rebuild  online;

    创建过程:

    1、锁住表

    2、创建立临时的和空的索引和IOT表用来存在on-going DML。普通表存放的键值,IOT所引表直接存放的表中数据;on-gong DML也就是用户所做的一些增删改的操作。

    3、对表进行解锁

    4、从老的索引创建一个新的索引。

    5、IOT表里存放的是on-going DML信息,IOT表的内容与新创建的索引合并。

    6、锁住表

    7、再次将IOT表的内容更新到新索引中,把老的索引干掉。

    8、把新的索引重新命名为老索引的名字

    9、对表进行解锁

    整合索引碎片

    如上图,在很多索引中有剩余的空间,可以通过一个命令把剩余空间整合到一起。  

    SQL> alter index orders_id_idx  coalesce;

    删除索引

    SQL> drop  index  hr.departments_name_idx;

    分析索引                                                                                  

      

      检查所引的有效果,前面介绍,索引用的时间久了会产生大量的碎片、垃圾信息与浪费的剩余空间了。可以通过重新创建索引来提高所引的性能。

    可以通过一条命令来完成分析索引,分析的结果会存放在在index_stats表中。

    查看存放分析数据的表:
    SQL> select count(*) from index_stats;

      COUNT(*)
    ----------
             0
    执行分析索引命令:
    SQL> analyze index my_bit_idx validate structure;

    Index analyzed.

    再次查看 index_stats 已经有了一条数据
    SQL> select count(*) from index_stats;

      COUNT(*)
    ----------
             1

    把数据查询出来:
    SQL> select height,name,lf_rows,lf_blks,del_lf_rows from index_stats;

        HEIGHT   NAME              LF_ROWS   LF_BLKS   DEL_LF_ROWS
    ---------- ---------------------------------------------------------------------- ---------- -----------
             2   MY_BIT_IDX            1000          3            100 

    分析数据分析

    (HEIGHT)这个所引高度是2 ,(NAME)索引名为MY_BIT_IDX  ,(LF_ROWS)所引表有1000行数据,(LF_BLKS)占用3个块,(DEL_LF_ROWS)删除100条记录。

      这里也验证了前面所说的一个问题,删除的100条数据只是标记为删除,因为总的数据条数依然为1000条,占用3个块,那么每个块大于333条记录,只有删除的数据大于333条记录,这时一个块被清空,总的数据条数才会减少。

    展开全文
  • 具体到特定的物理文件 二、 索引的概念 1、 类似书的目录结构 2、 Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度 3、 索引直接指向包含所查询值的行的位置,减少磁盘I/O 4、 与所索引的表是...

    一、 ROWID的概念

    存储

    了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /,

    row在数据块中的存储

    方式

    SELECT ROWID, last_name from hr.employees WHERE department_id = 20;

    比如:OOOOOOFFFBBBBBBRRR

    OOOOOO:data object number, 对应dba_objects.data_object_id

    FFF:file#, 对应v$datafile.file#

    BBBBBB:block#

    RRR:row#

    Dbms_rowid包

    SELECT dbms_rowid.rowid_block_number('AAAGFqAABAAAIWEAAA') from dual;

    具体到特定的物理文件

    二、 索引的概念

    1、 类似书的目录结构

    2、 Oracle

    的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度

    3、 索引直接指向包含所查询值的行的位置,减少磁盘I/O

    4、 与所索引的表是相互独立的物理结构

    5、 Oracle

    自动使用并维护索引,插入、删除、更新表后,自动更新索引

    --工作感觉中 所谓oracle自动维护在插入后,其实好像并非如此!不是oracle 独立的进程在 插入后开始维护

    而是在插入这个SESSION中维护,在insert into   commit; 语句后维护。

    6、 语法:CREATE INDEX index ON table (column[, column]...);

    7、 B-tree结构(非bitmap):

    [一]了解索引的工作原理:

    表:emp

    目标:查询Frank的工资salary

    建立索引:create index emp_name_idx on emp(name);

    以下图说明节点和叶节点的关系,节点负责二叉树的路径,如同书目录左边的目录列表 ;

    叶节点就是目录列表右边的页码

    索引也会很大化 因为它也要存储些字段和字段的值

    三、 唯一索引

    1、 何时创建:当某列任意两行的值都不相同

    2、 当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立

    3、 语法:CREATE UNIQUE INDEX index ON table (column);

    4、 演示

    四、 组合索引

    1、 何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引

    2、 组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面

    3、 演示(组合列,单独列)

    五、 位图索引

    1、 何时创建:

    列中有非常多的重复的值时候。例如某列保存了 “性别”信息。

    Where 条件中包含了很多OR操作符。

    较少的update操作,因为要相应的

    展开全文
  • 详解Oracle数据库中文全文索引日期:2010年5月11日 作者:一、历史背景Oracle数据库的全文检索技术以前十分完满,Oracle Text使Oracle9i具有了强悍的文本检索才干和智能化的文本维护才干。Oracle Text是Oracle9i采用...

    详解Oracle数据库中文全文索引

    日期:2010年5月11日 作者:

    一、历史背景

    Oracle数据库的全文检索技术以前十分完满,Oracle Text使Oracle9i具有了强悍的文本检索才干和智能化的文本维护才干。Oracle Text是Oracle9i采用的新称号,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的称号是Oracle ConText Cartridge。

    二、Oracle Text 索引文档时所运用的首要逻辑步骤如下:

    (1) 数据存储逻辑搜索表的一切行,并读取列中的数据。通常,这只是列数据,但有些数据存储运用列数据作为文档数据的指针。

    (2) 过滤器提取文档数据并将其转换为文本表示方式。存储二进制文档 (如 Word 或 Acrobat 文件) 时须要这样做。过滤器的输出不必是纯文本格式 -- 它能够是 XML 或 HTML 之类的文本格式。

    (3) 分段器提取过滤器的输出信息,并将其转换为纯文本。包括 XML 和 HTML 在内的不一样文本格式有不一样的分段器。转换为纯文本触及检测首要文档段标志、移去不可见的信息和文本重新格式化。

    (4) 词法分析器提取分段器中的纯文本,并将其拆分为不延续的标志。既存在空白字符分隔言语运用的词法分析器,也存在分段庞杂的亚洲言语运用的专门词法分析器。

    (5) 索引引擎提取词法分析器中的一切标志、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。倒排索引存储标志和含有这些标志的文档。

    三、须要的权限

    要运用Oracle Text,必需具有CTXAPP角色或许是CTXSYS用户。Oracle Text为系统维护员提供CTXSYS用户,为运用顺序开发人员提供CTXAPP角色。具有CTXAPP角色的用户可执行以下职务:树立索引,维护 Oracle Text 数据字典,包括树立和删除首选项,执行Oracle Text 查询,运用 Oracle Text PL/SQL顺序包。

    如图所示:

    2010511858399968.gif

    四、详细的完成

    文本装入文本列后,就能够树立Oracle Text索引。文档以许多不一样方案、格式和言语存储。因而,每个 Oracle Text 索引有许多须要配置的选项,以针对特定情况配置索引。树立索引时,Oracle Text可运用若干个默许值,但在大非少数情况下要求用户议决指定首选项来配置索引。

    每个索引的许多选项组成功用组,称为"类",每个类集中表现配置的某一方面,能够以为这些类就是与文档数据库有关的一些疑问。比如:数据存储、过滤器、词法分析器、有关词表、存储等。

    每个类具有许多预定义的行为,称之为对象。每个对象是类疑问能够具有的答案,并且大非少数对象都包括有属性。议决属性来定制对象,从而使对索引的配置愈加多变以顺应于不一样的运用。

    (1)存储(Storage)类

    存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和树立参数。它仅有一个基本对象:BASIC_STORAGE,其属性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。

    (2)数据存储(Datastore)类

    数据存储:关于列中存储文本的位置和其他信息。默许情况下,文本直接存储到列中,表中的每行都表示一个独自的完壁文档。其他数据存储位置包括存储在独自文件中或以其 URL 标识的 Web 页上。七个基本对象包括:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、Multi_Column_Datastore 、URL_Datastore、User_Datastore。

    (3)文档段组(Section Group)类

    文档段组是用于指定一组文档段的对象。必需先定义文档段,然后才干运用索引议决 WITHIN 运算符在文档段内执行查询。文档段定义为文档段组的一部分。包括七个基本对象:AUTO_SECTION_GROUP、BASIC_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROUP、XML_SECTION_GROUP、PATH_SECTION_GROUP。

    (4)有关词表(Wordlist)类

    有关词表标识用于索引的词干和模糊婚配查询选项的言语,只需一个基本对象BASIC_WORDLIST,其属性有:Fuzzy_Match、Fuzzy_Numresults、Fuzzy_Score、Stemmer、Substring_Index、Wildcard_Maxterms、Prefix_Index、Prefix_Max_Length、Prefix_Min_Length。

    (5)索引集(Index Set)

    索引集是一个或多个Oracle 索引 (不是Oracle Text索引) 的集合,用于树立 CTXCAT类型的Oracle Text索引,只需一个基本对象BASIC_INDEX_SET。

    (6)词法分析器(Lexer)类

    词法分析器类标识文本运用的言语,还确定在文本中如何标识标志。默许的词法分析器是英语或其他西欧言语,用空格、规范标点和非字母数字字符标识标志,同时禁用大小写。包括8个基本对象:BASIC_LEXER、CHINESE_LEXER、CHINESE_VGRAM_LEXER、JAPANESE_LEXER、JAPANESE_VGRAM_LEXER、KOREAN_LEXER、KOREAN__MORPH_ LEXER、MULTI_LEXER。

    (7)过滤器(Filter)类

    过滤器确定如何过滤文本以树立索引。能够运用过滤器对文字处理器处理的文档、格式化的文档、纯文本和 HTML 文档树立索引,包括5个基本对象:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。

    (8)非索引字表(Stoplist)类

    非索引字表类是用以指定一组不编入索引的单词 (称为非索引字)。有两个基本对象:BASIC_STOPLIST (一种言语中的一切非索引字) 、 MULTI_STOPLIST (包括多种言语中的非索引字的多言语非索引字表)。

    详细操作理论

    1、 树立词法分析器及有关词表

    Begin

    -- 定义一个词法分析器

    ctx_ddl.drop_preference('cnlex');

    ctx_ddl.create_preference('cnlex','CHINESE_LEXER'); --针对中文

    -- 定义一个有关词表

    ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');

    ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');

    ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);

    ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);

    ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');

    end;

    // 上面的语句中,假设是针对英语语种则能够采用下面的语句来定义词法分析器

    ctx_ddl.create_preference('mylex','BASIC_LEXER');

    ctx_ddl.set_attribute('mylex','printjoins','_-');

    展开全文
  • 本课程中重点讲解了关于oracle数据库的相关知识,包含但不限于,Oracle的基本概念,Oracle数据库的创建以及维护,oracle数据库表的创建以及维护,查询和视图详解索引和权限详解,以及备份和还原,plsql的基础语法...
  • ORACLE数据库技术实用详解韩思捷电子工业出版社出版时间:2008-6出版社:电子工业出版社作者:韩思捷页数:435Tag标签:无内容概要本书系统全面地介绍了Oracle 10g数据库的结构、管理和优化,内容涵盖整个10g OCP的...

    ORACLE数据库技术实用详解

    韩思捷

    电子工业出版社

    出版时间:

    2008-6

    出版社:

    电子工业出版社

    作者:

    韩思捷

    页数:

    435

    Tag标签:

    内容概要

    本书系统全面地介绍了Oracle 10g数据库的结构、管理和优化,内容涵盖整个10g OCP的考试范围。包括Oracle 10g数据库的体系架构、存储结构、网络服务、备份与恢复、闪回(flashback)管理、资源管理、调度管理、自动存储管理(ASM)、自动化性能监控与调优等。既着重介绍了在实际工作中需要用到的管理知识,又兼顾了OCP考试所涉及的考点。  本书编排由浅入深,既详细介绍了Oracle 10g数据库表面的行为特征(也就是“是什么”),又阐明了其行为背后的原因(也就是“为什么”)。比如undo表空间是如何提供一致性读、检查点的工作原理等。

    书籍目录

    第1章 Oracle 10g数据库简介1.1 Oracle 10g网格计算简介1.2 Oracle体系结构简介1.3 Oracle数据库存储简介第2章 安装Oracle 10g软件及创建数据库2.1 安装之前的准备2.2 开始安装2.3 创建数据库第3章 数据字典3.1 数据字典表3.2 动态性能视图第4章 初始化参数与实例4.1 初步了解启动和关闭数据库实例4.2 静态参数文件4.3 动态参数文件4.4 再议实例的启动和关闭4.5 使用EM管理实例第5章 内存组件与Oracle进程5.1 用户与Oracle数据库服务器建立连接5.2 深入Shared Pool5.2.1 shared pool的内存结构5.2.2 library cache和dictionary cache概述5.2.3 解析SQL语句的过程5.2.4 设置shared pool5.3 深入Log Buffer5.3.1 log buffer的内存结构5.3.2 log buffer的内部管理机制5.3.3 log buffer的设置5.4 深入Buffer Cache5.4.1 Buffer Cache的内存结构5.4.2 Buffer Cache的管理机制5.5 其他内存池5.6 自动共享内存管理5.7 PGA管理5.7.1 PGA的概念及其包含的内存结构5.7.2 PGA自动管理第6章 存储管理6.1 表空间6.1.1 表空间的空间管理6.1.2 创建和管理表空间6.1.3 临时表空间和临时表空间组6.1.4 非默认数据块大小的表空间6.2 联机日志文件6.2.1 日志切换6.2.2 管理日志文件6.3 OMF6.4 数据块的结构第7章 undo表空间管理7.1 DML语句与undo7.2 undo的作用7.3 配置AUM7.4 管理undo表空间第8章 用户、权限和角色管理8.1 用户管理8.1.1 创建和删除用户8.1.2 Profile与用户管理8.2 权限管理8.2.1 系统权限8.2.2 对象权限8.3 角色管理第9章 对象管理9.1 表9.1.1 创建普通表9.1.2 管理普通表9.1.3 约束(constraint)9.1.4 使用分区表、索引组织表、簇表9.2 索引9.2.1 B树索引9.2.2 位图(bitmap)索引9.2.3 管理索引9.3 其他对象9.4 可恢复的空间分配(Resumable Space Allocation)第10章 闩锁、锁定和并发性10.1 闩锁(latch)概述10.2 锁定(lock)概述10.3 DML事务锁定的机制10.3.1 行级锁(TX锁)10.3.2 表级锁(TM锁)10.4 解决DML事务锁定的冲突10.4.1 锁定相关视图10.4.2 检测并解决冲突10.4.3 死锁10.5 DDL锁定10.6 创建自己的锁定第11章 配置网络环境11.1 用户与Oracle数据库服务器建立连接11.2 配置监听器11.3 配置客户端11.4 配置共享连接11.5 调用外部过程第12章 手工管理的备份和恢复12.1 备份12.1.1 冷备份12.1.2 热备份12.2 介质恢复12.2.1 完全恢复12.2.2 不完全恢复12.2.3 基于时间点的不完全恢复12.2.4 丢失所有控制文件时的恢复第13章 RMAN管理的备份和恢复13.1 配置RMAN13.1.1 RMAN的体系结构13.1.2 快速闪回区(Flash Recovery Area)13.1.3 使用Configure命令配置RMAN13.2 使用RMAN完成备份13.2.1 备份数据文件13.2.2 备份归档日志文件和控制文件13.2.3 增量备份13.2.4 显示备份信息13.3 使用RMAN进行恢复13.3.1 完全恢复13.3.2 不完全恢复13.4 配置恢复目录第14章 闪回14.1 闪回数据库(flashback database)14.2 闪回删除(flashback drop)14.3 闪回表(flashback table)14.4 闪回版本查询(flashback version query)14.5 闪回事务查询(flashback transaction query)14.6 闪回查询(flashback query)第15章 自动化管理15.1 自动化管理概述15.2 AWR体系结构15.2.1 AWR体系概述15.2.2 告警信息和指标15.2.3 基准线15.3 管理AWR及生成AWR报表15.4 ASH体系结构15.5 访问ASH15.5.1 转储方式访问ASH15.5.2 使用SQL语句访问ASH15.5.3 创建ASH报表方式访问ASH15.5.4 通过Database Control的诊断页面访问ASH数据15.6 ADDM15.7 顾问(Advisor)15.7.1 使用内存顾问15.7.2 使用恢复(MTTR)顾问15.7.3 使用SQL Tuning Advisor(STA)15.7.4 使用SQL Access Advisor(SAA)第16章 ASM管理16.1 ASM的概念16.2 创建ASM实例16.3 管理ASM磁盘组16.4 管理ASM文件16.5 迁移到ASM16.6 ASMCMD工具第17章 资源管理17.1 资源管理器的概念17.2 资源管理器的使用17.2.1 创建资源用户组17.2.2 创建资源计划第18章 调度管理18.1 基于时间的调度任务18.2 基于事件的调度任务18.3 调度任务的高级选项18.3.1 使用job class18.3.2 使用window第19章 数据迁移19.1 导出导入19.2 可传输表空间19.3 数据泵(Data Pump)19.3.1 导出数据泵(expdp)19.3.2 导入数据泵(impdp)19.4 外部表19.5 可传输数据库第20章 安全20.1 审计20.1.1 强制审计20.1.2 标准数据库审计20.1.3 基于值的审计20.1.4 精细化审计(Fine-Grained Auditing)20.1.5 对DBA的审计20.2 虚拟专用数据库(VPD)20.2.1 基于行的VPD20.2.2 基于列的VPD20.3 透明数据加密(TDE)20.4 对备份进行加密20.4.1 透明加密模式20.4.2 基于密码的加密模式20.4.3 混合加密模式第21章 全球化支持21.1 字符集21.2 数据库字符集21.3 客户端字符集21.4 客户端字符集与服务器端字符集的转换21.5 语义排序

    章节摘录

    第1章 Oracle 10g数据库简介  1.3 Oracle数据库存储简介  我们已经了解到,0racle数据库实际上是位于物理磁盘上的多个文件的逻辑集合,主要包括数据文件、联机日志文件和控制文件。用户的数据实际存放在数据文件里。  那么我们来想象一下,如果要获取某个具体数据的时候,比如要检索雇员表里雇员号为l00的雇员信息,我们应该怎么做?  我们知道雇员信息是位于数据文件里的,那么最简单的方法就是从第一个数据文件的起点开始,依次读取每个文件的最小组成单位(如果位于操作系统上,则操作系统块就是它的最小组成单位,每个数据文件都由许多个操作系统块组成;如果直接放在磁盘上,比如裸设备或ASM磁盘上,则磁盘块就是它的最小组成单位,这时每个数据文件就是由多个磁盘块组成的)里所包含的数据,判断其中是否存在雇员信息。如果没有则读取下一个最小组成单位;如果有雇员信息,则读取其雇员号,判断该雇员号是否等于100,如果不是,则读取下一个最小组成单位。如果是,则返回该雇员信息。如此这般,直到该文件全都读取完毕为止。然后继续读取下一个数据文件,再做一遍这样的事情,直到读完所有的数据文件。这样才能找到所有雇员号为100的雇员信息。  很显然,这种方式是低效的。特别是如果数据文件很多,总数据量很大,比如上百GB,再加上并发用户数很多,很多用户都查找数据,那这种查找数据的方式是几乎不可能完成的任务。这里仅仅是举了一个查询的例子,如果再引入修改数据的话,那后果更不可想象。  Oracle数据库当然不会采用这种方式。为了更好地管理物理磁盘上的数据文件,Oracle引入了逻辑存储的概念。所谓逻辑存储的概念,可以理解为,Oracle把数据在物理文件里摆放的位置等信息都以数据行的形式存放在了相关的表里。

    编辑推荐

    《ORACLE数据库技术实用详解:教你如何成为10g OCP》内容丰富,语言通俗易懂,实用性强,便于读者学习、实践以及参加10g OCP的考试,尤其适合于初学者以及希望更进一步了解Oracle数据库的人群。《ORACLE数据库技术实用详解:教你如何成为10g OCP》既可作为各大中专院校相关专业和培训班的辅导教材和参考用书,也可作为数据库系统开发应用技术人员和自学者的学习和参考用书。

    图书封面

    图书标签Tags

    广告

    下载页面

    展开全文
  • 域(domain)索引索引数据库以外的数据,使用相对较少; 物理分类: B*树(B-tree)索引(默认方式):Root为根节点,branch 为分支节点,leaf 到最下面一层称为叶子节点。每个节点表示一层,当查找某一数据时先...
  • 虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。
  • 各种Oracle索引类型介绍 逻辑上: Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned ...
  • Oracle数据库唯一索引的区别是本文我们主要介绍的内容,在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里...
  • oracle索引详解

    2021-05-01 08:31:45
    索引对于Oracle学习来说,非常重要,在数据量巨大的状况下,使用恰到好处的索引,将会使得数据查询时间大大减少。1、索引的创建语法:CREATE UNIUQE | BITMAP INDEX .ON .( | ASC | DESC, | ASC | DESC,...)...
  • 数据库索引详解

    千次阅读 2017-11-05 21:40:23
    特别说明: 1、 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能...2、 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存
  • Oracle DB 服务器由一个 Oracle DB 以及一个或多个数据库实例组成。实例由内存结构和后台进程构成。每当启动一个实例时,都会分配一个称为系统全局区 (SGA) 的共享内存区,并启动后台进程。 数据库包括物理结构和...
  • 表可以按range、hash、list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。局部索引local index1.局部...
  • Oracle数据库入门详解

    2020-10-13 20:48:36
    Oracle数据库入门详解 一、oracle简介 Oracle公司的核心产品 目前最流行的数据库 基于C/S系统结构,使用B/S来管理的系统 主是版本Oracle8i/9i(internet) 、Oracle10G/11G(gird) 2013年6月26日,Oracle Database12c...
  • oracle数据库的删除方法详解

    千次阅读 2021-05-08 06:32:29
    oracle数据库的删除方法详解1、图形界面删除练习之前记得创建快照执行命令之前要保证数据库属于open状态SQL> alter database open;[oracle@localhost ~]$ dbca2、静默删除使用DBCA进行删除的数据库必须处于OPEN...
  • oracle数据库权限详解

    2019-03-12 09:51:40
    oracle内部有两个建好的用户:system和sys。... 安装好数据库创建用户时候会遇到不知道给用户赋予什么样的权限。 常用的标准权限,connect role(连接角色)/. resource role(资源角色)/. dba rol...
  • 一、历史背景Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text...
  • oracle数据库体系架构详解

    万次阅读 多人点赞 2018-08-31 19:10:41
    在学习oracle中,体系结构是重中之重,一开始从宏观上掌握它的物理组成、文件组成和各种文件组成。掌握的越深入越好。在实际工作遇到疑难问题,其实都可以归结到体系结构中来解释。体系结构是对一个系统的框架描述。...
  • oracle-数据库索引-index-详解

    千次阅读 2017-06-09 16:11:17
    概述 Oracle-OLAP和OLTP解读 Oracle-index索引解读 ...索引数据库对象之一,用于加快数据的检索 索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,索引直接指向包
  • ORACLE重建索引详解

    千次阅读 2018-07-09 22:22:12
    二、重建索引的标准1、索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间, 那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间, 对索引进行结构分析(如下):SQL&gt;Analyze index index_...
  • Oracle 数据库核心原理详解

    千人学习 2021-07-28 10:53:49
      Oracle数据库 底层原理解析  全部课程学习网址:https://edu.csdn.net/course/detail/35647
  • 点击上方"蓝字"关注我们,享更多干货!前段时间,墨天轮邀请数据库资深专家 孙加鹏老师分享了《Oracle数据库索引分裂详解》,在这里我们将课件PPT和实况录像分享出来,供大家参考学习。在...
  • 用ORACLE建立数据库(详解)数据库结构和空间管理(数据文件、日志文件、表空间、段、模式和模式对象)一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。ORACLE逻辑...
  • 经典知识库:Oracle数据库索引分裂详解 -8月19日20:00 在高并发的实际生产环境中,数据库几乎每时每刻都在发生着索引分裂。只要存在索引,并且有新数据插入、更新、删除等操作,就必然要对索引进行维护,索引维护...
  • Oracle数据库-索引

    2020-07-06 09:50:34
    建立索引常用方法1.1 创建索引1.2 重置索引1.3 删除索引1.4 强制使用索引1.5 查看表索引信息1.6 查看表索引信息 索引 1. 建立索引常用方法 1.1 创建索引 create index <index_name> on <table_name>(&...
  • 索引介绍1.1索引的创建语法:CREATEUNIUQE|BITMAPINDEX.ON.(|ASC|DESC,|ASC|DESC,...)TABLESPACESTORAGELOGGING|NOLOGGINGCOMPUTESTATISTICSNOCOMPRESS|COMPRESSNOSORT|REVERSEPARTITION|GLOBALPA...
  • Oracle中的索引详解

    2021-05-01 05:42:13
    具体到特定的物理文件 二、 索引的概念 1、 类似书的目录结构 2、 Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度 3、 索引直接指向包含所查询值的行的位置,减少磁盘I/O 4、 与所索引的表是...
  • 监控数据库的性能在init.ora参数文件中设置TIMED_STATISTICS=TRUE 和在你的会话层设置ALTER SESSION SET STATISTICS=TRUE 。运行svrmgrl 用 connect internal 注册,在你的应用系统正常活动期间,运行utlbstat.sql ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,708
精华内容 6,283
关键字:

oracle数据库索引详解