oradebug可以帮助我们做很多事情,如dump内存信息、设置事件、挂起进程等。本文主要介绍如何使用oradebug挂起进程。
为什么要挂起进程呢?比如因为开发人员对数据库执行一个很大的操作,严重影响了数据库的正常运行,此时你有两个选择:
1、删掉进程
2、暂停进程
实际上,我们往往不能十分确定把进程直接kill掉会造成什么后果,所以暂停进程的执行就是一个比较折中的选择。
要暂停进程步骤很简单:首先找到进程,然后暂停就可以了。
使用oradebug暂停进程时,可以使用pid,也可以使用spid。要找出这些信息有很多方式了,比如可以在操作系统中 ps -ef、可以通过v$session、v$process、v$bgprocess等视图通过关联得到。
下面通过一个例子来说明如何oradebug干预进程的执行状态:
1、找出进程号
本例我们要挂起以用户suk登录的会话:
以sys用户登录查询:
SQL> select pid,spid from v$process where addr in (select paddr from v$session where username='SUK');
PID SPID
---------- ------------
10 4107
2、设置要操作的进程号
有两种方法:
1)用spid设置
SQL> oradebug setospid 4107
Oracle pid: 10, Unix process pid: 4107, image:
oracle@suk
(TNS V1-V3)
2)用pid设置
SQL> oradebug setorapid 10
Unix process pid: 4107, image:
oracle@suk
(TNS V1-V3)
3、暂停进程执行
SQL> oradebug suspend
Statement processed.
此时,进程号为4107的进程将会处于挂起状态。我们稍后可以重启它。
4、重启进程
重启进程也要先设置进程号:
SQL> oradebug setospid 4107
Oracle pid: 10, Unix process pid: 4107, image:
oracle@suk
(TNS V1-V3)
SQL> oradebug resume
Statement processed.
注意:不能在会话中suspend当前会话。如果那样做的话,当前会话会被hang,并且不能被其他session resume,只能kill方式关闭。
分享到:
相关推荐
- **唤醒进程**:对于被挂起的进程,可以使用此功能使其恢复正常工作状态。 #### 三、oradebug命令详解 -oradebug由一系列命令组成,每个命令都有其特定的功能: 1. **HELP [command]** - **作用**:显示所有...
这种情况可能是因为在收集system state dump时,会调用dbx等操作系统命令进行进程堆栈的打印,这个过程中会触发对挂起进程的唤醒操作。 ##### 3.5 获取SID:315会话的活动会话历史 进一步获取SID=315会话的活动会话...
Oracle数据库自8i版本开始,引入了hanganalyze工具,这一工具能够帮助DBA们深入分析数据库挂起的具体原因,从而快速定位问题并采取相应的解决措施。 #### hanganalyze:为何重要? 数据库hang可能源于多种复杂情况...
- **DIA0:** 另一个数据库诊断进程,检测Oracle数据库中的挂起和死锁问题。 - **PSP0:** 进程生成器,用于产生Oracle进程。 - **SMCO:** 空间管理协调进程,负责空间的分配和回收。 - **Wnnn:** 由SMCO动态生成的...
* ORA-00056: 对象 '.' 上的 DDL 锁以不兼容模式挂起 * ORA-00057: 超出临时表锁的最大数 * ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库 (非 ) * ORA-00059: 超出 DB_FILES 的最大值 * ORA-00060: 等待资源时...
* DIA0(Database Diagnostic Process):负责检测 Oracle 数据库中的挂起和死锁的处理。 * PSP0(Process Spawner):用于产生 oracle 进程。 * SMCO(Space Management Coordinator):负责空间管理协调管理工作,负责...
#### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 当对象上的DDL锁与正在进行的操作不兼容时触发。 #### ORA-00057: 超出临时表锁的最大数 当临时表锁的数量超过最大限制时触发。 #### ORA-00058: DB_BLOCK_SIZE...
hangAnalyze是Oracle数据库提供的一种强大的性能分析工具,它能够帮助DBA快速定位和解决系统挂起或性能下降的问题。 hangAnalyze的工作原理是通过收集当前系统状态信息,特别是关于阻塞和等待事件的详细数据。在...
##### orA-00056: 对象'.'上的DDL锁以不兼容模式挂起 - **描述**:DDL锁与当前操作不兼容。 - **解决方法**:释放DDL锁或等待DDL操作完成。 ##### orA-00057: 超出临时表锁的最大数 - **描述**:达到了最大允许的...
**ORA-00056: 对象上的DDL锁以不兼容模式挂起** - **描述**: 在对象上挂起了不兼容的DDL锁。 - **解决方法**: 确保DDL操作与其他操作之间的一致性和兼容性。 **ORA-00057: 超出临时表锁的最大数** - **描述**: 临时...
当对某个对象的DDL锁以一种与当前操作不兼容的方式挂起时,会遇到此错误。确保没有其他操作正在对该对象进行DDL锁。 #### ORA-00057: 超出临时表锁的最大数 如果临时表锁的数量超过了`TEMP_TABLELOCKS`参数定义的...
#### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 **描述**: 对DDL锁的操作与其他操作冲突。 **解决方法**: - 确认DDL锁的使用是否恰当。 - 避免在对象上同时执行DDL操作。 #### ORA-00057: 超过临时表锁的最大...
#### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 在执行DDL(数据定义语言)操作时,尝试获取的锁与现有锁模式不兼容。 #### ORA-00057: 超出临时表锁的最大数 在处理大量临时表数据时,锁的数量超过了最大允许...
#### ORA-00056:对象'.'上的DDL锁以不兼容模式挂起 在尝试对已锁定的对象执行DDL(数据定义语言)操作时触发。释放相关锁或等待锁释放。 #### ORA-00057:超出临时表锁的最大数 当临时表锁的数量超过最大限制时...