作为一个Oracle菜鸟,将oracle对象建在默认的system表空间中是常常会发生的事情.比如:creat user user1 identified by pass1;因为没有指定默认的表空间,所以当导入数据的时候就会导入到SYSTEM表空中,可想而知,这样数据库的性能是极其糟糕的.
于是就需要对表空间进行迁移,以下是总结的步骤:
要为USER_A将TABLESPACE_A的所有对象移动到TABLESPACE_B,应遵循以下步骤:
1 为USER_A导出TABLESPACE_A中的所有对象。
2 执行REVOKE UNLIMITED TABLESPACE FROM USER_A;以收回任何授予用户帐户的无限制表空间权限。
3 执行ALTER USER USER_A QUOTA 0 ON TABLESPACE_A;以使USER_A帐户不能在TABLESPACE_A上创建任何对象。
4 删除TABLESPACE_A中USER_A拥有的所有对象。这一步不同的人有不同的习惯,大致有几种:
a.在plsql developer中手工删除,象我这样的菜鸟似乎没有plsql developer就不能活了,以后要注意了.
b.drop user user_a cascade;create user user_a identified by pass_a default tablespace tablespace_a;然后是一系列的grant 操作;
c.执行SQL生成drop脚本:select 'drop '||object_type||' '||object_name||';' from dba_objects where owner='USER_A';执行drop 脚本.
5 执行ALTER USER USER_A DEFAULT TABLESPACE TABLESPACE_B;以使TABLESPACE_B成为USER_A用户帐户的缺省表空间。Oracle试图将对象导入TABLESPACE_A,因为这些对象是从TABLESPACE_A导出的。注意用户不具有TABLESPACE_A上的配额。然后将查看用户的缺省表空间。在Oracle可以将数据导入TABLESPACE_B之前,必须给予USER_A用户该表空间上足够大的配额,如下步骤所示。
6 执行ALTER USER USER_A QUOTA UNLIMITED ON TABLESPACE_B;
7 导入被导出的数据库对象。缺省情况下,导入工具试图将它们导入到TABLESPACE_A中,然而,因为用户不具有这个表空间的配额,所以所有的对象将被创建在USER_A的缺省表空间TABLESPACE_B中。
于是就需要对表空间进行迁移,以下是总结的步骤:
要为USER_A将TABLESPACE_A的所有对象移动到TABLESPACE_B,应遵循以下步骤:
1 为USER_A导出TABLESPACE_A中的所有对象。
2 执行REVOKE UNLIMITED TABLESPACE FROM USER_A;以收回任何授予用户帐户的无限制表空间权限。
3 执行ALTER USER USER_A QUOTA 0 ON TABLESPACE_A;以使USER_A帐户不能在TABLESPACE_A上创建任何对象。
4 删除TABLESPACE_A中USER_A拥有的所有对象。这一步不同的人有不同的习惯,大致有几种:
a.在plsql developer中手工删除,象我这样的菜鸟似乎没有plsql developer就不能活了,以后要注意了.
b.drop user user_a cascade;create user user_a identified by pass_a default tablespace tablespace_a;然后是一系列的grant 操作;
c.执行SQL生成drop脚本:select 'drop '||object_type||' '||object_name||';' from dba_objects where owner='USER_A';执行drop 脚本.
5 执行ALTER USER USER_A DEFAULT TABLESPACE TABLESPACE_B;以使TABLESPACE_B成为USER_A用户帐户的缺省表空间。Oracle试图将对象导入TABLESPACE_A,因为这些对象是从TABLESPACE_A导出的。注意用户不具有TABLESPACE_A上的配额。然后将查看用户的缺省表空间。在Oracle可以将数据导入TABLESPACE_B之前,必须给予USER_A用户该表空间上足够大的配额,如下步骤所示。
6 执行ALTER USER USER_A QUOTA UNLIMITED ON TABLESPACE_B;
7 导入被导出的数据库对象。缺省情况下,导入工具试图将它们导入到TABLESPACE_A中,然而,因为用户不具有这个表空间的配额,所以所有的对象将被创建在USER_A的缺省表空间TABLESPACE_B中。