pft_kt 2024-09-29 17:25 采纳率: 0%
浏览 3

oracle 21c 单实例多用户内存问题

服务器为windows Server 2019 16Cpus 32GB内存
数据库版本为oracle 21c,插拔库只有一个PDB,在PDB下建有4个用户,各用户对应不同的业务场景,PFILE如下:

pftcloud.__data_transfer_cache_size=0
pftcloud.__db_cache_size=5168m
pftcloud.__inmemory_ext_roarea=0
pftcloud.__inmemory_ext_rwarea=0
pftcloud.__java_pool_size=64m
pftcloud.__large_pool_size=80m
pftcloud.__oracle_base='D:\app\Administrator'#ORACLE_BASE set from environment
pftcloud.__pga_aggregate_target=1648m
pftcloud.__sga_target=8192m
pftcloud.__shared_io_pool_size=128m
pftcloud.__shared_pool_size=2672m
pftcloud.__streams_pool_size=18m
pftcloud.__unified_pga_pool_size=0
*.audit_file_dest=*******************************************
*.audit_trail='none'
*.compatible='21.0.0'
*.control_files=************************************************************************
*.db_block_size=8192
*.db_name='PFTCLOUD'
*.db_recovery_file_dest=*******************************************************
*.db_recovery_file_dest_size=2048m
*.diagnostic_dest='E:\ora_db\db_home'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PFTCLOUDXDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_PFTCLOUD'
*.memory_max_target=9841m
*.memory_target=9840m
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=3000
*.pga_aggregate_target=1639m
*.processes=1280
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=8192m
*.undo_tablespace='UNDOTBS1'

后端4个.NET程序,使用IIS 10.0 发布,程序连接有使用连接池,按照CPU*2+1,连接池为33个,程序池配置为4线程访问
问题:
为什么进程内存会一直涨,初始只有10个G左右,随着使用,大概十来天会涨到20几个,而且没有停止的迹象,百思不得其姐,问题在哪?
(尝试过memory_max_target之类的,没有效果)

img

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-29 17:26
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    您的问题是关于Oracle数据库的内存使用持续上升的问题。这种情况可能由多种原因导致,以下是一些建议和可能的解决方案:

    1. 连接池大小与配置: 您提到程序连接使用了连接池,且池的大小是固定的。当数据库活动增加时,固定大小的连接池可能导致数据库响应延迟,因为所有的连接可能都在等待可用的资源。您可以考虑动态调整连接池的大小以适应负载的变化。此外,确保连接池中的连接在使用完毕后被正确关闭和释放。
    2. 数据库性能监控: 使用Oracle的内置工具或第三方工具监控数据库的性能。查看缓存命中率、事务提交时间等关键指标,以判断是否存在性能瓶颈。例如,如果缓存命中率下降,可能需要增加SGA(系统全局区域)的大小以提高性能。您提到的参数已经是为您配置好的,但是如果需要可以根据业务情况进行调整。但是请注意调整参数后需要进行充分的测试以确保没有负面影响。
    3. 会话管理: 查看Oracle的会话管理情况,检查是否有过多的会话没有被正确关闭或释放资源。长时间运行的会话可能会导致资源泄漏和内存增长。确保应用程序在不再需要数据库连接时正确地关闭会话。
    4. 日志和数据变更: 如果您的应用程序在进行大量的数据插入、更新或删除操作,可能会导致日志增长并消耗更多的内存资源。监控日志的使用情况并根据需要进行管理。此外,定期检查和管理撤销空间(undo space)以确保没有大量的未释放撤销空间占用了大量内存空间。
    5. 长时间运行的查询: 在后台运行的长时间运行的查询可能会导致锁定或产生不必要的日志输出等性能问题。您可以分析正在运行的活动会话以找到潜在的瓶颈点,然后考虑调整查询优化或重新设计数据库结构以提高性能。
    6. 内存泄漏: 尽管Oracle本身是一个内存管理的系统,但某些应用程序或外部因素可能导致内存泄漏。考虑使用Oracle提供的诊断工具和第三方工具来检查是否存在内存泄漏的问题。如果可能的话,考虑更新您的应用程序以确保它们不包含已知的内存泄漏问题。

    总之,Oracle的内存管理是一个复杂的任务,涉及多个参数和配置选项。解决内存问题需要对您的应用程序、数据库配置和Oracle的架构进行深入的调查和分析。在进行任何更改之前,建议先在测试环境中进行验证以确保不会对生产环境造成影响。如果问题仍然存在,建议联系Oracle支持团队进行进一步的调查和解决。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?