友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

oracle从入门到精通(PDF格式)-第14部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


       DB_16K_CACHE_SIZE FOR 16 KB BLOCKS  

       DB_32K_CACHE_SIZE FOR 32 KB BLOCKS  

    DB_nK_CACHE_SIZE 不允许使用与标准块对应的参数。   



                               第 64 页,共 106 页 


…………………………………………………………Page 65……………………………………………………………

资源来自网络,仅供学习!                                             Oracle 从入门到精通 



7、数据块的内容:  



     1。   块头:  

             自顶向下递增  

             事务槽:通过事务槽来表示锁定的事务,如果想执行事务必须先获得事务槽。  



     2。   空闲空间:没有碎片  

     3。   数据:自底向上递增  



8、块的空间利用参数:  



    INITRANS  初始事务数(事务槽的个数:平常并发事务的个数)  

    MAXTRANS  最大事务数(最大事务槽数)   

    PCTFREE   为 UPDATE 保留空间的百分比;如果没有 UPDATE操作设置为零。   

    PCTUSED   标识数据块什么时候可以成为可用状态(FREELIST)  

          FREELIST 可用数据块状态  

  当块没有空间后,会构建新的块,并在原块里保留指针制向新块,但性能下降(行迁移)。   



9、数据块管理:  



  设置好之后不能更改。  

    1、自动空间管理:(默认)  

      管理数据库的段中空闲的一种方法:  

      使用 bitmap用 0 或1 标识不可用或可用状态。  

      只能在表空间级上才能设置:  

      在 CREATE TABLESPACE 语句最后加上 SEGMENT SPACE MANAGEMENT AUTO;  

      限制:不能用于包含了 LOB(大对象)对象的表空间。  

    2、手动管理:  

      可以使用下面的参数手动配置数据块:  

      PCTFREE  PCTUSED  FREELIST  

  得到存储信息:          

    DBA_EXTENTS    查看区信息  

    DBA_SEGMENTS   查看段信息  

    DBA_TABLESPACES 查看表空间信息  

    DBA_DATA_FILES  查看数据文件信息   

    DBA_FREE_SPACE  查看空闲空间信息  

    



10、管理回滚段(Undo)的数据  



     管理方法:  

       1。  自动 Undo 管理  

      2。  手动 Undo 管理  

      回滚段的原理:  

    用来暂时保存事务中的原始数据,至少保存到事务结束,保留到事务结束后回滚段中的空间 

  被其他事务覆盖之前;  

    作用:  



                             第 65 页,共 106 页 


…………………………………………………………Page 66……………………………………………………………

资源来自网络,仅供学习!                                             Oracle 从入门到精通 



     1。  事务回滚;  

     2。  事务恢复;  

     3。  读一致性;  

               在事务提交后查询,是在被查询表中查询的;  

               如果在事务执行中并发查询,数据库会在回滚段中取得数据,但正在并发查 

          询的时候事务提交就会产生读一致性错误的问题。  

    特性:  

          1。  最少需要两个区;              

          2。  使用区是以循环的方式使用;  

          3。  一个事务只能使用一个回滚段(事务不能跨回滚段);  

          4。  在一个回滚段上可以有多个事务(多个事务可以共享一个回滚段),每个事务使 

             用不同的区;  

          5。  在一个区中可以同时有多个事务的数据,但只能有一个活动的事务。  

          6。  事务对区的使用是连续的,当他将要写的下一个区有活动的事务时,它就会执 

             行扩展区操作;    

  长时间执行事务不提交,会造成阻碍会话。  

  减小事务大小,提交次数高一些,避免区扩展操作;  



20、Undo 段的类型:   



1。NON…SYSTEM类型:  



    自动模式:需要一个 UNDO 类型的表空间。(默认)设计为最少 200M,一般是几个 G。  

        配置参数:  UNDO_MANAGEMENT = AUTO/MANUAL 自动/手动  

                  UNDO_TABLESPACE = tablespace_name      

        提供足够大的 UNDO 类型表空间;  

   可以创建多个回滚类型的表空间,但只有一个是被使用的,当做切换操作的时候才需要多个表 

