Oracle数据泵导入及报错处理:ORA-31684: Object USER:”FUELMS” already exist

艺帆风顺 发布于 2025-04-03 15 次阅读


1、一、报错信息:

ORA-31684: Object type USER:"FUELMS" already existsORA-31684: Object type SEQUENCE:"FUELMS"."SEQ_SYS_ENUM" already exists

2、导入语句

  • impdp: 表示使用Oracle数据泵进行数据导入导出操作。

  • fuelMS/fuelMS@ORCL: 指定源数据库和目标数据库的连接信息,其中fuelMS是要导入的表空间名称,ORCL是目标数据库的实例名。

  • full=y: 表示完全导入模式,即导入所有数据和对象。

  • directory=dump_dir: 指定导出文件所在的目录,其中dump_dir是一个文件夹名称。

  • dumpfile=FUELMS_20230803160039.DMP: 指定导出文件的名称,其中FUELMS_20230803160039.DMP是一个日期时间戳加上文件扩展名的组合。

  • logfile=FUELMS_20230803160039.log: 指定日志文件的名称,其中FUELMS_20230803160039.log是一个日期时间戳加上文件扩展名的组合。

  • table_exists_action=replace: 指定当目标数据库中已存在同名表时的操作方式,此处为替换原有表。

  • exclude=user: 排除名为“user”的对象不被导入。

  • IGNORE=Y: 在导入过程中忽略错误。

  • REMAP_SCHEMA=old_schema:new_schema: 将源数据库中的旧模式映射到目标数据库中的新模式,其中“old_schema”是源模式的名称,“new_schema”是目标模式的名称。

    请注意,该命令需要在具有足够权限的用户下执行,并且需要确保目标数据库已经创建了相应的表空间和用户对象。

这个命令将使用指定的转储文件进行完整导入,并将旧模式中

 排除用户及角色相关对象:exclude=user impdp fuelMS/fuelMS@ORCL full=y directory=dump_dir dumpfile=FUELMS_20230803160039.DMP logfile=FUELMS_20230803160039.log table_exists_action=replace exclude=user
忽略报错并继续:impdp fuelMS/fuelMS@ORCL full=y directory=dump_dir dumpfile=FUELMS_20230803160039.DMP logfile=FUELMS_20230803160039.log table_exists_action=replace exclude=user IGNORE=Y
重新映射模式:REMAP_SCHEMA=old_schema:new_schemaimpdp fuelMS/fuelMS@ORCL full=y directory=dump_dir dumpfile=FUELMS_20230803160039.DMP logfile=FUELMS_20230803160039.log table_exists_action=replace exclude=user IGNORE=Y REMAP_SCHEMA=old_schema:new_schema

3、查询数据库的模式信息

SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM dual;

在 Oracle 数据库中,模式(schema)是一个数据库用户拥有的一组逻辑数据结构或模式对象的集合。模式对象包括表、视图、索引、序列、过程、函数、包、触发器等。一个数据库用户拥有一个与其用户名相同的模式。

您可以使用数据字典视图来查询有关模式的信息。例如,您可以使用 USER_OBJECTS 视图来查询当前用户拥有的所有模式对象:

SELECT object_name, object_typeFROM user_objects;

复制

上述语句将返回当前用户拥有的所有模式对象的名称和类型。

您还可以使用 ALL_OBJECTS 视图来查询当前用户可以访问的所有模式对象,或使用 DBA_OBJECTS 视图来查询数据库中所有模式对象的信息。