本次目标:设置数据库默认为spfle启动,并且数据库SGA大小为2G,PGA大小为200M
1、环境检查
Oracle 9i以后启动的时候默认使用的初始化文件是spfile,但是为了万一还是进行查看一下
首先,确认您的数据库当前是否使用pfile(静态文件)进行启动。您可以运行以下命令来检查
这里命令输入pfile和spfile都是一样的
SHOW PARAMETER spfile
可以看到我当前是spfile启动
如果是pfile启动的话,需要手工改动使用spfle
STARTUP SPFILE = spfile的路径
2、修改SGA大小和PGA大小
ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=200M SCOPE=SPFILE;
修改成功。
重启数据库实例,使新的参数设置生效:
SHUTDOWN IMMEDIATE;
STARTUP;
检查参数设置是否生效。执行以下命令确认参数设置是否正确:
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
查看到一切正常,完成任务。
3、可能遇到的报错
这里注意可能会因为内存不足而报错。
问题解析:
发现此时报错,虽然提示的MEMORY_TARGET值最少为2256M,但是发现修改为参数文件还是无法启动数据库实例,此时可以把memory_target设置为0,此时禁用掉AMM管理方式,Oracle 数据库实例将无法自动调整和管理内存分配。这意味着需要手动配置和管理各个内存结构,如共享池、数据库缓冲区等,以及进行手动的性能优化和内存管理工作。
AMM 是一种自动内存管理技术,它允许数据库实例根据需要自动调整和管理内存分配。通过设置 SGA_TARGET 参数,AMM 可以自动分配和释放共享池、数据库缓冲区和重做日志缓冲区等共享内存组件的大小,以适应实际工作负载的变化。AMM 简化了内存管理的过程,并且对于许多小型到中型数据库是一个方便且有效的选项。
ASMM 是 AMM 的一个特定功能,用于自动管理 SGA 内存中的共享池和数据库缓冲区的大小。ASMM 会根据实际需求动态调整这些内存组件的大小,以提供最佳性能和资源利用率。ASMM 主要关注 SGA 内存的管理,而没有涉及其他内存结构,比如 PGA(Program Global Area)。
总结来说,AMM 是一种更广义的自动内存管理技术,包括对SGA和PGA的管理,而 ASMM 是 AMM 中专注于自动管理 SGA 内存的一个具体功能。选择使用哪种技术取决于数据库管理员对内存管理的需求和偏好,以及数据库的规模和工作负载。
具体参考:有道云笔记 (youdao.com)https://note.youdao.com/ynoteshare/index.html?id=03d29c5e561010b357be863b0b20403d&type=note&_time=1698498710962
解决方案:
修改配置文件:
ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE;
然后再去执行上边第二步操作就OK了。