空间。  

     切换:正在运行的事务可以切换。              

     可以在创建数据库的 CREATE DATABASE 命令中增加一个子句创建 UNDO 表空间:  

      CREATE DATABASE database_name  

      。。。。。。。  

      undo tablespace space_name datafile 'filepath' size nM autoextend on  

      或  

      使用 CREATE UNDO TABLESPACE 命令创建:  

      create undo tablespace space_name datafile 'filepath' size nM ;      

    手动模式:  

             需要一个永久类型的表空间  

             私有:被单个实例使用  

             公有:被任意实例使用  

  DEFERRED :当表空间被修改为 OFFLINE ;IMMEDIATE,TEMPORARY,RECOVERY 状态时候出现。  



2。SYSTEM类型:  



    用于 SYSTEM 表空间的对象。  



                             第 66 页,共 106 页 


…………………………………………………………Page 67……………………………………………………………

资源来自网络,仅供学习!                                                     Oracle 从入门到精通 



    修改一个 UNDO 表空间:  

    alter tablespace space_name add datafile 'filepath' size nM autoextend on;  

    

    切换 UNDO 表空间:  

    可以从一个 UNDO 表空间切换到另一个。  

    在实例中一次只能使用一个 UNDO 表空间。  

    多个 UNDO 表空间可以存放在一个实例中,但只有一个是激活的。  

    使用 ALTER SYSTEM 命令动态切换 UNDO 表空间。  

    ALTER SYSTEM set UNDO_TABLESPACE = space_name;  

    

    删除 UNDO 表空间:  

    drop tablespace space_name;  

    UNDO 只是在当前实例没有使用它的时候才可以删除。  

    为了删除一个激活的 UNDO 表空间:  

    切换到一个新的 UNDO 表空间;  

    当所有表空间上的当前事务结束后删除表空间;    



3。自动UNDO段管理的其他参数:    



    UNDO_SUPPRESS_ERRORS parameter  

    设置为 TRUE,可以压制在 AUTO 模式下执行手动管理命令时的错误。   

    UNDO_RETENTION  parameter  

    控制为了保证读一致性而保留在提交后回滚段中数据的时间。  

    查看 UNDO 段信息:  

  SELECT。。。 FROM VUNDOSTAT;回滚段的使用频度  

  DBA_ROLLBACK_SEGS  

    



21、管理表    



  rowid 格式:伪列。  

    扩展型(extended)  

           组成:数据对象号(data object number)、相对文件号(relative file number)、 

     块号(block number)、行号(row number)(每个号6 个字节)  

           由 18 个字母组织的,存成 60 个字节,代表一行数据的绝对地址  

     限制型(restrcted)  

           组成:块号(block number)、行号(row number)、文件号(file number)  

       

  exec DBMS_ROWID 包(backage)  

  SELECT 。。。DBMS_ROWID。 。。。FROM table_name;  



1。创建表提示:  



           将表创建在独立的表空间中;  

           使用本地管理;  

           表使用标准的区大小来避免在表空间上产生碎片;                       



                                 第 67 页,共 106 页 


…………………………………………………………Page 68……………………………………………………………

资源来自网络,仅供学习!                                                 Oracle 从入门到精通 



        在创建各种文件的时候最好都有它们独立的表空间支持。  



2。创建临时表  



  CREATE GLOBAL TEMPORARY TABLE   

  。。。。。。。  

    特征:  

          用户创建的临时表是用户的会话独占的;  

          表在事务或会话过程中包含数据;  

          只会有结构而不会有存储;  

          在数据上不会得到 DML锁;  

          对该表所做的 DML 操作不会写到日志上;  

          不用做 DELETE 或TRUNCATE 操作,该表在内存中,当事务结束或会话结束时释放;  

          可以在临时表上创建索引、视图、触发器;    



3。修改存储参数和块空间利用参数:  



       alter table owner。table_name  

       pctfree 30//块参数  

       pctused 50//块参数  

       storage(next 500k minextents 2 maxextents 120);//存储参数  



4。手动分配区:  



  alter table hr。employees allocate extent(size 500k datafile 'filepath');  



