现在有两种建数据库的方式:
1、用sql脚本建表并导入基础数据。命令大致如下:
     create table ...     
     insert into 他table ....
2、用dmp文件导入。命令大致如下:
     imp accuser/accuser@acc file=accbase.dmp log=accbase.log fromuser=accbase touser=accuser
前面两种建库的方式都可以,但是区别就在插入数据的时候:
用(1)这种方式建的数据库,插入数据就很快。大约4个小时内,但是建库复杂很多。(关键是现在sql脚本不健全,变了很多。)
用(2)这种方式建的数据库,插入数据就很慢。大约10个小时以上,但是建库很方便。
我们插入数据的方式是通过dblink从其他库导过来的:
  insert into  tablename as select * from  table@dblink ... 
这样的方式来插入历史数据到新库的。因为不是仅仅插入一个表,所以很多导入数据的sql是写在一个存储过程里面的!
为什么(1)就快了,(2)就慢了啊???帮帮忙,分析下原因啊!!!
在线求解答!!!!!!!!!!

解决方案 »

  1.   

    确定两种方法建的表都是一样的么?
    第1种方法,肯定只是对表进行操作;
    第2种方法,是对数据库几乎所有的objects做操作。
      

  2.   

    是一样的。 因sql脚本和dmp文件都是从一个数据库里面导出来的!
      

  3.   

    插入数据 目前只能用dblink的方式  因为数据没有导出来  我们也不能改变别人做事的方式!
      

  4.   

    1.如果是数据库从头建立的话,建议采用第1种方式,因为这样有利用数据库在开发过程中不断修改和维护。
    2.如果是从旧数据库导出再导入,建议采用第2种方式,原因很简单,因为没有建库的sql脚本,再有会有大量的数据需要导过来,这些都是在创建时所没有的。
    3.方式1当然速度快,因为只涉及对数据表的操作。方式2当然慢,因为涉及对所有数据库对象的操作,像用户、表空间、数据文件...等等构成Oracel数据库对象。