手动回收表的存储方式:

SQL> alter table aux_emp deallocate unused; //回收所有未使用的存储空间
表已更改。

 回收aux_emp的存储空间,保留50K未使用的存储空间

SQL> alter table aux_emp allocate extent(size 100K);

表已更改。

SQL> alter table aux_emp deallocate unused keep 50k;

表已更改。

  

改变表的读写模式

   Oracle在11g之前的版本中实现只读表的方法是通过授权间接实现的,影响面很大。使用文中介绍的只读表(read-only table)技术我们就掌握了细粒度控制表行为的方法。

重命名表:

   将aux_emp重新命名为aux_employee

SQL> rename aux_emp to aux_employee;

表已重命名。

SQL> alter table aux_employee rename to aux_emp;

表已更改。

  

维护表

  1.为表和列添加注释

   语法为 comment on table table is 

             comment on column table.column is

为aux_emp表和annual_sal列添加注释

    

SQL> comment on table aux_emp is '辅助员工信息表';

注释已创建。
SQL> comment on column aux_emp.annual_sal is '员工年工资' ;

注释已创建。

  2.删减表

 Oracle 数据库中,删减表有一下3中方法:

     (1)使用Delete

     (2)使用drop删除表后在重建表

     (3)使用truncate删除表中全部数据

      truncate语句可以快速、高效的删除表中的所有记录。truncate 是DDL语句,执行后马上提交,不会产生任何重做日志、回退信息,因此truncate操作语句不能回滚。

truncate table aux_emp 说明默认选项,被删减表中只会保留由参数Minentents指定的区的最小个数

truncate table aux_emp drop all storage; 删除数据段

truncate table aux_emp reuse storage; 被删减表中的所有存储空间都被回收。

 

  3.删除表

如果要删除的表中包含被其他外键引用的主键列或唯一性约束列,并且希望在删除该表的同时删除其他表中相关的外键约束。需要使用cascade constraints字句。

 drop table departments cascade constrains;

   在删除一个表时,oracle将进行的操作

   删除表中的所有记录

   删除数据字典中该表的定义

  删除与该表相关的所有索引和触发器。

  依赖于该表的数据库对象处于invalid状态

  为该表定义的同义词不会被删除,但是使用时会报错。

  为该表定义的同义词不会被删除,但是使用时将返回错误。

 

如果要回收该表的存储空间,可以使用purge子句

    drop table aux_emp purge;

4.分析表

 1.使用DBMS_STATS包手机表统计信息。

SQL> begin
  2  dbms_stats.gather_table_stats('ehr','employees');
  3  end;
  4  /

PL/SQL 过程已成功完成。

  可以使用analyze语句清楚数据字典中表的统计信息

SQL> analyze table employees delete statistics;

表已分析。

  (2)验证表的存储结构

    通过对表存储结构进行完整性验证,用户可以提前知道表中是否存在损坏的数据块。

  analyze table employees validate structure;

SQL> analyze table employees validate structure;

表已分析。

SQL> analyze table employees validate structure cascade;

表已分析。

SQL> analyze table employees validate structure cascade fast;

表已分析。
 posted on 2013-07-09 08:52  evencao  阅读(418)  评论(0编辑  收藏  举报