用job的话不能实在时时性,要看你系统的需求是什么?
有那些数据是要共享的?以后系统要进行如何的库管理?应用系统多大等等!

解决方案 »

  1.   

    实时性到没有要求。
    直接讲就是要将
        A用户下所有表和B用户下所有表合成到一个新的用户M下。
    目前的情况是,A部门的数据存放在A用户名下。
                  B部门的数据存放在B用户名下。
                  C部门的数据存放在C用户名下。
                  等等。。
    要达到的效果:
       A、B、C等部门的数据放到同一个物理表中。以后统计所有部门的数据就方便了。
    不需要:select * from A.test 
    union select * from B.test
    union select * from C.test .联合查询。
       目前直接的方法是方法2,修改程序,但代价太高且易出错。
      

  2.   

    好办!
    1、如果统计数据不大,速度不做太大要求:
       可以在新的用户M下面做对应那些用户的视图:
       create view M.test 
       is
       select col1...,'A' as col_user from A.test 
       union 
       select col1...,'B' as col_user from B.test
       union 
       select col1...,'C' as col_user from C.test 
       语法不一定对呀!意思就是用视图对其他用户的该种类型表进行对应!
       对于终端,感觉不到变动!'' as col_user是为了方便你区别数据来自那个
       用户!
    2、如果统计数据大,速度做了要求:
       你可以用实体化视图(物化视图)来实现。思路和语句基本和上面的一样,
       只是不是对应其他表,而是从其它表将数据真正的复制到M所在的表空间下!
       你可以选择快速刷新,或其他的!ok?
      

  3.   

    感谢ashzs 的方法。
    to:zgh2003(世纪飞扬),创建了同义词还是要Union起来才能用。
    期待其他方法
      

  4.   

    1。为每个数据库建立数据库连接
    2。在其中一个数据库中建同义词;如:
    create database link a1 ....create database link a2 ....在其中数据库中
    create public synonym tbl001 for user01.tbl001@a1
    create public synonym tbl002 for user02.tbl002@a2
    ....
      

  5.   

    根据楼主的意思,应该是在同一个数据库中 ,将业务数据按部门类别放在了不同的数据库用户下,一个部门对应一个数据库用户。 赞同用VIEW。
    新建立一个用户,可以在该用户下建立多个视图,只做查询使用。
    不过需给该用户分配可以访问别的用户数据的权限
    DBA权限??