手动回收表的存储方式:
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; 表已分析。