刚才导入一个17.5G的dmp文件,3800W行,导了大概70分钟后,
. importing XXXX's objects into XXXX
. . importing table "XXXX" 38776021 rows imported
我以为导完了,
结果报错了,
IMP-00017: following statement failed with ORACLE error 1659:
去数据库里查了一下,导入了198521803行。
查报错信息,说是数据库表空间剩余空间不足。
但建表空间的时候明明指定了maxsize unlimited啊
create tablespace XXXX datafile '/usr/app/oracle/oradata/orcl/XXXX.dbf' size 1024M autoextend on next 1024m maxsize unlimited;
去看一下dbf文件的大小,32G,很敏感的一个大小,
再查一下,
原来是Oracle默认的单个数据文件大小是32G。
两种解决方法:
1.增加数据文件
alter tablespace XXXX add datafile '/usr/app/oracle/oradata/orcl/XXXX02.dbf' size 1024M autoextend on next 1024m maxsize unlimited;
2.在Oracle10g之后,可以在建表空间的时候指定使用bigfile,以前都是smallfile,
bigfile在数据文件大小blocksize 2K的数据文件最大支持8TB,blocksize 32K的数据文件最大支持到128TB
create bigfile tablespace XXXX datafile '/usr/app/oracle/oradata/orcl/XXXX.dbf' size 1024M autoextend on next 1024m maxsize unlimited;
在dba_tablespace里可以查看表空间是否是bigfile类型,
SQL> select TABLESPACE_NAME, BIGFILE from DBA_TABLESPACES;
增加数据文件的话,可能增加一个还不够,需要多加几个,
查了半天也没明白bigfile有什么不足之处,
不然为什么不把默认类型设为bigfile呢?