nsa*_*sen 9 memory configuration oracle-12c
我想使用Oracle的自动内存管理,限制在4GB左右。(过去的经验表明,这对于我的开发 PC 来说已经足够了,而且比这更容易了解任何性能问题。)
我相信这些是要遵循的说明:
简而言之,要启用自动内存管理,请设置 memory_target 和(可选)memory_max_target。前一个参数应该是一个动态值,后者是一个更难的限制,只能在停止/启动数据库时更改。
我将这些设置为 sysdba:
SQL> alter system set memory_target = 4G scope = spfile;
System altered.
SQL> alter system set memory_max_target = 8G scope = spfile;
System altered.
Run Code Online (Sandbox Code Playgroud)
并检查值
SQL> show parameter target;
Run Code Online (Sandbox Code Playgroud)
范围可以只是当前正常运行时间的“内存”、“spfile”或“两者”;我选择 spfile,因为我将重新启动:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
Run Code Online (Sandbox Code Playgroud)
然而,这太简单了:
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13104M
Run Code Online (Sandbox Code Playgroud)
恢复并不难,但在我看来,如何通过内存调整也不是很明显,所以我将在下面发布我所做的事情,高级海报可以纠正/粉碎我。无论哪种情况,我都认为将它放在一个地方很好。
问题是在安装数据库时,设置了冲突的其他参数。所以我需要将它们从“spfile”导出到“pfile”,备份它们,编辑它们,测试它们并从pfile导入到spfile:
SQL> create pfile='some/file/path' from spfile;
File created.
Run Code Online (Sandbox Code Playgroud)
然后我将冲突参数设置为零:
...
--*.pga_aggregate_target=3270m
*.pga_aggregate_target=0m
...
--*.sga_target=9811m
*.sga_target=0m
...
Run Code Online (Sandbox Code Playgroud)
然后我尝试再次启动:
SQL> startup pfile='some/file/path';
ORACLE instance started.
...
Run Code Online (Sandbox Code Playgroud)
并检查上面的 memory_target 和 memory_max_target 参数。一旦对事情感到满意,为了保持我所做的设置:
SQL> create spfile from pfile='some/file/path';
File created.
Run Code Online (Sandbox Code Playgroud)
要回答标题中的原始问题:
从 12c 开始,可以轻松限制 SGA 和 PGA。SGA 在早期版本中也可能受到sga_max_size
数据库计算所依据的或 其他参数的限制sga_max_size
。
有问题的部分通常是 PGA,没有简单的限制值,只有一些变通方法,但现在可以通过使用pga_aggregate_limit
参数轻松限制。
归档时间: |
|
查看次数: |
19269 次 |
最近记录: |