oracle如何把一个dmp数据库备份还原成空库,并清理表空间

本文详细介绍了如何将Oracle数据库的dmp文件还原为空库,并清理表空间的过程。首先通过exp命令导出数据库,然后清空所有表数据。接着在PL/SQL中生成并执行SQL脚本为空表分配表空间。在目标数据库上创建同名表空间,并删除原有用户以释放空间。最后使用imp命令导入dmp文件,设置适当的参数以避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 通过exp命令完全导出数据库,生成dmp文件

EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y 

2.清空所有表数据

truncate table tablename

3.plsql 以需要导出数据的用户登录

新建command window

执行下面代码

 -----------
   set heading off;
   set echo off;
   set feedback off;
   set termout on;
   spool C:\allocate.sql;
   Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
   spool off;
 -----------

4.执行下面代码,目的是给空表分配表空间,以便exp命令能够导出空表

SQL>@ C:\allocate.sql;

5.exp username/passwd file=/home/oracle/exp.dmp owner=your.owner.name

创建对应原用户下的同名表空间到要导入的数据库服务器,如果同名表空间存在,将其删除重新创建,再次导入会变相的释放表空间。

新建导入用户的时候,角色要选RESOURCE。删除同名用户会清空表空间。

6.imp dbauser/passwd file=/home/oracle/exp.dmp fromuser=your.owner.name touser=tousername STATISTICS=none

STATISTICS=none 排除版本异常产生的20001的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值