文档解释
ORA-31477: could not detach LogMiner session during cleanup
Cause: Failure during detach from a LogMiner session during advance of an asynchronous change set. This is an internal error. This exception is raised when a previous exception occurred during the internal protocol with LogMiner, after which Change Data Capture attempted to detach the LogMiner session as part of recovery. The detach session also failed
Action: Contact Oracle Corporation
ORA-31477是一个特殊的数据库错误,涉及LogMiner会话在清理时无法断开。
官方解释
ORA-31477: 无法在清理期间分离LogMiner会话
错误31477因为一个新建立的LogMiner会话已经正在运行(但没有通过DBMS_LOGMNR相关接口进行配置)但当对新建立的LogMiner会话运行DBMS_LOGMNR.END_LOGMNR()时系统无法断开。
常见案例
ORA-31477通常会在两种场景中发生:
1.客户端出现意外断开:在这种情况下,客户端可能在运行DBMS_LOGMNR操作(例如START_LOGMNR)时意外断开连接,导致创建/注册的LogMiner会话未正确断开。
2.LogMiner会话出现意外断开:由于系统的各种原因,LogMiner会话可能会意外断开,从而导致无法正确断开会话。
一般处理方法及步骤
(1)使用DBA_HIST_ACTIVE_SESS_HISTORY视图查找与LogMiner有关系的所有会话,如果有多个会话或者多个标识(sid),他们需要逐个应用DBMS_LOGMNR END_LOGMNR 函数来释放这些会话
(2)检查卡死的会话。如果存在活动的会话,则可以使用alter system kill xxxx语句来终止会话。
(3)尝试重启会话,并正确关闭LogMiner会话。
如果以上步骤仍然无法正确关闭LogMiner会话,则可以使用“alter system kill xxxx”,但需确保不会阻塞现有可用任务。