请问各位:
   1. 怎样列出Oracle中一个用户所管理的所有表,并指出该表所属的表空间。
   2. 怎样把Oracle中一个用户所管理的所有表,转移到一个指定的表空间中。
多谢各位的帮助,期待指点。

解决方案 »

  1.   

    1.SELECT TABLE_NAME,TABLESPACE_NAME FROM ALL_TABLES WHERE OWNER=UPPER('用户名');
    2.更改表的表空间:alter table 表名 move tablespace 表空间名;
      更改用户表空间,登陆到sysdba后: alter user 用户名 default tablespace 表空间名;
      但更改用户表空间后以前建立的表不会一起移过去,新建表会在新的表空间中,手动移或者写个批处理文件移过去吧,其他方法不清楚了。
      或者用EXP/IMP试试。
      

  2.   

    同意楼上的方法,问题一还可以用:
    SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;
    以你登陆的用户来查询。
      

  3.   

    首先非常感谢以上两位。
    我刚才试过了很管用,但是出现了一个问题:
    虽然新的表空间变大了, 但原来的表空间并没有变小。这是为什么呢?
    举个例子来说:
     表空间TS_TABLESPACE1 中存储了表: t1, t2, ... t20 。 表空间TS_TABLESPACE1的大小是500MByte.
     经过alter table t1/t2/t3/..t15 move tablespace TS_TABLESPACE2后, 表空间TS_TABLESPACE2的大小变大了, 但是TS_TABLESPACE1 并没有随着表t1..t15的转移而变小, 这是为什么呢?
     如果我需要把TS_TABLESPACE1变小而又不会丢失数据,该怎么办呢?谢谢帮助。
      

  4.   

        1. 怎样列出Oracle中一个用户所管理的所有表,并指出该表所属的表空间。 
    select table_name,tablespace_name from dba_tables where owner='';
    2. 怎样把Oracle中一个用户所管理的所有表,转移到一个指定的表空间中。
    exp的时候按照owner来导出,具体看exp命令的用法!