实时性到没有要求。 直接讲就是要将 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,修改程序,但代价太高且易出错。
好办! 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?
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 ....
直接讲就是要将
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,修改程序,但代价太高且易出错。
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?
to:zgh2003(世纪飞扬),创建了同义词还是要Union起来才能用。
期待其他方法
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
....
新建立一个用户,可以在该用户下建立多个视图,只做查询使用。
不过需给该用户分配可以访问别的用户数据的权限
DBA权限??