5。非分区表的重组  



  alter table owner。table move tablespace space_name;  

  当表被重组后,它的结构被重组,但内容没有影响;  

  约束条件不变,但与其对应的索引不存在了,所以重组之后的索引必须重建;  

  可以被用于移动表到新的表空间或者重组区;  



6。删除列:  



    alter table owner。table_name drop   

    column col_name cascade constraints checkpoint 1000;  

    

    checkpoint 1000  每一千行 执行一次检查点  

  检查点:完成同步,将写入日志的改变对应的数据写入数据文件中;  

    从每行中删除掉列占据的长度和数据,释放在数据块中占用的空间。  

    删除大表中的一列将花费比较长的时间。  



7。重命名表中的一列:  



    alter table owner。table_name  



                              第 68 页,共 106 页 


…………………………………………………………Page 69……………………………………………………………

资源来自网络,仅供学习!                                                       Oracle 从入门到精通 



    rename column old_name to new_name;  



8。标记列不再使用:  



    alter table owner。table_name  

    set unused column col_name cascade constraints;  



9。删除不使用的列:  



    alter table owner。table_name  

    drop unused columns checkpoint 1000;  



10。继续列的删除操作:  



    alter table owner。table_name  

    drop columns continue checkpoint 1000;   



11。得到表的信息:  



    DBA_TABLES  DBA_OBJECTS  



22、管理索引(index)  



  关键字+ROWID,排序!!!  



1。索引的分类:  



     逻辑上:  

    Single column 单行索引  

    Concatenated  多行索引  

    Unique        唯一索引  

    NonUnique     非唯一索引  

    Function…based 函数索引  

    Domain  域索引  

     物理上:  

    Partitioned     分区索引  

    NonPartitioned 非分区索引  

    B…tree:  

       Normal    正常型 B 树  

       Rever Key 反转型 B 树  

    Bitmap        位图索引  



2。索引结构:  



           B…tree:  

               适合与大量的增、删、改(OLTP);  



                                  第 69 页,共 106 页 


…………………………………………………………Page 70……………………………………………………………

资源来自网络,仅供学习!                                                 Oracle 从入门到精通 



             不能用包含 OR 操作符的查询;  

             适合高基数的列(唯一值多)  

             典型的树状结构;  

             每个结点都是数据块;  

             大多都是物理上一层、两层或三层不定,逻辑上三层;  

             叶子块数据是排序的,从左向右递增;  

             在分支块和根块中放的是索引的范围;  

          Bitmap:  

             适合与决策支持系统;  

             做 UPDATE 代价非常高;  

             非常适合 OR操作符的查询;  

             基数比较少的时候才能建位图索引;  

             树型结构:  

                 索引头   

                 开始 ROWID,结束 ROWID(先列出索引的最大范围)  

                 BITMAP  

             每一个 BIT对应着一个 ROWID,它的值是 1 还是0,如果是 1,表示着 BIT对应 

       的 ROWID 有值;  



3。存储参数:  



       initial 初始化大小  

       next  下一个区大小  

       pctincrease 区大小增量    

       minextents  最小区数(本地管理)  

       maxextents  最大区数(本地管理)  



4。创建B…TREE索引:  



    CREATE INDEX owner。index_name  

    ON owner。table_name(col_list)  

    PCTFREE n  

    STORAGE(INITAL nK NEXT nK PCTINCREASE n MAXEXTENTS n )  

    TABLESPACE space_name;  



5。索引PCTFREE的变化:  



    索引不存在 PCTUSED;   

    PCTFREE 的含义是为新的插入预留的空间,在索引创建时保留;  

    在索引中是没有 UPDATE的。  



6。创建索引的提示:  



    平衡查询与 DML 操作的需求,不要建太多的索引;  

    将索引放在单独的表空间;  

    使用统一的区大小:5 块的整倍数或表空间的 MINIMUMEXTENT的大小;  



                              第 70 页,共 106 页 


…………………………………………………………Page 71……………………………………………………………

资源来自网络,仅供学习!                                                  Oracle 从入门到精通 



  
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!