公司购买的BPM系统在部署的时候,软件商想都没想直接建完数据库后使用SYSTEM表空间,现在随着公司发展,增加开发人员之后很不好管理,考虑要把应用从这个表空间分离出来,软件商没有提供应用的ER设计图,怎么分离这些数据表呢?应用的很多表都不确定,还有约束、索引,导入导出好几次都失败了!没办法,求大神提供技术支持有意向加下微信:gt2390461568

解决方案 »

  1.   

    如果应用对象都建在system或者sys等系统用户下,没法确认应用所使用的对象,那么这种分离就会很危险,有一个方法可以先粗略的区分下:查询dba_objects,查看对象的created字段,从而与系统对象区分开来。但如果只是表建错了表空间,建到了SYSTEM表空间上,那么可以使用move操作将表迁移至新的应用专属表空间,当然move之后需要rebuild这些表上的索引。
      

  2.   

    1、建立新的表空间,建立新的用户,使用导出导入的方法
    2、使用语句逐个迁移,表使用move tablespace,索引使用rebuild 
    如: select 'alter table ' ||table_name || ' move tablespace newtablespace;' from user_all_tables where tablespace_name='SYSTEM' and owner='你的用户';
    select 'alter index ' || index_name || ' rebuild tablespace newtablespace;' from user_indexes
     WHERE index_type = 'NORMAL'
       AND table_owner = '你的用户';