【问题标题】:No free buffer available in buffer pool缓冲池中没有可用的可用缓冲区
【发布时间】:2018-11-26 05:39:37
【问题描述】:

我试图创建一个包含数百万数据的表,但出现以下错误。

SQL Error: ORA-00379: no free buffers available in buffer pool DEFAULT for block size 8K

00379. 00000 -  "no free buffers available in buffer pool %s for block size %sK"
*Cause:    All buffers in the specified buffer pool for the specified block size
           are in use and no free buffers are available.
*Action:   Increase the number of buffers in the specified pool for the specified
           block size

如何增加缓冲区的大小。

【问题讨论】:

    标签: sql oracle create-table


    【解决方案1】:

    这是由于指定块大小的缓冲池不足,所有缓冲池都被利用了,您需要为缓存设置一些更高的值才能使其工作。

    以 sys 用户连接到数据库实例并运行命令

    Alter system set db_cache__size = 8M or 16M scope=both;

    【讨论】:

    • 如果正在使用 AMM(自动内存管理),那么您不应该将 db_8k_cache_size 设置为 0 以外的任何值,是吗? (见下文我有一个相关的问题)
    【解决方案2】:

    从 C# 运行多个查询(组装导出)时,我在大型数据库(160 GB)上遇到了同样的问题。

    client_result_cache_size 大整数 0
    db_16k_cache_size 大整数 0
    db_2k_cache_size 大整数 0
    db_32k_cache_size 大整数 0
    db_4k_cache_size 大整数 0
    db_8k_cache_size 大整数 0
    db_cache_size 大整数 0
    db_flash_cache_size 大整数 0
    db_keep_cache_size 大整数 0
    db_recycle_cache_size 大整数 0

    阅读上面的“0”意味着它由 AMM(自动内存管理)自动管理,但似乎 Oracle 在查询期间没有进行垃圾收集。

    我认为下图显示了 AMM 使用的 Oracle 内存。

    memory_max_target 大整数 2512M memory_target 大整数 2512M

    我不认为手动设置内存是答案,但答案是什么?

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      相关资源
      最近更新 更多