【TechTarget中国原创】问:我在UNIX–Solaris系统中输出一个Oracle 9i数据库,并将它输入到Windows服务器中的Oracle 9i数据库当中。我在windows服务器端使用Enterprise Management Console来进行输入与输出。输出文件大约300MB。
输出的文件没什么问题,然而当输入文件时,目标数据库中的数据文件大小超出了我的预期并将硬盘空间都填满了。原始数据文件只有1GB大小。我空闲的硬盘空间有28GB,应该足够了。在输入最先的28个表时只有大概2500行数据,数据文件大小有8GB。
我哪里出了问题?
答:当你输出表单内容时,Oracle会看一下表单大小并生成一个至少和表单范围一样大的CREATE TABLE声明。根据你目标数据库的表空间分配规则,你的表单输入大小会大于输出大小。为避免发生这种情况,运行以下输入语句:
| imp file=my_dump.dmp full=y show=y log=create.sql |
以上语句可以生成一个create.sql文件,在生成表单时,这个文件包含了Oracle可以执行的SQL 语句。使用这个文件可以在目标数据库中precreate一个预期大小的表单。然后输入IGNORE=Y。