创建表时给表指定对应的表空间,当我不需要时 能否删除对应的表空间引用?有相应的语法吗?麻烦大虾指点。比如我创建了a表
createl a
(
    a varchar2(1)
)
tablespace xxxx;并指定了所引用的表空间,
当我不需要a表对应的表空间xxx时,如何删除他们之间的引用,前提当然不是我把a表删除。麻烦大虾指点迷经。

解决方案 »

  1.   


    --建立表时你可以给表指定表空间:
    create table test(
           id number,
           name varchar2(10)
           )
    tablespace users;
    --如果没指定表空间,那么建表时将表建立在用户默认的表空间里面
    --什么叫我不需要a表就应的表空间?
    --将表建立在另一个表空间不就可以了多看看书吧......
      

  2.   

    不管使用当前用户默认的表空间也好,
    还是指定表空间,表总是存在一个表空间中,
    不可能脱离表空间凭空存在
    你可以通过查询视图来查看表所在的表空间
    select t.TABLE_NAME,t.TABLESPACE_NAME from user_tables t where t.TABLE_NAME='你的表名';
    你可以将表移到别的表空间
    alter table 表名 move tablespace 新表空间名;
      

  3.   

    呵呵, 不好意思 可能我提问题的时候,描述的不是那么的清楚。 意思如您所说,本来我所建的表是存在用户的默认表空间里,但后续 为了方便维护 和区分 我将新建一个表空间来存放我相应的表,和索引。 
    如果我不用我指定的表空间了,如何切换到 原来的默认表空间去,? 还是用
    alter table tablename move tablespace newtablespacename, 这种形式, 直接切换下?
      

  4.   


    谢了, 切换的语句我知道。现在是这样的一个情形,
    我自己写了一个oracle升级的脚本。 对原来的数据库结构进行了修改。同时也修改了表空间信息
    一旦当我需要回滚时,我想切换回原来的表空间。 如果其他方式的话, 只有在执行升级脚本前 就查询出默认的表空间。在回滚脚本中 用您说的切换语句 move 转移了。
      

  5.   

    一般情况下建表都要指定表空间,这样便于管理,表和表空间,当然你可以使用默认表空间。
    如果要移动到别的表空间:
    修改表空间
    alter   table   table_name   move   tablespace   tablespace_name   
    修改索引的表空间
    alter index  index_name  rebuild  tablespace tablespace_name