在测试exp和expdp的速度时,遇到下面的这个错误:
ORA-39095: 转储文件空间已耗尽: 无法分配 4096 字节
作业 "SYS"."SYS_EXPORT_TABLE_01" 因致命错误于 13:50:54 停止
这个实验是用expdp导出到多个导出文件中,通过并行提高导出速度
C:/Documents and Settings/Administrator>expdp 'sys/aibo@test as sysdba' director
y=dpdump dumpfile=expdp1.dp,expdp2.dp tables=(skate.testbind,skate.testbind_tmp,
skate.test_idx) filesize=150M & time
Export: Release 10.2.0.4.0 - Production on 星期二, 31 8月, 2010 13:49:35
Copyright (c) 2003, 2007, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYS"."SYS_EXPORT_TABLE_01": 'sys/********@test AS SYSDBA' directory=dpdum
p dumpfile=expdp1.dp,expdp2.dp tables=(skate.testbind,skate.testbind_tmp,skate.t
est_idx) filesize=150M
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 926 MB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
ORA-39095: 转储文件空间已耗尽: 无法分配 4096 字节
作业 "SYS"."SYS_EXPORT_TABLE_01" 因致命错误于 13:50:54 停止
当前时间: 13:51:59.51
分析产生错误的原因:通过错误的提示,可以知道因为我们指定了这个作业的filesize(即转储文件的大小),一个转储文件为150M,指定了两个转储文件共300m,而实际转储文件评估是926m,使转储文件太小,无法存储导出的文件,所以会报错。
其实指定filesize的大小是管理磁盘资源的一种机制。
已经知道错误的原因了,那就好解决了,可以重新指定filesize,重新执行这个作业;也可以为这个作业添加转储文件,继续这个作业
一般在作业的开始,可以用job_name指定作业名字,方便交互管理,如果没有指定也可以通过视图dba_datapump_jobs查询得到
在开一个sql窗口
C:/Documents and Settings/Administrator>sqlplus "sys/aibo@test as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 8月 31 15:21:42 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
SQL> select job_name,state from dba_datapump_jobs;
JOB_NAME STATE
------------------------------ ------------------------------
SYS_EXPORT_TABLE_01 NOT RUNNING
SQL>
用attach匹配已经存在的作业“SYS_EXPORT_TABLE_01”
C:/Documents and Settings/Administrator>expdp 'sys/aibo@test as sysdba' attach=S
YS_EXPORT_TABLE_01
Export: Release 10.2.0.4.0 - Production on 星期二, 31 8月, 2010 14:01:43
Copyright (c) 2003, 2007, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
作业: SYS_EXPORT_TABLE_01
所有者: SYS
操作: EXPORT
创建者权限: TRUE
GUID: B2B05084B70E4A2EB136F84C2249001D
起始时间: 星期二, 31 8月, 2010 14:01:44
模式: TABLE
实例: test
最大并行度: 1
EXPORT 个作业参数:
参数名 参数值:
CLIENT_COMMAND 'sys/********@test AS SYSDBA' directory=dpdump dumpfi
le=expdp1.dp,expdp2.dp tables=(skate.testbind,skate.testbind_tmp,skate.test_idx)
filesize=150M
状态: IDLING
处理的字节: 0
当前并行度: 1
作业错误计数: 0
转储文件: d:/backup/oracle/expdp1.dp
大小: 157,286,400
写入的字节: 20,480
转储文件: d:/backup/oracle/expdp2.dp
大小: 157,286,400
写入的字节: 4,096
Worker 1 状态:
状态: UNDEFINED
对象方案: SKATE
对象名: TEST_IDX
对象类型: TABLE_EXPORT/TABLE/TABLE_DATA
完成的对象数: 1
总的对象数: 3
完成的行数: 1,468,189
完成的字节: 314,548,224
完成的百分比: 38
Worker 并行度: 1
现在已经进入交互模式,用add_file为作业添加转储文件(这个转储文件是没有指定filesize的,模式是无穷大的)
Export> add_file=expdp3.dp
Export> add_file=expdp4.dp
Export> add_file=expdp5.dp
Export> add_file=expdp6.dp,expdp7.dp
Export> add_file=expdp8.dp,expdp9.dp
查看添加的转储文件是否存在作业中
Export> status
作业: SYS_EXPORT_TABLE_01
操作: EXPORT
模式: TABLE
状态: IDLING
处理的字节: 0
当前并行度: 1
作业错误计数: 0
转储文件: d:/backup/oracle/expdp1.dp
大小: 157,286,400
写入的字节: 20,480
转储文件: d:/backup/oracle/expdp2.dp
大小: 157,286,400
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP3.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP4.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP5.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP6.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP7.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP8.DP
写入的字节: 4,096
转储文件: D:/BACKUP/ORACLE/EXPDP9.DP
写入的字节: 4,096
Worker 1 状态:
状态: UNDEFINED
对象方案: SKATE
对象名: TEST_IDX
对象类型: TABLE_EXPORT/TABLE/TABLE_DATA
完成的对象数: 1
总的对象数: 3
完成的行数: 1,468,189
完成的字节: 314,548,224
完成的百分比: 38
Worker 并行度: 1
我们发出 CONTINUE_CLIENT 命令,恢复作业的运行,也可以使用 START_JOB 命令。CONTINUE_CLIENT 命令
将模式从交互式命令模式更改为记录模式,然后执行 START_JOB。
Export> continue_client
作业 SYS_EXPORT_TABLE_01 已在 星期二, 31 8月, 2010 14:01 重新打开
重新启动 "SYS"."SYS_EXPORT_TABLE_01": 'sys/********@test AS SYSDBA' directory=d
pdump dumpfile=expdp1.dp,expdp2.dp tables=(skate.testbind,skate.testbind_tmp,ska
te.test_idx) filesize=150M
. . 导出了 "SKATE"."TEST_IDX" 668.8 MB 6529200 行
. . 导出了 "SKATE"."TESTBIND" 89.51 MB 912936 行
. . 导出了 "SKATE"."TESTBIND_TMP" 872.9 KB 100000 行
已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TABLE_01"
******************************************************************************
SYS.SYS_EXPORT_TABLE_01 的转储文件集为:
d:/backup/oracle/expdp1.dp
d:/backup/oracle/expdp2.dp
D:/BACKUP/ORACLE/EXPDP3.DP
作业 "SYS"."SYS_EXPORT_TABLE_01" 已经完成, 但是有 1 个错误 (于 14:08:52 完成)
C:/Documents and Settings/Administrator>
至此问题解决
--转自