您的位置:首页 > 数据库

RAC环境下如何将数据库内存由200G调整到500G

2017-08-31 10:33 375 查看
版本:oracle 11.2.0.4 rac for solaris 
1.先备份spfile:

直接copy备份:

su - oragrid

-bash-4.1$ pwd

/dlmapp/oragrid/home

-bash-4.1$ id

uid=1003(oragrid) gid=103(oinstall)

-bash-4.1$ asmcmd

ASMCMD> ls

dlmDG1/

dlmDG2/

OCRVOTDG/

REDODG1/

ASMCMD> cd dlmdg1

ASMCMD> ls

ASM/

dlm/

snapcf_dlm.f

ASMCMD> cd dlm

ASMCMD> cp spfiledlm.ora /dlmapp/oragrid/home/

copying +dlmdg1/dlm/spfiledlm.ora -> /dlmapp/oragrid/home//spfiledlm.ora

建立pfile来备份spfile:

su - oradlm

sqlplus /nolog

conn /as sysdba

create pfile='/dlmapp/orapl/home/initdlm.ora' from spfile;

若更改参数后,导致无法启动实例,可以按以下方法还原参数:

方法一:

  在asmcmd中执行:cd /dlmapp/oragrid/home/spfiledlm.ora  +dlmdg1/dlm/,copy完后,查看到实际的spfile文件名,然后在更改每个实例对应的init参数文件的指向,如下:

-bash-4.1$ cat initdlm2.ora

SPFILE='+dlmDG1/dlm/spfiledlm.ora'  ---spfile文件名作相应修改

方法二:

  以备份的pfile文件启动实例,如下:

SQL>startup nomount pfile=/dlmapp/orapl/home/initdlm.ora

SQL>create spfile='+dlmDG1' from pfile;

查看到实际的spfile文件名,然后在更改每个实例对应的init参数文件的指向,如下:

-bash-4.1$ cat initdlm2.ora

SPFILE='+dlmDG1/dlm/spfiledlm.ora'  ---spfile文件名作相应修改
优先方法二,通过pfile来恢复

2.OS的内存参数修改(两节点)

su - root

projects -l

projmod -sK "project.max-shm-memory=(privileged,600G,deny)" user.oradlm

projmod -sK "project.max-shm-memory=(privileged,600G,deny)" user.oragrid
3.数据库参数修改

周五晚利用应用程序发版时间,先停掉应用,再一个一个实例来改sga参数:

节点一:

alter system reset sga_max_size scope=spfile;  #原来为150G

alter system set db_cache_size=120G scope=spfile; 

alter system set shared_pool_size=75G scope=spfile;  #原来为26G

alter system reset shared_pool_reserved_size scope=spfile; #原来为512M

alter system set db_keep_cache_size=270G scope=spfile; #原来为1G

alter system set "_lm_sync_timeout"=1200 scope=spfile; #(11.2.0.4 缺省为 163)

alter system set "_lm_tickets"=8000 scope=spfile;  #(11.2.0.4 缺省为 1000)

alter system set "_ksmg_granule_size"=134217728 scope=spfile; #原来为16777216

alter system set "_gc_policy_minimum"=15000 scope=spfile; #(11.2.0.4 缺省为 1500)

alter system set gcs_server_processes=20 scope=spfile; #原来为10

alter system set java_pool_size=3584M scope=spfile; #原来为2G

已有的其它内存参数设置,参考如下:

large_pool_size                      big integer 15808M

streams_pool_size                    big integer 1G

更改完后,同时停掉实例,然后一个一个节点地启动实例。

查看当前用户设置的shm设置是有更改:
prctl -n project.max-shm-memory -i process $$

4.重启

-bash-4.1$ srvctl start instance -d dlm -i dlm2

PRCR-1013 : Failed to start resource ora.dlm.db

PRCR-1064 : Failed to start resource ora.dlm.db on node abc208

CRS-5017: The resource action "ora.dlm.db start" encountered the following error: 

ORA-27102: out of memory

SVR4 Error: 22: Invalid argument

. For details refer to "(:CLSN00107:)" in "/dlmapp/oragrid/11.2.0/log/abc208/agent/crsd/oraagent_oradlm/oraagent_oradlm.log".

CRS-2674: Start of 'ora.dlm.db' on 'msuu208' failed

alert log中报错:

optimally. Creating a segment of size 0x0000007660000000

failed. Please change the shm parameters so that

a segment can be created for this size. While this is

not a fatal issue, creating one segment may improve performance

用srvctl启动实例报错

用sqlplus可以正常启动。

可能原因是因为oragrid下的project刚设置上,而rac很多组件是工作在oragrid下的,需要重启crs服务,可能才会生效,,所以先用sqlplus启动,以后再找时间重启crs后,再用srvctl启动.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: