`

ch08 oracle对象管理_表

阅读更多

 

对象管理_表

本章任务

1.管理普通表

 

 

 

 

 

   如上图所示,每个数据行都有一个行头部,在这里存放了该行数据所包含的列的数量,以及锁定标记等。

 

   对于每条记录来说都有rowid列,该rowid是一个伪列。也就是说,该列的值并没有实际地保存在数据块里,但是可以查询并显示出来。

 

    rowid格式为:OOOOOOFFFBBBBBRRR.

OOOOOO表示该数据行所在的对象号,FFF表示该数据行所在的相对文件号,BBBBB表示该数据行所在的数据块号,RRR表示该行在数据块中的行号。

 

    rowid采用64进制来表示,也就是使用A-Z、a-z、0-9、/、+

A-Z  ->0-25

a-z  ->26-51

0-9  ->52-61

/      ->62

+     ->63

 

 测试rowid格式:OOOOOOFFFBBBBBRRR  

 

AAAMfN      0+0+0+12*power(64,2)+31*power(64,1)+13*power(64,0)

 

 

AAE    0+0+4*power(64,0)    

 

 

AAAAAO     0+0+0+0+0+14*power(64,0)    

 

 

AAA      0+0+0 =0

 

 


 2.扩展表

    有时我们需要主动地扩展一个表所占有的空间,或者需要将一个表分不到多个数据文件上去,从而将表的I/O分散到多个磁盘上去。我们可以执行下面的命令

 

 

alter table emp allocate extent (size 1024M datafile 'F:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF');

 

 

3.重整表    

   将一个表从目前所在的表空间转移到另外一个表空间里去

   或者需要消除表的数据块级别的碎片。

 

   数据块级别的碎片?

   所谓数据块级别的碎片指的是每个数据块里含有的数据行太少了,比如100条数据记录分布在100个数据块里,这时我们称这种表为稀疏表。

 

   稀疏表产生的原因在于 :在该表上存在很多的insert和delete.在表的segment header里记录了一个值,叫高水位标记(High Water Mark,简称HWM).HWM表示当前segment里使用的最后一个数据块的位置。当发生insert时,由于不断扩展数据块,因此会不断增加HWM的值.

 

   使用HWM的好处?

   当用户发出select count(*) 这样的查询语句而引起全表扫描时,服务器进程在扫描segment数据块的过程中,只扫描到HWM为止,HWM后面的数据块都是还没有使用过的数据块,因此一定不含有当前segment的数据,所以也就不去扫描了;但是如果发生delete操作,则不会降低HWM的值 (也就是说,即便把表里的数据全部删除,HWM的位置还是不变,也就导致进行全表扫描时,比如select count(*)时,任然要扫描到HWM为止,如下图所示)

 

 

 

 从上面的图可以看到,该表的数据块里的数据排列不够紧密。oracle10g以后可以使用shrink对表进行收缩。

 

  4.收缩表    

   进行收缩操作有两个前提条件:

   (一)表所在的表空间必须使用ASSM;

   (二)因为收缩表引起了数据行在不同数据块之间的转移,因此在被收缩的表上必须启用row movement选项,发出如下语句:

SQL> alter table EMP enable row movement;

Table altered

 

   下面为shirt过程

SQL> select table_name,blocks,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME                         BLOCKS   NUM_ROWS
------------------------------ ---------- ----------
EMP                                 48312    7990033

SQL> select max(empno) from emp;

MAX(EMPNO)
----------
   8000000

SQL> delete from emp where empno>7000000;

1000000 rows deleted

SQL> commit;

Commit complete

SQL> alter table EMP shrink space compact;

Table altered

SQL> alter table EMP shrink space;

Table altered

SQL> alter table EMP shrink space cascade;

Table altered

SQL> analyze table EMP compute statistics;

Table analyzed


SQL> select blocks, extents from user_segments where segment_name = 'EMP';

    BLOCKS    EXTENTS
---------- ----------
     42528        113

SQL> 

5.截断表

    如果需要删除表里所有的数据,我们可以使用delete命令.delete是DML事务,需要对表的记录加锁,产生重做记录,并消耗undo表空间。因此,delete命令需要消耗较多的资源,执行较长的时间.对于大表来说尤其如此.如果准备删除表里所有的记录,则Oracle提供了一个更加有效的命令:截断(truncate)

 

    截断命令是一个DDL命令,该命令只更新数据字典,将数据字典里将该表所占用的空间记录全部删除,然后,将表所占用的数据块全部释放;最后将表的HWM下降到最低。不过由于截断是一个DDL命令,因此一旦执行就不能回滚.其命令为:

  

SQL> create table test(
  2  id int primary key,
  3  name varchar2(20)
  4  );

Table created

SQL> truncate table test;

Table truncated

 

 

 

 

 

本章目标

1. 掌握对象管理_表

 

  • 大小: 3.5 KB
  • 大小: 35.7 KB
  • 大小: 11.5 KB
  • 大小: 6.3 KB
  • 大小: 8.3 KB
  • 大小: 75.5 KB
  • 大小: 24.5 KB
  • 大小: 14.3 KB
  • 大小: 36.3 KB
分享到:
评论

相关推荐

    ch1_oracle入门,课件

    学习Oracle的第一步通常是掌握如何创建和管理这些对象。例如,你可以通过SQL*Plus命令行工具或图形化的Oracle SQL Developer来创建数据库表,并学习如何插入、更新和删除数据。 课程中可能涵盖以下几个核心知识点:...

    Oracle_JDeveloper_Ch4[汇编].pdf

    首先,Oracle JDeveloper提供了创建和管理Application Workspace的功能,这允许开发者在一个集中的环境中组织和管理多个项目。例如,创建名为"DeptEmpWS"的应用工作空间,并设定应用包前缀为"dew",选择默认的"Java ...

    ch1_oracle入门

    通过学习这个“ch1_oracle入门”课程,你将能够理解 Oracle 数据库的基本原理,掌握 SQL 命令和函数,创建和使用数据库对象,编写 PL/SQL 存储过程,并了解基础的数据库配置和管理。这为你进一步深入学习和使用 ...

    Oracle_DBA(ch).ppt

    Oracle DBA(ch).ppt是一个关于Oracle数据库管理员课程的内容概述,涵盖了系统安装、数据库维护、备份与恢复、网络管理和性能调优等方面的知识。Oracle数据库是全球知名的数据库管理系统,由甲骨文公司开发,提供了高...

    ch05 oracle锁与表分区

    在Oracle数据库系统中,"锁"和"表分区"是两个关键的概念,它们对于数据库的并发控制和数据管理起着至关重要的作用。本篇将详细探讨这两个主题。 首先,我们来了解一下"锁"。在多用户环境下,Oracle数据库使用锁机制...

    Ch1Oracle关系数据库.ppt

    Oracle关系数据库是企业级数据管理的核心,其广泛应用于金融、电信、医疗等众多行业。学习Oracle数据库对于数据库应用技术人员来说至关重要,因为Oracle DBA和开发类职位在市场上具有高需求和良好的薪酬待遇。本课程...

    oracle基础培训

    ch08管理安全性.ppt ch09PLSQL基础.ppt ch10管理表.ppt ch11索引.ppt ch12视图.ppt ch13过程、函数和程序包.ppt ch14触发器.ppt ch15事务处理和并发控制.ppt ch16闪回操作.ppt ch17数据传输技术.ppt ch18使用大对象...

    oracle_spring

    此外,Spring Data JPA或MyBatis等ORM(对象关系映射)工具也可以与Oracle数据库协同工作,将数据库操作转换为面向对象的API,提高开发效率。 在实际应用中,Spring的DataSourceTransactionManager可以用来管理事务...

    Beginning_Oracle_Programming

    在Ch04中,可能涉及了SQL的基本语法,如选择(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)操作,以及如何创建和操作表、视图、索引等数据库对象。 3. **PL/SQL编程**:PL/SQL是Oracle特有的编程语言...

    PB连ORACLE10免客户端

    Oracle 10g是一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。PowerBuilder是一种流行的面向对象的可视化开发工具,特别适合于数据库应用系统的开发。在PB中连接Oracle数据库通常需要Oracle的ODBC驱动或...

    oracle复习资料详解,ppt格式

    在《Ch6-Oracle数据库的用户管理.ppt》中,探讨了Oracle中的权限和角色管理,包括用户创建、权限分配、角色的创建与撤销,以及对象权限和系统权限的管理,这些都是数据库安全性和访问控制的基础。 **四、表空间与...

    Oracle数据库结构 ch4.pptx

    Oracle提供了自动和手工两种方式来管理块内的空闲空间,自动管理通常适用于使用本地管理表空间的情况,而手工管理则通过PCTFREE和PCTUSED参数来控制,分别定义了块中应保留的最小空闲空间比例和使用达到一定比例后...

    Oracle数据库结构ch4.pptx

    逻辑存储结构是指在Oracle内部组织和管理数据的方式,而物理存储结构是指在操作系统中组织和管理数据的方式。 逻辑存储结构包括数据块(Data Block)、区(Extent)、段(Segment)和表空间(Tablespace)。数据块...

    Oracle数据库结构 - ch4.pptx

    如果在创建表空间时使用的是本地管理方式,并且将段的存储空间管理方式设置为AUTO,Oracle将自动管理表空间中块的空闲存储空间。手工是设置PCTFREE和PCTUSED来定义。PCTFREE参数用于指定块中必须保留的最小空闲空间...

    Oracle_DB常用经典sql查询

    以下是一些Oracle_DB中的常用经典SQL查询,涵盖了表空间管理、回滚段、控制文件、日志文件、对象状态、数据库信息以及性能监控等多个方面: 1. **查看表空间的名称及大小**: 使用以下查询可以获取每个表空间的总...

    Oracle DBA(ch).pptx

    综上所述,Oracle DBA需要掌握Oracle数据库的架构、管理方法,包括创建和维护数据库、实例管理、控制文件与重做日志的维护、表空间和数据文件的管理、回滚段和用户权限的管理等,确保数据库系统的稳定、高效和安全...

    oracle基础答案

    在Oracle中,SQL语句包括SELECT、INSERT、UPDATE、DELETE四大基本语句,以及CREATE、ALTER、DROP等用于数据库对象管理的语句。 4. SELECT语句:用于从数据库中检索数据。可以指定列名、表名、条件、排序等,以获得...

    ASP.NET网络数据库开发实例精解.part1

    ch1\Example_1_1 ---- 第1章的数据库管理系统; ch2\Example_2_2 ---- 第2章的使用IIS配置网站; ch3\Example_3_1 ---- 第3章的Access数据库; ch3\Example_3_4 ---- 第3章的SQL文件; ch4\TestOperateDB ---- 第4...

Global site tag (gtag.js) - Google Analytics