一次SYS用户还原普通用户失败的问题

今天想把一个DB1上的schema备份还原到DB2上去,备份的动作很顺利,还原的时候报错了,报错如下(部分报错信息):

开始使用数据泵备还原chenguangfair。  

Import: Release 11.2.0.4.0 - Production on 星期四 6月 9 10:04:11 2016

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

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "SYS"."SYS_IMPORT_FULL_03" 
启动 "SYS"."SYS_IMPORT_FULL_03":  "sys/********@orcl AS SYSDBA" remap_schema=CHENGUANGFAIR:chenguangfair directory=chenguangfair_dumpfile_dest transform=oid:n dumpfile=CHENGUANGFAIR_20160608130442.DMP logfile=CHENGUANGFAIR_20160608130442_recover.log 
处理对象类型 SCHEMA_EXPORT/USER
ORA-31685: 由于权限不足, 对象类型 USER:"CHENGUANGFAIR" 失败。失败的 sql 为:
 CREATE USER "CHENGUANGFAIR" IDENTIFIED BY VALUES 'S:23361451065E1FBFD1D3FA555B8174DEBD188F2A1BEA67FD710948BC7B97;E4E71AC665DF1386' DEFAULT TABLESPACE "TS_FAIR" TEMPORARY TABLESPACE "TEMP"
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT DEBUG CONNECT SESSION TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT SELECT ANY DICTIONARY TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT CREATE DATABASE LINK TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT CREATE ANY SEQUENCE TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT CREATE ANY VIEW TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 SYSTEM_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
GRANT CREATE ANY TABLE TO "CHENGUANGFAIR"
ORA-39083: 对象类型 SYSTEM_GRANT 创建失败, 出现错误:
ORA-01917: 用户或角色 'CHENGUANGFAIR' 不存在
失败的 sql 为:
GRANT UNLIMITED TABLESPACE TO "CHENGUANGFAIR"
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
ORA-31685: 由于权限不足, 对象类型 ROLE_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
 GRANT "CONNECT" TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 ROLE_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
 GRANT "RESOURCE" TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 ROLE_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
 GRANT "DATAPUMP_EXP_FULL_DATABASE" TO "CHENGUANGFAIR"
ORA-31685: 由于权限不足, 对象类型 ROLE_GRANT:"CHENGUANGFAIR" 失败。失败的 sql 为:
 GRANT "DATAPUMP_IMP_FULL_DATABASE" TO "CHENGUANGFAIR"
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
ORA-31685: 由于权限不足, 对象类型 DEFAULT_ROLE:"CHENGUANGFAIR" 失败。失败的 sql 为:
 ALTER USER "CHENGUANGFAIR" DEFAULT ROLE ALL
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
ORA-39083: 对象类型 PROCACT_SCHEMA 创建失败, 出现错误:
ORA-31625: 必须有方案 CHENGUANGFAIR 才能导入此对象, 但此方案不可访问
ORA-01435: 用户不存在
失败的 sql 为:
BEGIN 
sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'), export_db_name=>'ORCL', inst_scn=>'22593712463');COMMIT; END; 
我觉得SYS用户的权限很大了,不应该报错啊,查询SYS用户的权限也没有问题。

我又重新赋权限sysdba给SYS,依然没用。

我想着用SYSTEM操作吧,可是报了没权限还原其他用户的schema,我就用SYS用户把IMP_FULL_DATABASE,EXP_FULL_DATABASE的权限赋给了SYSTEM,可以成功导入。

既然这样可以,那我用SYS用户重新给SYS赋这两个权限,可是依然没成功。

我就把SYS这两个权限给回收了,重新赋权,这次终于可以了。

你可能感兴趣的:(Oracle)