ORA-00106: cannot startup/shutdown database when connected to a dispatcher ORACLE 报错 故障修复 远程处理

文档解释

ORA-00106: cannot startup/shutdown database when connected to a dispatcher

Cause: An attempt was made to startup/shutdown database when connected to a shared server via a dispatcher.

Action: Re-connect as user INTERNAL without going through the dispatcher. For most cases, this can be done by connect to INTERNAL without specifying a network connect string.

官方解释

ORA-00106 is an information message that is raised when a user process has detected a deadlock or other time-out condition.

ORA-00106表示当用户进程检测到死锁或其他超时条件时,抛出此信息。

常见案例

1、在Oracle数据库中同时有多个用户执行更新操作,而且其中一个更新操作长时间未被提交,就会导致其他用户尝试更新该行时发生死锁,从而引发ORA-00106错误。

2、如果Oracle数据库更新操作存在多种排序、索引等特性,如果存在大量更新操作,会导致多个用户同时在多个表上更新它们关联行,从而引发死锁,从而引发ORA-00106错误。

正常处理方法及步骤

1、查询哪些sqlsid or serial发生死锁,可以使用“select bloc* from v$session”来查看。

2、发现死锁的sqlsid or serial之后,尝试终止掉这些进程,使用“alter system kill session ””来终止进程,将死锁释放。

3、使用“analyze table

compute statistics”来计算统计数据,确保查询优化器可以根据统计数据来调整执行计划,尽可能避免死锁的发生。

4、如果是因为表结构的设计问题或代码逻辑问题,从应用层面进行修改,以避免相同的死锁发生。


数据运维技术 » ORA-00106: cannot startup/shutdown database when connected to a dispatcher ORACLE 报错 故障修复 远程处理