日期:2014-05-16  浏览次数:20411 次

项目实施中oracle数据库表空间问题

问题描述:前一段时间,项目部署到客户机房服务器上的时候,我们发现我们的测试数据库的表都放在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下创建表空间命令:(windowsLinux稍微不同)

首先以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;

?

?