本帖最后由 bjhdy 于 2011-09-09 20:06:09 编辑

解决方案 »

  1.   

    你的理解有问题,从你的描述上看估计你的table1是个分区表,按照地市分的区。
    然后【北京市】的分区的数据存储在tbs1表空间上
        【上海市】的分区的数据存储在tbs2表空间上 这仅仅是数据存储设计上的概念,并不影响你对数据的查询。select * from table1 where 地市字段 in('北京','上海');数据库会自己去找相应的数据的,至于数据存储在哪个表空间上你不用关心。
      

  2.   

    同意1楼,你的表达有问题,呵呵。一张表可以同时使用多个表空间,在同一个数据库内,不可能命名两个同名的table。在查询的时候,你不用关心某些数据是放在什么表空间中,直接写查询条件就可以了。
      

  3.   

    谢谢你的解答。
    不过,分区存储技术是企业版的技术,我不能用这个技术,因为我使用的是oracle标准版。
    这些表空间是我自己建立的。我想,如果有办法实现帖子中的问题,在标准版下就能把不同单位的数据存储在不同表空间中,有利于提高效率。
      

  4.   

    首先你这些表都是存储在一个test模式下,表是不能重名的。
    不可能建一个table1 表空间为tbs1,再建一个table1表空间是tbs2的。
    因此你的想法没有办法有问题。除非 table1 存储北京的数据表空间为tbs1
         tblle2 存储上海的数据表空间为tbs2
         。然后建一个视图
    create or replace view view_name as
    select * from table1
    union all
    select * from table2
    .....但是这样无法保证查询效率。
      

  5.   

    谢谢各位的回复。假设:
    表空间为tbs1的table1,table1的所有者是ow1,
    表空间为tbs2的table1,table2的所有者是ow2。是不是可以呢?
      

  6.   

    在数据库用户:ow1或ow2都可以执行下面的程序:
    select * from ow1.table1 
    union 
    select * from ow2.table1;
    即可注意,如果在ow1执行,需要在ow2为用户ow1授权可以查询ow2.table1,同理要在ow1查询,需要为用户ow2授权可以查询ow1.table1;
    如在ow2上执行授权查询命令:
    grant select to  ow1 on table1;
      

  7.   

    补充一句:除非ow1 和ow2 用户都拥有DBA角色,可以不用授权,否则就必须要执行上面的授权命令
      

  8.   

    lz你需要先了解一下ts和schema的概念,用union 或者union all实现你的要求
      

  9.   


    对不起,没表达清楚。我的想法是:总部要把各个分部的数据汇总起来,规划是:在总部的数据库中给每个分部建一个用户和一个表空间,分别存储各个分部的数据。但是这样一来,查询全公司(包括各个分部)的数据就出现问题了,不知道用什么语句好。为简化其间,举两个表空间的例子。两个表空间的两个表同名,且结构相同,两个表的拥有者是两个用户。即,tbs1 包含表table1,拥有者是user1,tbs2 包含表table1,拥有者是user2。两个table1的结构相同。现在有个user3,他有权查看两个表空间的table1。现在要使用一条语句查询出两个table1中的数据。如何查。推而广之,如果20个表空间包含表table1,为实现查询目的,如何处理?
      

  10.   

    在user3上建立视图。但不能保证效率。create or replace view view_name as
    select * from user1.table1
    union all
    select * from user2.table1
    .....
      

  11.   


    lz需要先了解一下schema和ts的概念。你这里的描述把这些东东给混淆了,倒是很不大让人明白你的意思。对于你的需求,不同的用户建立的表,即使名字一样,也是不同的对象。不同的对象的结果集合并,要用union和union all实现。