`
yangzhiyong77
  • 浏览: 1017502 次
文章分类
社区版块
存档分类
最新评论

用oradebug挂起进程

 
阅读更多

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命令详解 -oradebug由一系列命令组成,每个命令都有其特定的功能: 1. **HELP [command]** - **作用**:显示所有...

    小机上运行ORACLE需要注意的进程调度BUG

    这种情况可能是因为在收集system state dump时,会调用dbx等操作系统命令进行进程堆栈的打印,这个过程中会触发对挂起进程的唤醒操作。 ##### 3.5 获取SID:315会话的活动会话历史 进一步获取SID=315会话的活动会话...

    使用hanganalyze分析数据库hang

    Oracle数据库自8i版本开始,引入了hanganalyze工具,这一工具能够帮助DBA们深入分析数据库挂起的具体原因,从而快速定位问题并采取相应的解决措施。 #### hanganalyze:为何重要? 数据库hang可能源于多种复杂情况...

    张浩Oracle11gRAC数据库巡检手册

    - **DIA0:** 另一个数据库诊断进程,检测Oracle数据库中的挂起和死锁问题。 - **PSP0:** 进程生成器,用于产生Oracle进程。 - **SMCO:** 空间管理协调进程,负责空间的分配和回收。 - **Wnnn:** 由SMCO动态生成的...

    Oracle错误代码大全

    * ORA-00056: 对象 '.' 上的 DDL 锁以不兼容模式挂起 * ORA-00057: 超出临时表锁的最大数 * ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库 (非 ) * ORA-00059: 超出 DB_FILES 的最大值 * ORA-00060: 等待资源时...

    Oracle11gRAC数据库巡检手册.doc

    * DIA0(Database Diagnostic Process):负责检测 Oracle 数据库中的挂起和死锁的处理。 * PSP0(Process Spawner):用于产生 oracle 进程。 * SMCO(Space Management Coordinator):负责空间管理协调管理工作,负责...

    oracle报错的详细列表

    #### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 当对象上的DDL锁与正在进行的操作不兼容时触发。 #### ORA-00057: 超出临时表锁的最大数 当临时表锁的数量超过最大限制时触发。 #### ORA-00058: DB_BLOCK_SIZE...

    一分钟查一个案例带你看看Oracle数据库到底有多牛逼性能难题.docx

    hangAnalyze是Oracle数据库提供的一种强大的性能分析工具,它能够帮助DBA快速定位和解决系统挂起或性能下降的问题。 hangAnalyze的工作原理是通过收集当前系统状态信息,特别是关于阻塞和等待事件的详细数据。在...

    Oracle 错误一览表.docx

    ##### orA-00056: 对象'.'上的DDL锁以不兼容模式挂起 - **描述**:DDL锁与当前操作不兼容。 - **解决方法**:释放DDL锁或等待DDL操作完成。 ##### orA-00057: 超出临时表锁的最大数 - **描述**:达到了最大允许的...

    oracle错误一览表

    **ORA-00056: 对象上的DDL锁以不兼容模式挂起** - **描述**: 在对象上挂起了不兼容的DDL锁。 - **解决方法**: 确保DDL操作与其他操作之间的一致性和兼容性。 **ORA-00057: 超出临时表锁的最大数** - **描述**: 临时...

    oracle常见报错

    当对某个对象的DDL锁以一种与当前操作不兼容的方式挂起时,会遇到此错误。确保没有其他操作正在对该对象进行DDL锁。 #### ORA-00057: 超出临时表锁的最大数 如果临时表锁的数量超过了`TEMP_TABLELOCKS`参数定义的...

    oracle错误码大全

    #### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 **描述**: 对DDL锁的操作与其他操作冲突。 **解决方法**: - 确认DDL锁的使用是否恰当。 - 避免在对象上同时执行DDL操作。 #### ORA-00057: 超过临时表锁的最大...

    Oracle错误代码

    #### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 在执行DDL(数据定义语言)操作时,尝试获取的锁与现有锁模式不兼容。 #### ORA-00057: 超出临时表锁的最大数 在处理大量临时表数据时,锁的数量超过了最大允许...

    Oracle所有错误

    #### ORA-00056:对象'.'上的DDL锁以不兼容模式挂起 在尝试对已锁定的对象执行DDL(数据定义语言)操作时触发。释放相关锁或等待锁释放。 #### ORA-00057:超出临时表锁的最大数 当临时表锁的数量超过最大限制时...

Global site tag (gtag.js) - Google Analytics