我需要一些有关如何诊断和解决此问题的指示。我不知道这是一个简单的服务器设置问题还是应用程序设计问题(或两者兼而有之)。
这个 Oracle XE 数据库每隔几个月就会报告一次或两次 ORA-4031 错误。它并没有始终如一地指向 sga 的任何特定部分。最近的一个例子是:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
当这个错误出现时,如果用户不断刷新,点击不同的链接,他们通常会在不同的时间收到更多的此类错误,然后很快就会出现“404 not found”页面错误。
重新启动数据库通常会在一段时间内解决问题,然后一个月左右再次出现,但很少出现在程序中的同一位置(即它似乎没有链接到任何特定的代码部分)(上面的例子Apex 页面从表格中对 5000 多行进行排序时引发错误)。
我尝试sga_max_size
从 140M 增加到 256M,希望这会有所帮助。当然,我不知道这是否有帮助,因为我不得不重新启动数据库来更改设置:)
我在具有 512MB RAM 的 Oracle Enterprise Linux 5 机器上运行 Oracle XE 10.2.0.1.0。该服务器仅运行数据库、Oracle Apex (v3.1.2) 和 Apache Web 服务器。我使用几乎所有默认参数安装它,并且它已经运行了一年左右。大多数问题我都可以通过调整应用程序代码自行解决;它没有被大量使用,也不是关键业务系统。
这些是我认为可能相关的一些当前设置:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
如果有任何帮助,这里是当前的 SGA 大小:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes