清理用户表空间

表空间由于平时测试被扩大了,磁盘满了怎么办呢,两个办法,一个是收缩文件,一个办法是重建:
重建表空间比较容易,但是USERS表空间重建要麻烦一点,会了这个,其他的表空间都不是问题(SYSTEM表空间除外)




1、首先在系统中将USERS表空间清理出来,迁移走所有的表和索引,假设目的表空间为TEST,
   可以在SYS用户登录后运行如下SQL:
   Select 'alter table '||t.owner||'.'||t.table_name||' move tablespace TEST;' 
     From all_all_tables t where t.tablespace_name='USERS';


   Select  'alter index '||t.owner ||'.'|| index_name || ' rebuild tablespace test;' 
     From all_indexes t where t.tablespace_name ='USERS';


   运行生成的脚本,把所有对象迁移走。
回缩表空间:
实际上如果表空间的所有对象都迁移走了之后,我们可以使用命令直接回缩,命令如下:
alter database  datafile 'D:\DATA\orcl\USERS01.DBF' resize 1024m;


删除/重建USERS表空间:
2、关闭数据库
3、启动数据库到MOUNT状态:
   alter   database   datafile   'D:\DATA\orcl\USERS01.DBF '   offline   drop;
   然后启动数据库:
   alter   database   open;
   修改默认表空间:
   alter database default tablespace test;
   脱机表空间users:
   alter tablespace users online;
   删除表空间,顺便把文件删掉:
   DROP TABLESPACE users INCLUDING CONTENTS and datafiles;
   表空间删掉了;
   可能遇到的问题:
   系统提示:
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-02429: 无法删除用于强制唯一/主键的索引
问题在于没有清空users表空间的所有对象,检查一下第一步是否还有没移走的对象。
4、重建表空间:
   create tablespace users datafile 'D:\DATA\orcl\USERS01.DBF' size 2048M autoextend off;
   设置默认表空间:
   alter database default tablespace users;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值