我以前导库,都是用一个数据库模板,先创建数据库,然后用imp命令导入dmp文件现在我要导入一个DMP文件,但是我没有模板,我就先用10g的向导直接创建了一个数据库,又用DMP文件导入,但是在导入过程中,总是提示“dcmp表空间”,我是不是还要建一个表空间,我想请教如何建?我没有建表的脚本。

解决方案 »

  1.   

    总是提示“dcmp表空间不存在”?1  新建名为dcmp的表空间。2
    (1)  收回新库用户的UNLIMITED TABLESPACE权限:revoke unlimited tablespace from username;      
    (2)  将希望导入的表空间设为新库用户的默认表空间,并添加配额。    
    (3)  执行IMP。
      

  2.   

    如何建“dcmp表空间”,能不能给出建表空间的命令?
      

  3.   

    CREATE TABLESPACE xxx
     DATAFILE 'C:\oracle\product\10.1.0\oradata\orcl\a.dbf' SIZE 500M
     UNIFORM SIZE 128k; 
      

  4.   

    create tablespace dcmp datafile 'your_path&your_datafile_name' size 100m;最简单的,就这样,替换为你想要存放的路径和文件名,如:
    d:\dcmp01.DBF
      

  5.   

    在你新建的数据库中建立表空间名字可与原来的表空间名字相同。create tablespace dcmp datafile 'your_path&your_datafile_name' size 100m;
      

  6.   

    这种问题一般楼上已经说明一般是表空间的问题,使用IMP时,其表空间的名字需要和EXP时那个数据库的对应用户的表空间一致,上述已经说明了详细过程,我也接上面的说下吧,表空间创建的参数很多,有几个是关键参数,如初始化大小数据文件路径,其余的参数根据你的要求设置即可,一个表空间可以有多个数据文件,多个文件总大小就是表空间的大小。对于初始化大小,希望你能够查询以前的表空间有多大,也就是你导出的时候,查询以前的表空间大小为:
    SELECT tablespace_name,sum(bytes)/(1024*1024) "表空间总大小(MB)"
    FROM dba_data_files
    GROUP BY tablespace_name;找到你对应的表空间名字即可查看到表空间的大小了,我们习惯将一些表空间大小设置为以8为整数的单位,如:512M、1024M等等,你根据原始表空间大小适当调整一下即可,如果你需要精确定位,就是原始表空间使用了多大的空间(但是你创建的表空间大小必须大于这个值,否则IMP会出错,除非表空间的某数据文件设置为自动增长的,这个在运行时有点消耗性能):
    SELECT tablespace_name,sum(bytes)/(1024*1024) "已经使用空间大小(MB)"
    FROM user_segments
    GROUP BY tablespace_name;

    --需要注意的是:如果这个表空间没有任何表或索引对象,这个视图没有记录,因为统计的是使用了的数据段。
    上述已经大致确定了表空间的大小需要创建多少,现在来确定文件位置,有两种位置,一种是默认的ORACLE路径,也就是你以前的ORACLE文件放在那里,现在就放在那里。
    SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES;
    一般默认情况下他们会放在一起,你也可以根据这个路径创建自己的文件,如这个文件在:
    D:\ORACLE10\datafiles\ 下面(Linux下面一般的格式为:/u02/oracle/datafiles,都是一个道理)。
    那么你要创建文件时候,可以这样以最简答的方式创建(这里假如你用上述方式提取出来为512M~1024M之间):
    CREATE TABLESPACE dcmp
     DATAFILE 'D:\ORACLE10\datafiles\dcmp01.dbf' size 1024M;ORACLE创建一个表空间有很多默认参数,这两个一般我们是必须写的,至于表空间一些规则细节,这里没地方说了,我只把一个较为全量的定义写出来,可以自己去设置即可:CREATE TABLESPACE "TEST"   --创建表空间 TEST,
    DATAFILE 'D:\ORACLE10\datafiles\test1.ora' SIZE 100M  --数据文件1
             'D:\ORACLE10\datafiles\test2.ora' SIZE 200M    --数据文件2 
    AUTOEXTEND ON NEXT 5K MAXSIZE UNLIMITED --该数据文件自动增长为5K,无最大限制
    [LOGGING|NOLOGGING] --对用户操作是否写日志,NOLOGGING在一些情况下以最小日志写入
    EXTENT MANAGEMENT LOCAL [UNIFORM SIZE 32K] --区的分配使用自动分配或者统一大小
    SEGMENT SPACE MANAGEMENT [AUTO|MANUAL] DEFAULT--段的管理属于自动分配 
    [NOCOMPRESS|COMPRESS FOR DIRECT_LOAD OPERATIONS]--表操作是否压缩
    上述说明为为解决你IMP问题的表空间创建的最简单方式和较为全量的创建方式,全量方式使用方括号括起来的内容为选填内容的,创建过程中本身没有那些方括号,不过对于表空间的范畴还有一类特殊的临时表空间,其创建方式和维护方式也是不一样的,表空间内部也有一些底层的特性是有控件文件决定的,对于这方面深入进去也蛮多的,对于本问题我能说的就这么多了,能有对你有帮助是最好的了。