文档解释
ORA-28387: Could not acquire an enqueue for wallet operation in Oracle RAC
Cause: Enqueue to block TDE operations in Oracle RAC database could not be obtained.
Action: Retry the wallet operation.
ORA-28387 是一个 Oracle RAC 环境中出现的一个报错,它指的是在Oracle RAC环境中无法获取事务的流程保护功能(enqueue)。
官方解释
ORA-28387 是一个在Oracle RAC环境中出现的错误消息,指的是不能获取enqueue(事务的流程保护功能)来执行wallet操作。ORA-28387的原因是在RAC中,dbms_xdb所需的存储以及相应的enqueue都有可能来自不同的实例,并且由于连接数量限制同一个实例只能被一个session所访问。
常见案例
ORA-28387一般由以下访问dbms_xdb会产生:
1. 开启EZCONNECT模式
2. 执行dbms_xdb.getXML会话时
一般处理方法及步骤
1. 检查Oracle Real Application Clusters (RAC) 组件是否正确安装,并保证流程保护功能(enqueues)可用。
2. 如果安装正确,则检查RAC系统的连接数限制。 调整connect_string的结构以及包括instance_name参数允许访问更多实例。
3. 将_always_segment_free_locks开关设置uncertain,如果原来已设置该开关,则增加oracle系统分派给该开关的权重。
4. 如果上述方法仍然未能恢复这个报错,则可以考虑引入XML文件的外部副本,以便不需要在XDB中存储任何东西(file_level_storage=true)。
5. 如果是oracle 10.2以下的版本,可以试试UNIFIRST,会去除可能的竞争访u问。