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

来源:互联网 发布:跟奥巴马一起编程 15 编辑:程序博客网 时间:2024/05/22 13:58

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的错误

0 0
原创粉丝点击