我很好奇 大家来讨论一下目前我遇到这样一个情况 一个项目中  一个ORACLE中有200个表空间  一个表空间下面有1000到1W张表不等(随运营时间不等 创建出不等的动态表结构)也就是说 200*5000(平均数据) = 1000000 张表   一百万张表  就是ORACLE的极限??我们单位有位 高人说  10G 下  这差不多就是一个实例的表数量极限了
还说 9i 有可以手动设置缓存的功能  貌似可以解决这个问题但是 10G下  ORACLE是自动维护 内存缓存的 所以也就只能是极限了他所谓的极限的意思 是ORACLE 中的‘系统表’(在9i中可手动设置 将超级大的‘系统表’放入到内存中  而10G不能手动调内存缓存 所以 每次的交互数据库的访问 互让ORACLE很慢..)

解决方案 »

  1.   

    Tables      Maximum per clustered table 32 tables
                Maximum per database Unlimited来自oracle 10g Database Reference你所谓的朝大系统表,在oracle内存里放在shared pool的数据字典缓冲区,看看ORACLE内存结构就知道了,这部分区域,不可能设置特别大。
      

  2.   

    应该没有限制, 关键是性能这块, 如果100万张表,每张表都是上千万的,在访问量大点,那肯定跑不动,所以个人认为还是主要从性能来看..
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716
      

  3.   


    这位同学 一阵见血..这也是我们项目的困惑 我们做集团ERP   集团客户必须要求在同一个数据中心  同一应用  但是一个集团下有很多的单位  而我们的应用 一个单位 就是一个独立的表空间 一套独立的表结构  
    所以当集团用户的下属单位越来越多的情况下 此问题立刻凸显出来业界中有什么方法能解决这个问题吗?我偶尔听说过内存数据库  oracle也有自己的产品
    我在想 是否可以将 oracle的数据字典缓冲区 利用内存数据库呢?
      

  4.   

    ORACLE 10g也可以通过设置sga_target=0,来实现SGA内存手动管理。
    或者你在自动管理SGA情况下,设置shared_pool的最小值。而这个最小值,把它设置的高些。
    至于数据字典表如obj$,user$等是否能够像普通用户表那样放进keep池里,我没有尝试过,不敢妄言。你可以查查资料,看看是否能将它们手工“钉”在数据字典缓冲区里。另外,大shared_pool不一定能解决你的问题,因为shared_pool维护成本很高。性能是否能改观,还须经过严密测试。
      

  5.   

    您绝对是专家...每次发帖 一针见血..不晓得 您有没有研究过内存数据库 如 ORACLE收购的那个timesten。如果我这种情况 能应用 TIMESTEN 吗??或者说我只把oracle的SGA 或者其中的数据字典缓冲区 利用某中内存数据库技术 将他们‘钉’内存里。我的意思就是 我们已经很难修改目前的产品架构, 但是如果通过 加内存就能明显提高数据库的 容量, 提高ORACLE的响应速度..  将是最完美的方案。但是 怎末做呢? 迷茫》。
      

  6.   

    呵呵,您太客气了,我也只是只菜鸟而已,只是接触的时间长点。timesten听是听说过,在ORACLE 10g OLTP文档里,专门有部分讲内存数据库的,叫In-Memory Database Cache。不过除了知道,从没去研究过它,很难评估您是否可以采用它来解决问题。
    很遗憾。