oracle的imp导入时覆盖目标数据库

背景:
oracle正式库通过exp命令导出的dmp备份包,现在通过imp命令还原到测试库,测试库上面的表数据全部不要,要用新的。

方法:
先删除用户、用户所在表空间,再新建用户和表空间,再imp导入。

过程:

1、用plsql查看用户的权限等信息并备份,例如

-- Create the user 
create user testuser;
-- Grant/Revoke object privileges 
grant execute on SYS.DBMS_JOB to testuser;
-- Grant/Revoke role privileges 
grant connect to testuser;
grant resource to testuser;
-- Grant/Revoke system privileges 
grant create job to testuser;
grant create materialized view to testuser;
grant create view to testuser;
grant debug connect session to testuser;
grant manage scheduler to testuser;
grant unlimited tablespace to testuser;

2、删除用户(如果用户下面有对象,需要加cascade参数)  

   drop user testuser cascade; 

3、用sysdba用户查询表空间名称、磁盘路径文件

   select username,default_tablespace from dba_users; (如用testuser登录,则查表user_users)
   select file_name,tablespace_name from dba_data_files; 

4、删除表空间

   --将其offline
   alter tablespace testdb offline;
   --将磁盘上的数据文件一同删除(不知道啥原因,本人执行后磁盘上的数据文件还在,这时可以手动删除掉)
   drop tablespace testdb including contents and datafiles;

5、创建表空间

   create tablespace dev datafile 'D:\OraData\testdb' size 500m;

6、根据第1步备份的sql,创建用户

7、数据导入,在cmd命令行下执行

   imp testuser/password@ORCL file=D:\backup.dmp fromuser=prduser touser=testuser
  
   参数说明:
   testuser/password 登录用户名和密码
   file 输入文件
   fromuser 所有人用户名列表,即导出dmp的用户名
   touser 用户名列表,即导入dmp的用户名



----------------------------------------------
附,imp和exp对应,都具有三种模式
 1、完全:
    IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:/FULL.DMP  FULL=Y

 2、用户模式(必须指定FROMUSER、TOUSER参数):
    IMP SONIC/SONIC BUFFER=64000  FILE=C:/SONIC.DMP  FROMUSER=SONIC TOUSER=SONIC
    这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数。

 3、表模式(只导入指定的表):
    IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP OWNER=SONIC TABLES=(SONIC)
    这样用户SONIC的表SONIC就被导入。


imp参数
USERID   用户名/口令
FULL   导入整个文件 (N)
BUFFER   数据缓冲区大小
FROMUSER  所有人用户名列表
FILE   输入文件 (EXPDAT.DMP)
TOUSER   用户名列表
SHOW   只列出文件内容 (N)
TABLES   表名列表
IGNORE   忽略创建错误 (N)
RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)
INCTYPE   增量导入类型
INDEXES   导入索引 (Y)
COMMIT   提交数组插入 (N)
ROWS   导入数据行 (Y)
PARFILE   参数文件名
LOG   屏幕输出的日志文件
CONSTRAINTS  导入限制 (Y)
DESTROY   覆盖表空间数据文件 (N)
INDEXFILE  将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE   执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK  显示每 x 行 (0) 的进度
TOID_NOVALIDATE  跳过指定类型 id 的校验
FILESIZE  各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

你可能感兴趣的:(Oracle)