我创建了一个全新的Oracle数据库,我正在尝试从另一个数据库的完整备份中导入DMP文件,我收到了一些错误。
命令:
impdp system/welcome1 full=yes directory=BACKUPSDR dumpfile=bck_full_AXISPROD_15012018.dmp logfile=bck_full_AXISPROD_15012018.LOG
错误:
Processing object type DATABASE_EXPORT/TABLESPACE
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-02236: invalid file name
Failing sql is:
CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 209715200 AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE
答案 0 :(得分:0)
以下并非必须正确,但可能会给你一些想法。
我已经格式化了您发布的漫长内容,只是为了强调--> here
:
ORA-02236: invalid file name
CREATE UNDO TABLESPACE "UNDOTBS1"
DATAFILE --> here
SIZE 209715200 AUTOEXTEND ON
NEXT 5242880 MAXSIZE 32767M
BLOCKSIZE 8192 EXTENT
MANAGEMENT LOCAL AUTOALLOCATE
如您所见,数据文件名称缺失。有效吗?
如果您 - 在源数据库中 - 提取用于创建表空间的DDL,例如我的11g XE上的以下示例,您将看到如下内容:
SQL> select dbms_metadata.get_ddl ('TABLESPACE', tablespace_name)
2 from dba_tablespaces;
CREATE UNDO TABLESPACE "UNDOTBS1"
DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA --> here
CREATE TABLESPACE "SYSAUX"
DATAFILE --> here
SIZE 10485760
AUTOEXTEND ON NEXT 104
UNDO表空间包含数据文件名。 SYSAUX没有。怎么会?如果显示DB_CREATE_FILES_DEST的当前值(如果设置,则告诉Oracle默认情况下在哪里创建数据文件):
SQL> show parameter DB_CREATE_FILE_DEST;
db_create_file_dest string
你可能会看到一些东西。在我的XE中,该参数未设置。
因此,我认为IMPDP期望与源数据库中设置的数据文件位置相同。如果它不存在,则会引发错误。
你能检查一下吗?
如果它出现问题,你应该提取CREATE TABLESPACE命令(就像我一样),修改数据文件名,使它们不再无效并预先创建表空间。如果您不确定它们应该有多大,请运行
SQL> select tablespace_name, sum(bytes) / (1024 * 1024) size_in_MB
2 from dba_segments
3 group by tablespace_name;
SYSAUX 643,8125
UNDOTBS1 10,1875
USERS 4,1875
SYSTEM 355,875
然后重复IMPDP并排除表空间,例如
exclude=tablespace:"IN ('UNDOTBS1', 'USERS')"
答案 1 :(得分:0)
在列出的SQL中可以看到,DATAFILE
没有值。这意味着Oracle将尝试在默认位置创建数据文件。如果未设置该位置,则CREATE
将失败。
您可以通过以下方式检查表空间的默认位置:
SQL> show parameter DB_CREATE_FILE_DEST;
NAME TYPE VALUE
--------------------- -------- ------------------------------
db_create_file_dest string
上面,它没有价值。要设置值,请使用alter system set
:
SQL> alter system set DB_CREATE_FILE_DEST='/ORCL/u02/app/oracle/oradata/ORCL/orclpdb1';
System altered.
SQL> show parameter DB_CREATE_FILE_DEST;
NAME TYPE VALUE
--------------------- -------- ------------------------------------------
db_create_file_dest string /ORCL/u02/app/oracle/oradata/ORCL/orclpdb1
在这里,/ORCL/u02/app/oracle/oradata/ORCL/orclpdb1
是使用https://container-registry.oracle.com/中的Oracle 12.2.0.1容器的第一个可插入数据库(PDB)中表空间的路径。