暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

单个Oracle实例中有多大?

ASKTOM 2019-07-08
252

问题描述

我的客户有一个大的5节点RAC与计数和指标如下所示。它的目的是一个数据仓库,但实际上它用于许多不同类型的数据和流程。目前看来,它的表现相当不错,但是我对对象计数及其多方面的使用有一些担忧。我的直觉是将其拆分为更专注于特定用途的较小实例。我知道数据量是合理的,我不认为它正在接近任何硬限制,但字典似乎缓慢 (例如: 从下面的dba_extents查询计数需要25分钟)。

我的担忧是否有效?

我们是否需要考虑其他问题,或者这对于Oracle DB来说是合理的负载?

什么样的 “对象计数” 应该让DBA紧张?

/* =      2,138 */ select count(*) from  dba_data_files ;           
/* = 15,632,812 */ select count(*) from  dba_extents ;  
/* =     39,551 */ select count(*) from  dba_indexes ;           
/* =     63,675 */ select count(*) from  dba_ind_columns ;           
/* =    160,969 */ select count(*) from  dba_ind_partitions ;           
/* =    157,322 */ select count(*) from  dba_ind_subpartitions ;           
/* =    549,434 */ select count(*) from  dba_objects ;  
/* =    406,332 */ select count(*) from  dba_segments ;  
/* =  1,866,084 */ select count(*) from  dba_source ;           
/* =     32,474 */ select count(*) from  dba_tables ;           
/* =        538 */ select count(*) from  dba_tablespaces ;           
/* =  1,156,530 */ select count(*) from  dba_tab_cols ;           
/* =     47,959 */ select count(*) from  dba_tab_partitions ;           
/* =     14,800 */ select count(*) from  dba_tab_subpartitions ;           
/* =      1,264 */ select count(*) from  dba_users ;           
/* =     10,761 */ select count(*) from  dba_views ;           

select sum(bytes) from  dba_data_files ;  /* = 73 terabytes */
select sum(bytes) from  dba_free_space ;  /* =  9 terabytes */

select * from v$version ;
   /*  Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
       PL/SQL Release 11.2.0.4.0 - Production
       "CORE 11.2.0.4.0 Production"
       TNS for Linux: Version 11.2.0.4.0 - Production
       NLSRTL Version 11.2.0.4.0 - Production
   */
复制


谢谢你能提供的任何建议。

专家解答

你在向后接近这个。一个应用程序可以有成百上千个表。所以你可以有大量的对象,但没有 (简单的) 方法来拆分它跨数据库。

同样,我会担心一个大型应用程序,它的表数量很少。说不到10个。这表明人们依赖于 “通用” 数据模型。

因此,与其查看对象计数,不如询问对象是否在逻辑上相关。如果你能支持业务需求。

例如:

-客户对其查询/应用程序的性能感到满意吗?
-开发人员是否能够在合理的时间范围内构建和发布更改?
-您是否可以以满足企业恢复时间和点对象的方式备份和还原数据?
-...

并询问是否可以通过拆分数据库来改进其中的任何一个。

拥有单个 “存储桶” 数据库的关键领域通常是修补和升级。例如,对以下任何一项回答 “是” 可能意味着一小部分功能会阻止您升级数据库:

-数据库是否托管仅支持特定版本的任何第三方应用程序?
-测试数据库中的所有内容是否会成为修补和升级的重要障碍?
-您是否必须应用一次性补丁或设置下划线参数来修复应用程序的一小部分?
-...

在这种情况下,将它们拆分为单独的数据库是有意义的。如果升级到12c时,您很幸运地使用单独的可插拔数据库获得了多租户选项,则可以对此有所帮助。

也就是说,有一些物理数据库限制。您可以在以下位置检查这些内容:

https://docs.oracle.com/cd/E11882_01/server.112/e40402/limits002.htm#REFRN0042

此外,像这样的大型 “桶” 数据库通常包含许多过时的对象。例如,弃用功能、为备份或报告目的而创建的临时表等。可能值得一看,看看是否有什么可以删除的;)

PS-在Oracle数据库术语中,数据库是文件。实例是服务器和内存区域上运行的进程。所以如果你有一个5节点RAC,你有一个数据库,五个实例。没有一个实例!
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论