本帖最后由 刘泽宇 于 2020-12-15 09:12 编辑
在使用dbca创建实例时,在配置阶段遇到了ORA-00445: Background Process "DBRM" Did Not Start After 120 Seconds
随后导致配置失败
经过查找官方文档(1345364.1)得到了解决
Errors are seen in the alert log relating to spawning of processes such as: SYMPTOMS @ Checked for relevance on 17th Jan 2012 ORA-00445: background process "m001" did not start after 120 secondsIncident details in: /opt/u01/app/oracle/diag/rdbms/incident/incdir_3721/db1_mmon_7417_i3721.trc ERROR: Unable to normalize symbol name for the following short stack (at offset 2): Tue Jun 21 03:03:06 2011 ORA-00445: background process "J003" did not start after 120 seconds or Waited for process W002 to initialize for 60 seconds
根据文档的描述,造成这个报错的原因是Linux内核中启用了Address Space Layout Randomization (ASLR)地址空间布局随机化 ASLR是在较新版本上激活的新特性,用以随机地址加载共享内存对象。在oracle中,多个进程在进程之间映射同一地址的共享内存对象。 于是启用了ASLR后,oracle就无法保证此共享内存地址的可用性。 地址空间中的这种冲突意味着试图将共享内存对象附加到特定地址的进程可能无法进行,从而导致shmat子例程失败。
解决方法为:关闭ASLR 查看ASLR是否启用:
[root@rac1 ~]# /sbin/sysctl -a | grep randomize
kernel.randomize_va_space = 2
当这个参数不为0时代表ASLR在启用中
在/etc/sysctl.conf文件中添加一个配置:
kernel.randomize_va_space=0
生效后查看kernel.randomize_va_space = 0 已经禁用ASLR
再次进行dbca配置实例,没有出现报错
On Redhat 5 to permanently disable ASLR. add/modify this parameter in /etc/sysctl.conf
kernel.randomize_va_space=0
kernel.exec-shield=0 You need to reboot for kernel.exec-shield parameter to take effect. Note that both kernel parameters are required for ASLR to be switched off. There may be other reasons for a process failing to start, however, by switching ASLR off, you can quickly discount ASLR being the problem. More and more issues are being identified when ASLR is in operation. Note: "In RHEL/OEL 7 exec-shield is not modifiable anymore, so changing the exec-shield parameter produces an error."
|