虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > Oracle数据库 > 用exp和imp释放Oracle磁盘空间

用exp和imp释放Oracle磁盘空间
类别:Oracle数据库   作者:码皇   来源:<a href="http://blog.csdn.net/qq_33301113" target="_blank" rel="nofollow   点击:

用exp和imp释放Oracle磁盘空间。Oracle有很多临时表,太占空间了,想把他们删掉。并释放磁盘空间。事实上,删掉Oracle表(清空回收站)是不会释放磁盘空间的,释放磁盘空间最彻底的方式就是exp imp。

用exp和imp释放Oracle磁盘空间

问题现象

Oracle有很多临时表,太占空间了,想把他们删掉。并释放磁盘空间。事实上,删掉Oracle表(清空回收站)是不会释放磁盘空间的,释放磁盘空间最彻底的方式就是exp/imp。

原因分析

在Oracle中,如果想删掉某些表,用delete删了后,其实不会释放空间和定义的。

处理步骤

按照1的方式,可以释放空间和定义。这样删除后,Oracle就多出了空闲的空间,表空间的使用率也下降了。如果我们再新建表存数据时,优先用Oracle的空闲空间,提高表空间的使用率,当空闲空间已用完,表空间的使用率为100%时,Oracle就会自动增大表空间(一般有最大限制)。所以定时做1操作,磁盘空间就不会老增大,它会优先用删掉的表的空间。如果想缩小oracle表空间大小,释放磁盘空间,可按照1,2,3,4步骤做。

1把不要的表删掉

先把不要的表的数据所占的空间释放。

TRUNCATE TABLE 表名称DROP STORAGE;

把表删除,不放进回收站。

drop table 表名称purge;

2创建用户和表空间(如果想导入表的用户存在,这一步可以省略)

创建表空间语句:

create tablespace temp1 datafile 'D: temp1.dbf' size 10m autoextend on next 50m maxsize 20480m extent management local;(每次自动增加50m,最大为20G)

创建用户并指定表空间:

create user temp1 identifiedby oracle default tablespace TEMP1;(用户名:temp1,密码:oracle,表空间:TEMP1)

给用户授予权限:

grant connect,resource,dba to temp1;(用户名:temp1)3

3文件的导入导出释放磁盘空间

打开命令行提示符(管理员),将用户nzk的数据保存到d盘的nzk.dmp文件导出的用户名:NZK 密码:oracle (不用分号) exp NZK/oracle@127.0.0.1/xe file=d:nzk.dmp

将nzk.dmp文件还原给用户Temp1

导入的用户名:TEMP1 密码:oracle(不用分号)

imp Temp1/oracle@127.0.0.1/xe file=d:nzk.dmp full=y

这样TEMP1用户就拥有NZK用户的全部数据

4删除用户和表空间它所在的表空间

打开sqlplus,在system用户下输入如下:

删除userdrop user 用户名 cascade;将表空间设置为离线

alter tablespace 表空间名称 offline;

删除表空间

drop tablespace 表空间名称 including contents and datafiles;

效果

结果,之前nzk用户所在的ASSM表空间大小为8百多兆,

导出的文件大小

新建用户TEMP1,导入数据后大小

然后,我们可以吧ASSM表空间删掉了。

相关热词搜索: