欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oralce 11g 恢复 .dmp 文件方法及过程

程序员文章站 2022-05-25 22:53:58
...

Oralce 11g 恢复 .dmp 文件方法及过程

主要过程为:新建表空间 -> 新建用户 -> 授予用户权限 -> 恢复备份

〇、删除用户及表空间(如需要)

若要恢复的数据的用户和表空间之间恢复(使用)过,就最好删除并重新创建。

1. 删除用户

drop user autohome cascade;

2. 删除表空间

drop tablespace autohome;
  •  

3. 去文件夹删除表空间文件

D:\oracle_data\autohome.dbf

一、新建表空间

要恢复的数据量比较大,dmp文件超过了2个GB,所以最好能创建一个临时表空间加快导入速度:

create temporary tablespace autohome_temp tempfile'D:\oracle_data\autohome_temp.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
  •  

创建完临时表空间后,创建“正式”的表空间:

create tablespace autohome logging datafile'D:\oracle_data\autohome.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
  •  

二、新建用户

新建的用户最好能够与原有的用户名字保持一致:

create user autohome identified by autohome default tablespace autohome temporary tablespace autohome_temp;
  •  

三、授予用户权限

grant connect,resource,dba to autohome;
  •  

以上操作在SQLplus/PLSQL中执行,恢复备份命令在命令行中执行。


四、恢复备份

使用 imp 方法恢复dmp 文件备份,指明原用户与新用户名字,不需要 full=y

imp 用户名/密码 BUFFER=64000 file="dmp文件路径" FROMUSER=autohome TOUSER=你用户 ignore=y
  •  
imp autohome/autohome BUFFER=64000 file="D:/aaa/autohome.dmp" FROMUSER=autohome TOUSER=autohome ignore=y
  •  
  • 注意文件路径里的斜杠。 ‘/’ not ‘\’

五、报错

在执行最后的导入命令时,开始正常导入了数据,但随后报了一堆错误,最后也提示终止导入进程了。但是最后查了一下数据量没什么毛病,可能是从MySQL 转到Oracle 格式中出现的一些问题吧,好在不影响最后成功导入。

  • 以下是执行导入命令时的错误信息:

d:\oracle\dbhome_1\BIN>imp autohome/autohome BUFFER=64000 file=”D:/oracle/orcl_backup/autohome20180609.dmp” FROMUSER=autohome TOUSER=autohome ignore=y

Import: Release 11.2.0.1.0 - Production on 星期二 6月 12 16:48:54 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options

经由常规路径由 EXPORT:V11.01.00 创建的导出文件 
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入 
. . 正在导入表 “MD_ADDITIONAL_PROPERTIES”导入了 12 行 
. . 正在导入表 “MD_APPLICATIONFILES”导入了 0 行 
. . 正在导入表 “MD_APPLICATIONS”导入了 0 行 
………………………………………………….. 
. . 正在导入表 “MD_PRIVILEGES”导入了 212 行 
. . 正在导入表 “MD_PROJECTS”导入了 1 行

. . 正在导入表 “MIGR_DATATYPE_TRANSFORM_MAP”导入了 1 行 
. . 正在导入表 “T_KOUBEI”导入了 753602 行 
IMP-00017: 由于 ORACLE 错误 1917, 以下语句失败: 
“GRANT ALTER ON “T_KOUBEI” TO “ROLE_AAA”” 
IMP-00003: 遇到 ORACLE 错误 1917 
ORA-01917: 用户或角色 ‘ROLE_AAA’ 不存在 
IMP-00017: 由于 ORACLE 错误 1917, 以下语句失败: 
“GRANT DELETE ON “T_KOUBEI_LABLE” TO “ROLE_AAA”” 
IMP-00003: 遇到 ORACLE 错误 1917 
IMP-00017: 由于 ORACLE 错误 1917, 以下语句失败: 
“GRANT FLASHBACK ON “T_KOUBEI_LABLE_S” TO “ROLE_AAA”” 
IMP-00003: 遇到 ORACLE 错误 1917 
ORA-01917: 用户或角色 ‘ROLE_AAA’ 不存在 
IMP-00041: 警告: 创建的对象带有编译警告 
“CREATE FORCE VIEW “AUTOHOME”.”MGV_ALL_TABLES_DETAILS” ” 
” (“OBJTYPE”,”OBJNAME”,”OBJID”,”MAINOBJTYPE”,”MAINOBJNAME”,”MAINOBJID”,”SCH” 
“EMANAME”,”SCHEMAID”,”CATALOGNAME”,”CATALOGID”,”CONNNAME”,”CONNID”,”PROJECTN” 
“AME”,”PROJECTID”,”CAPTUREDORCONVERTED”,”QUALIFIEDNAME”) AS ” 
“SELECT ‘MD_TABLES’ objtype, t.table_name objname, t.id objid, ‘MD_TABLES’ ” 
“MainObjType,t.table_name MAINOBJNAME, t.id MAINOBJID, s.name SchemaName, s.” 
“id schemaid, cat.catalog_name catalogname,cat.id catalogid, conn.name connn” 
“ame,conn.id connid,proj.project_name projectname,proj.id projectid,” 
“NVL(conn.type,’CAPTURED’) CapturedOrConverted, ” 
“CASE WHEN conn.type IS NULL THEN md_meta.quote(cat.catalog_name,s.name,t.” 
“table_name,conn.id)” 
” ELSE s.name || ‘.’ || t.table_name END Qualif” 
“iedName” 
“FROM MD_TABLES t,MD_SCHEMAS s, MD_CATALOGS cat,MD_CONNECTIONS conn, MD_PROJ” 
“ECTS proj” 
“WHERE t.schema_id_fk = s.id” 
“AND s.catalog_id_fk = cat.id” 
“AND cat.connection_id_fk = conn.id” 
“AND conn.PROJECT_ID_FK = proj.id” 
……… 
“FROM MD_PARTITIONS p, MD_TABLES t,MD_SCHEMAS s, MD_CATALOGS cat,MD_CONNECTI” 
“ONS conn, MD_PROJECTS proj” 
“WHERE p.table_id_fk = t.id” 
“AND t.schema_id_fk = s.id” 
“AND s.catalog_id_fk = cat.id” 
“AND cat.connection_id_fk = conn.id” 
“AND conn.PROJECT_ID_FK = proj.id” 
IMP-00041: 警告: 创建的对象带有编译警告 
“CREATE FORCE VIEW “AUTOHOME”.”MGV_ALL_DETAILS” (“OBJ” 
“TYPE”,”OBJNAME”,”OBJID”,”MAINOBJTYPE”,”MAINOBJNAME”,”MAINOBJID”,”SCHEMANAME” 
“”,”SCHEMAID”,”CATALOGNAME”,”CATALOGID”,”CONNNAME”,”CONNID”,”PROJECTNAME”,”P” 
“ROJECTID”,”CAPTUREDORCONVERTED”,”QUALIFIEDNAME”) AS ” 
“SELECT “OBJTYPE”,”OBJNAME”,”OBJID”,”MAINOBJTYPE”,”MAINOBJNAME”,”MAINOBJID”,” 
“”SCHEMANAME”,”SCHEMAID”,”CATALOGNAME”,”CATALOGID”,”CONNNAME”,”CONNID”,”PROJ” 
“ECTNAME”,”PROJECTID”,”CAPTUREDORCONVERTED”,”QUALIFIEDNAME” FROM MGV_ALL_CAT” 
“ALOG_DETAILS” 
“UNION ALL” 
…………… 
“select d1.catalogid capcatalogid,” 
” d1.catalogname capcatalogname,” 
” d1.connid capconnid,” 
” d1.connname capconnname,” ” d2.qualifiedname conqualifiedname,” 
” d2.schemaid conschemaid,” 
………………… 
” d2.schemaname conschemaname,” 
” der.derivative_reason,” 
” der.transformed” 
” FROM mgv_all_details d1” 
” LEFT OUTER JOIN md_derivatives der” 
” ON der.src_id = d1.objid” 
” AND der.derivative_reason IS NULL” 
” LEFT OUTER JOIN mgv_all_details d2” 
” ON der.derived_id = d2.objid” 
” WHERE d1.capturedorconverted = ‘CAPTURED’” 
” AND der.derivative_reason IS NULL” 
即将启用约束条件… 
成功终止导入, 但出现警告。