日期:2014-05-17  浏览次数:20945 次

ORACLE生产库到测试环境
我现在想把现场数据库对象搬回公司的测试环境,不带数据的。
用 exp sys/sys@orcl file=d:\user.dmp owner=(user) rows=n。

然后 在 公司测试环境对应建好用户和表空间后。
imp sys/sys@orcl file=d:/user.dmp fromuser=user touser=user。

但是 现场的数据量很大,有些表 在建表的时候,初始化的占用空间都是100M、200M、300M。如下:
tablespace STG
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
  initial 275776K
  minextents 1
  maxextents unlimited
  );

同时公司资源有限,我给这个表空间只能划个2g的空间出来,问题就来了。
当我imp的时候,没多久就开始报 ORA-01658: 无法为表空间 STG 中的段创建 INITIAL 区 这个错误。
于是我只能到数据库里面,把 已经导入的表 的 INITIAL 数值 手工改成 64k,然后重新imp一次,
于是这次又能多导入几个表,但是同样导入3-4个后,又报错,我只能又到数据库中修改 INITIAl数值偏大的表。

我现在想的是,有没有什么可以设置的,直接在imp的时候统一表结构的INITIAL值,或者在数据库中统一一次修改所有表的INITIAL值呢??

请各路英雄多多支招,帮忙解答,谢谢!

------解决方案--------------------
直接把建表的ddl语句弄出来,再在测试库上执行就行了。
------解决方案--------------------
oracle自带的sqldeveloper不挺好的吗?有直接导出DDL语句的