问题描述:前一段时间,项目部署到客户机房服务器上的时候,我们发现我们的测试数据库的表都放在system或者users表空间下面。相应的表并没有放到对应的表空间下,比如我创建一个cncb的表空间和数据库用户,当我们导入数据的时候数据并没有导入到相应的表空间下,如下图所示:
为此在网上查了一些资料,进行了如下处理:
--首先需要备份一下数据库
exp cncb/join@orcl file=f:\cncb20120331.dmp owner=(cncb)
revoke unlimited tablespace from cncb;
alter user cncb quota 0 on 表空间名;
--补充,凡是其他表空间中存在cncb的表的都执行上边语句,绝对保障其他表空间存储cncb的空间额度设置为0
alter user cncb quota unlimited on cncb;
--执行完之后,再倒入刚才备份的数据库
刷新可以看到,如下图所示:
顺便总结一下:
Windows下创建表空间命令:(windows和Linux稍微不同)
首先以dba的角色登陆,或者使用sqlplus或者使用plsql
sqlplus /nolog
connect system/admin@ORCL as sysdba
drop tablespace test including contents;
create tablespace test datafile 'F:\oracle\product\10.2.0\oradata\ORCL\ test.ora' size 100m reuse
autoextend on maxsize unlimited
default storage(initial 320k
next 320k
minextents 1
maxextents unlimited
pctincrease 0);
--创建用户
create user 数据库用户名 identified by 密码 default tablespace 表空间名 temporary tablespace temp;
--授权,一般为了方便,我们直接赋权dba
grant dba to 数据库用户;
Linux下创建表空间命令:
--创建临时表空间
create temporary tablespace test_temp
tempfile '/opt/oracle/oradata/orcl /test_temp01.dbf'
size 64m
autoextend on
next 65m maxsize 2048m
extent management local;
--创建表空间
create tablespace test_data
logging
datafile '/opt/oracle/oradata/orcl/test_data01.dbf'
size 64m
autoextend on
next 65m maxsize 2048m
extent management local;