Oracle 表空间分配/使用性能影响



TLDR?跳到项目符号点。

我最近在后端部署了一个带有 Oracle 11g 数据库的解决方案到测试环境,性能很糟糕 - 系统无法运行。在较低规格的开发环境中,性能更好。我很欣赏这可能归结为很多很多事情,但 Oracle 设置目前处于火线上,因为它是我最不熟悉的组件(而且我的想法已经用完了)。

数据库是使用 dbca 创建的。在 SQL Developer 中直接针对数据库进行简单的 SELECT 是可以的,但是通过我们的内部数据访问驱动程序(涉及具有大量联接的复杂查询)会导致性能不佳。没有网络延迟问题,数据访问代码在其他地方很好*

*虽然有点健谈 - 另一天的故事。

为了提供帮助,我想要以下信息:

  • SQL Developer显示SYSTEM/SYSAUX的表空间使用率为99%(分别为710Mb/600Mb)。这会对性能产生影响吗?

  • SQL 开发人员显示 TEMP 表空间具有用法 NULL、已分配 NULL、已用 NULL、可用 0、数据文件 NULL。我对数据库运行了查询,以显示临时文件存在并且处于联机状态...我什至删除/重新创建了它,但它仍然在"管理数据库"屏幕中显示为 NULL。这是正常行为吗?如果不是,这会对性能产生影响吗?

提前谢谢。

TLDR - 空间不是你的问题。

  • 您的系统和 SYSAUX 表空间可能没问题。

您的报告可能具有误导性。 您的数据文件可能使用了当前分配空间的 99%。 但我敢打赌,如果你看一下数据文件,你会发现它们可以自动扩展到更大的值。 例如,在我的大多数默认设置安装中:

select tablespace_name, round(bytes/1024/1024) current_mb,
    round(maxbytes/1024/1024) max_mb, autoextensible
from dba_data_files
where tablespace_name in ('SYSTEM', 'SYSAUX');
TABLESPACE_NAME  CURRENT_MB   MAX_MB  AUTOEXTENSIBLE
SYSAUX           2050         32768   YES
SYSTEM           810          32768   YES
除非您

的硬盘驱动器已满,否则您可能还剩下大量空间。 另外,如果你真的超出了系统或SYSAUX的空间,它会抛出很多错误。 例如,由于 sys.aud$ 已满,您将无法登录,或者如果无法写入数据,统计信息收集将引发异常。

DBCA 的 12c 版本甚至没有提供设置 SYSAUX 和 SYSTEM 表空间的选项。

  • 您的临时表空间可能没问题。

完全空的临时表空间是不寻常的。 但这不是一件坏事。临时表空间用于在内存中没有足够的空间时进行排序和哈希等操作。 如果系统运行小型 OLTP 查询并且具有足够的内存,则不需要临时表空间。

同样,即使您愿意,DBCA 也不会让您减小临时表空间的大小。

看起来数据库的大小不正确。要查找性能问题,请运行 statspack 或 awr 并查看相应的报告。此外,将报告粘贴到网上,以便我们查看。

最新更新