11G RAC 使用 srvctl start database -d psdb 节点2 起不来

博客记录了Oracle数据库节点2启动报错的情况,节点1和节点2系统参数一致,但节点2启动报错,错误信息包含ORA-00603等。给出了解决办法,如禁用节点2大页,介绍了在rc.local增加内容、修改grub启动参数以及实时生效的三种方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[oracle@psdb1 ~]$ srvctl stop database -d psdb

[oracle@psdb1 ~]$ srvctl start database -d psdb
PRCR-1079 : Failed to start resource ora.psdb.db
CRS-5017: The resource action "ora.psdb.db start" encountered the following error:
ORA-00603: ORACLE server session terminated by fatal error
ORA-27544: Failed to map memory region for export
ORA-27300: OS system dependent operation:skgxpmmap failed with status: 0
ORA-27301: OS failure message: Error 0
ORA-27302: failure occurred at: skgxpmap1
ORA-27303: additional information: maximum(512) number of regions/context exeeded 512
Process ID: 0
Session ID: 0 Serial number: 0
. For details refer to "(:CLSN00107:)" in "/u01/11.2.0/grid/log/psdb2/agent/crsd/oraagent_oracle//oraagent_oracle.log".

CRS-2674: Start of 'ora.psdb.db' on 'psdb2' failed
CRS-2632: There are no more servers to try to place resource 'ora.psdb.db' on that would satisfy its placement policy

 --alter 日志

Cluster communication is configured to use the following interface(s) for this instance
169.254.12.215
cluster interconnect IPC version:Oracle UDP/IP (generic)
IPC Vendor 1 proto 2
Errors in file /u01/app/oracle/diag/rdbms/psdb/psdb/trace/psdb_ora_67269.trc (incident=320003):
ORA-00603: ORACLE server session terminated by fatal error
ORA-27544: Failed to map memory region for export
ORA-27300: OS system dependent operation:skgxpmmap failed with status: 0
ORA-27301: OS failure message: Error 0
ORA-27302: failure occurred at: skgxpmap1
ORA-27303: additional information: maximum(512) number of regions/context exeeded 512
Incident details in: /u01/app/oracle/diag/rdbms/psdb/psdb/incident/incdir_320003/psdb_ora_67269_i320003.trc
opiodr aborting process unknown ospid (67269) as a result of ORA-603
Tue May 21 20:23:10 2019
Errors in file /u01/app/oracle/diag/rdbms/psdb/psdb/trace/psdb_ora_68826.trc (incident=320004):
ORA-00600: internal error code, arguments: [ksxp_open: ref2], [0], [0x5043AD6390], [1], [1], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/psdb/psdb/incident/incdir_320004/psdb_ora_68826_i320004.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.

---trace 文件内容

*** 2019-05-21 20:22:58.861
Large Pages segment allocation succeed, size = 2147483648, shmid = 21430275, target_node = 129, large page used 1024
Allocation of segment with Large pages failed, size = 2147483648. Trying smaller size segments

 

--现象:节点1 和节点2 的 系统参数一致;但是节点1可以通过上面的命令正常启动数据库;节点2 启动报错

 

 

--解决办法

把节点2大页禁用   vm.nr_hugepages = 0

---此次只针对 /sys/kernel/mm/transparent_hugepage/enabled 是否禁用;

---另一个参数可以不禁用/sys/kernel/mm/transparent_hugepage/defrag

 


方案1
在rc.local中增加如下内容

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

方案2
通过修改grub启动参数来实现

