请问各位:
1. 怎样列出Oracle中一个用户所管理的所有表,并指出该表所属的表空间。
2. 怎样把Oracle中一个用户所管理的所有表,转移到一个指定的表空间中。
多谢各位的帮助,期待指点。
1. 怎样列出Oracle中一个用户所管理的所有表,并指出该表所属的表空间。
2. 怎样把Oracle中一个用户所管理的所有表,转移到一个指定的表空间中。
多谢各位的帮助,期待指点。
2.更改表的表空间:alter table 表名 move tablespace 表空间名;
更改用户表空间,登陆到sysdba后: alter user 用户名 default tablespace 表空间名;
但更改用户表空间后以前建立的表不会一起移过去,新建表会在新的表空间中,手动移或者写个批处理文件移过去吧,其他方法不清楚了。
或者用EXP/IMP试试。
SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;
以你登陆的用户来查询。
我刚才试过了很管用,但是出现了一个问题:
虽然新的表空间变大了, 但原来的表空间并没有变小。这是为什么呢?
举个例子来说:
表空间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变小而又不会丢失数据,该怎么办呢?谢谢帮助。
select table_name,tablespace_name from dba_tables where owner='';
2. 怎样把Oracle中一个用户所管理的所有表,转移到一个指定的表空间中。
exp的时候按照owner来导出,具体看exp命令的用法!