日期:2014-05-17  浏览次数:20889 次

oracle创建表时候指定表空间?
本帖最后由 pl_mm5 于 2012-07-06 09:39:36 编辑
prompt Creating DM_2...
create table DM_2
(
  CD_DM   VARCHAR2(10) not null,
  CD_MC   VARCHAR2(30),
  CD_URL  VARCHAR2(100)
  )
tablespace USERS pctfree 10 --为啥要指定系统表空间users
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table DM_2
  add constraint CDD primary key (CD_DM)
  using index 
  tablespace TS_JSI2_JQZH  pctfree 10 --约束又建在了另一个表空间上?
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );


这是看到的一个建表脚本,有几个问题不明白
1、Oracle建议要把一个用户的数据分离到多个表空间。为什么?
2、这里建表为什么还要指定表空间,一般不是在新建的用户下,create 表么,创建用户时候指定一个表空间,为什么要这么设计?

3、一个用户有一个默认表空间,那这个用户怎么使用多个表空间下的表数据?


========
以下为csdn广告。。。。。。。。。。




------解决方案--------------------
1、不同的数据库在不同的表空间。
2、这是oracle数据库储存方式必须指定表空间,否则建表的时候不知道数据存放到哪去。
3、关键是用户权限。
------解决方案--------------------
1、Oracle建议要把一个用户的数据分离到多个表空间。为什么?
  ---这个分为数据文件和索引文件,把数据和索引分开而来,有利于读取
2、这里建表为什么还要指定表空间,一般不是在新建的用户下,create 表么,创建用户时候指定一个表空间,为什么要这么设计?
  ---指定表空间防止乱啊,不然上万个表,表空间没管理
3、一个用户有一个默认表空间,那这个用户怎么使用多个表空间下的表数据?
  ----在这个用户下建表的时候,可以指定其它表空间,本用户默认的表空间只是表示在建表的时候,如果不指定,在在默认表空间下

------解决方案--------------------
建立表的时候可以指定表空间的。
create table A01
(
  col1 VARCHAR2(2),
  col2 VARCHAR2(2) default 'Y'
)
tablespace tsp1
------解决方案--------------------
大家说的都是些细节,你可以看一下下面这个链接,希望有点帮助。