创建ORACLE10G表空间问题 我以前导库,都是用一个数据库模板,先创建数据库,然后用imp命令导入dmp文件现在我要导入一个DMP文件,但是我没有模板,我就先用10g的向导直接创建了一个数据库,又用DMP文件导入,但是在导入过程中,总是提示“dcmp表空间”,我是不是还要建一个表空间,我想请教如何建?我没有建表的脚本。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 总是提示“dcmp表空间不存在”?1 新建名为dcmp的表空间。2(1) 收回新库用户的UNLIMITED TABLESPACE权限:revoke unlimited tablespace from username; (2) 将希望导入的表空间设为新库用户的默认表空间,并添加配额。 (3) 执行IMP。 如何建“dcmp表空间”,能不能给出建表空间的命令? CREATE TABLESPACE xxx DATAFILE 'C:\oracle\product\10.1.0\oradata\orcl\a.dbf' SIZE 500M UNIFORM SIZE 128k; create tablespace dcmp datafile 'your_path&your_datafile_name' size 100m;最简单的,就这样,替换为你想要存放的路径和文件名,如:d:\dcmp01.DBF 在你新建的数据库中建立表空间名字可与原来的表空间名字相同。create tablespace dcmp datafile 'your_path&your_datafile_name' size 100m; 这种问题一般楼上已经说明一般是表空间的问题,使用IMP时,其表空间的名字需要和EXP时那个数据库的对应用户的表空间一致,上述已经说明了详细过程,我也接上面的说下吧,表空间创建的参数很多,有几个是关键参数,如初始化大小和数据文件路径,其余的参数根据你的要求设置即可,一个表空间可以有多个数据文件,多个文件总大小就是表空间的大小。对于初始化大小,希望你能够查询以前的表空间有多大,也就是你导出的时候,查询以前的表空间大小为:SELECT tablespace_name,sum(bytes)/(1024*1024) "表空间总大小(MB)"FROM dba_data_filesGROUP BY tablespace_name;找到你对应的表空间名字即可查看到表空间的大小了,我们习惯将一些表空间大小设置为以8为整数的单位,如:512M、1024M等等,你根据原始表空间大小适当调整一下即可,如果你需要精确定位,就是原始表空间使用了多大的空间(但是你创建的表空间大小必须大于这个值,否则IMP会出错,除非表空间的某数据文件设置为自动增长的,这个在运行时有点消耗性能):SELECT tablespace_name,sum(bytes)/(1024*1024) "已经使用空间大小(MB)"FROM user_segmentsGROUP 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问题的表空间创建的最简单方式和较为全量的创建方式,全量方式使用方括号括起来的内容为选填内容的,创建过程中本身没有那些方括号,不过对于表空间的范畴还有一类特殊的临时表空间,其创建方式和维护方式也是不一样的,表空间内部也有一些底层的特性是有控件文件决定的,对于这方面深入进去也蛮多的,对于本问题我能说的就这么多了,能有对你有帮助是最好的了。 存储过程里面问题 dbms_stats.create_stat_table见表后的表结构每列含义是什么? 请教如何提高UPDATE千万数据和INSERT千万条数据的效率问题 检查表是否存在创建表 一个简单的存储过程,在线等 sql查询问题。 急!如何用SQL语句求百分比? 装oracle服务器端的时候为什么会出错啊!? 如果一个表中存在long raw型的字段,能不能基于这个表建触发器 请教select一个字段里面的内容怎么以分隔符为界显示成两个字段 [紧急]在Oracle Trigger中调用Java代码的问题 oracle过程错误
(1) 收回新库用户的UNLIMITED TABLESPACE权限:revoke unlimited tablespace from username;
(2) 将希望导入的表空间设为新库用户的默认表空间,并添加配额。
(3) 执行IMP。
DATAFILE 'C:\oracle\product\10.1.0\oradata\orcl\a.dbf' SIZE 500M
UNIFORM SIZE 128k;
d:\dcmp01.DBF
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问题的表空间创建的最简单方式和较为全量的创建方式,全量方式使用方括号括起来的内容为选填内容的,创建过程中本身没有那些方括号,不过对于表空间的范畴还有一类特殊的临时表空间,其创建方式和维护方式也是不一样的,表空间内部也有一些底层的特性是有控件文件决定的,对于这方面深入进去也蛮多的,对于本问题我能说的就这么多了,能有对你有帮助是最好的了。