[root@middle ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
将 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 这一行修改为

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"

并执行

[root@middle ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

方案3
以上两个方案不是能实时生效,需要重启系统。如果需要实时生效需要

echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

转载于:https://www.cnblogs.com/ss-33/p/10913279.html

<think>好的,我现在需要回答用户关于如何在Oracle 11g RAC环境中使用srvctl命令执行数据库开启操作的问题。首先,我需要回忆一下srvctl命令的基本用法,以及它在RAC环境中的具体应用。 用户提到的srvctl alter database open,可能涉及到修改数据库的状态。但根据我的记忆,srvctl命令中并没有直接使用“alter database open”这样的子命令。正确的命令应该是使用srvctl start database启动数据库实例。不过,我需要确认这一点,避免给出错误的信息。 接下来,我应该分步骤说明如何启动数据库。首先,检查数据库的当前状态,使用srvctl status database -d db_unique_name,这样用户可以先确认数据库是否已经处于运行状态。如果状态显示为未运行,再执行启动命令。 然后,启动数据库的命令应该是srvctl start database -d db_unique_name。这里需要注意的是,用户需要替换db_unique_name为实际的数据库名称。此外,RAC环境中的数据库可能有多个实例,分布在不同的节点上,所以启动时需要确认所有节点上的实例是否正常启动。 如果遇到启动失败的情况,可能需要进一步检查集群资源状态,比如使用crsctl status resource -t来查看资源状态。例如,引用中的错误信息CRS-2674和CRS-2632提示资源放置策略的问题,这可能涉及到节点资源不足或配置错误,需要检查集群配置和日志。 另外,用户可能还需要了解如何单独启动某个实例,比如在特定节点启动实例,这时候可以使用srvctl start instance -d db_unique_name -i instance_name -n node_name。同时,关闭数据库的命令也是常用的,应该一并说明,如srvctl stop database -d db_unique_name。 在注意事项部分,需要提醒用户确保权限正确,通常需要使用oracle用户或具有适当权限的用户执行命令。另外,启动前检查依赖服务,如ASM和监听器是否正常运行,这一点可以参考引用中提到的ASM在RAC中的重要性。 最后,要总结常见问题,比如权限不足、节点资源问题,以及如何查看日志进行故障排除。可能还需要提到在修改归档模式时(如引用1中的例子),需要先关闭数据库,但这个问题当前是关于启动数据库,所以可能不需要深入讨论归档模式,但可以稍微提及相关场景。 现在需要确保所有步骤清晰,命令正确,并且引用适当的内容来支持回答。例如,引用3中的错误信息可以在处理启动失败的情况时提及,指导用户如何排查资源问题。同时,引用2提到的ASM在RAC中的使用,提醒用户在启动数据库前确保ASM实例正常运行。 可能还需要验证一下srvctl命令的具体参数是否正确,例如是否真的有alter database open的选项,或者是否在其他子命令。根据Oracle官方文档,srvctl主要用于启动、停止、修改配置等,而直接执行SQL命令如alter database open通常是在sqlplus中执行。因此,用户可能混淆了srvctl和SQL命令的使用场景,需要在回答中澄清这一点,说明srvctl用于管理集群资源,而具体的数据库状态变更可能需要结合SQL命令。 不过,用户的问题明确提到使用srvctl命令执行数据库开启操作,所以重点应放在srvctl start database和相关命令上,而不是SQL*Plus中的操作。但可能需要说明在某些情况下,如果使用srvctl启动后,数据库仍未打开,可能需要通过SQL*Plus执行alter database open命令,但这种情况较少见,因为srvctl start应该会自动打开数据库。 总结来说,回答的结构应该是: 1. 确认srvctl的正确用法,说明启动数据库的命令是srvctl start database2. 分步骤说明检查状态、启动数据库启动实例、关闭数据库等操作。 3. 注意事项,包括权限、依赖服务、错误处理。 4. 相关问题部分,引导用户进一步学习。 需要确保命令格式正确,使用代码块,并且引用相关的引用内容作为错误处理的参考。同时,避免使用用户不可见的格式,保持回答自然。</think>### 分步指南:Oracle 11g RAC 使用 srvctl 启动数据库 在 Oracle 11g RAC 环境中,`srvctl` 是管理集群数据库的核心工具。以下是使用 `srvctl` 执行数据库启动操作的详细步骤: --- #### **1. 检查数据库当前状态** 在操作前确认数据库的当前运行状态: ```bash srvctl status database -d <db_unique_name> ``` - **输出示例**: ``` Instance <instance_name1> is running on node <node1> Instance <instance_name2> is not running on node <node2> ``` - **说明**:若实例未运行,需执行启动命令。 --- #### **2. 启动整个数据库** 启动所有节点上的数据库实例: ```bash srvctl start database -d <db_unique_name> ``` - **参数解释**: - `-d`:指定数据库的唯一名称(通过 `srvctl config database` 可查看)。 - **注意**:此命令会尝试启动所有未运行的实例。若部分实例启动失败,需检查集群资源状态(见步骤4)。 --- #### **3. 启动特定实例(可选)** 若需在指定节点启动单个实例: ```bash srvctl start instance -d <db_unique_name> -i <instance_name> -n <node_name> ``` - **示例**: ```bash srvctl start instance -d ORCL -i ORCL1 -n racnode1 ``` --- #### **4. 检查集群资源状态** 若启动失败,检查集群资源状态: ```bash crsctl status resource -t ``` - **关键点**: - 确保 `ora.<db_unique_name>.db` 资源状态为 `ONLINE`。 - 若出现类似 `CRS-2674` 或 `CRS-2632` 错误(如引用[3]所述),需排查节点资源分配或配置问题[^3]。 --- #### **5. 关闭数据库操作(补充)** 关闭所有实例: ```bash srvctl stop database -d <db_unique_name> -o immediate ``` - `-o immediate`:立即关闭(支持 `abort`/`transactional` 等模式)。 --- ### **注意事项** 1. **权限要求**:需以 `oracle` 用户或具有 `grid` 权限的用户执行命令。 2. **依赖服务**: - 确保 ASM 实例已启动(ASM 是 RAC 储的基石,如引用[2]所述)[^2]。 - 检查监听器状态:`srvctl status listener`。 3. **日志排查**: - 数据库日志:`$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log` - 集群日志:`$GRID_HOME/log/<node_name>/crsd/crsd.log` --- ### **常见问题场景** | 问题现象 | 可能原因 | 解决方案 | |---------|----------|----------| | `PRCR-1013` 错误 | 资源未正确注册 | 执行 `srvctl add database -d <db_name> -o <oracle_home>` 重新注册 | | 节点实例无法启动 | ASM 磁盘组未挂载 | 检查 ASM 状态:`srvctl status asm -n <node_name>` | | 数据库未完全打开 | 归档模式冲突 | 若需修改归档模式(如引用[1]),需先关闭数据库再操作[^1] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值