`
collinsxu
  • 浏览: 22738 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

oracle 锁表 (在OS级杀死进程)

阅读更多
关闭数据库
SQL>shutdown immediate
关闭数据库,以确保杀死所有未断的User Session
当实例无法关闭无法使用shutdown immediate关闭时,可使用shutdown abort关闭实例,但关闭后应startup并再次使用shutdown immediate关闭实例,保证Database的同步



当在oracle下kill oracle进程后,sid被标记为Killed,但锁表仍未释放时,就在OS级杀进程。
主要步骤如下:
1)
select s.PROCESS,
       s.SID,
       s.SERIAL#,
       b.object_name,
       b.subobject_name,
       a.LOCKED_MODE,
       s.OSUSER,
       s.LOGON_TIME,
       s.MACHINE,
       s.PROGRAM          
  from v$locked_object a, dba_objects b, v$session s
where a.OBJECT_ID = b.object_id
   and a.SESSION_ID = s.SID
2)
alter system kill session 'SID,SERIAL#';

3)
此时如果oracle会话被标记为killed,但仍然锁住表,则需要根据SPID到OS系统中杀相应的oracle进程
查询spid的语句如下:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=此处为上面查出的SID   

4) kill -9 spid

查看当前user的serial#和sid
select sid, serial#, status from v$session where audsid=userenv('sessionid');

查看当前user的spid
select spid from v$process p join v$session s on p.addr=s.paddr and s.audsid=userenv('sessionid');

查看当前用户的trace file路径:

select p.value || '\' || t.instance || '_ora_' || ltrim(to_char(p.spid,'fm99999')) || '.trc'

    from v$process p, v$session s, v$parameter p, v$thread t

    where p.addr = s.paddr and s.audsid = userenv('sessionid') and p.name = 'user_dump_dest';
分享到:
评论

相关推荐

    oracle锁表及解锁

    在Unix系统下,如果知道进程ID(SPID),也可以通过操作系统命令来杀死会话: ```bash kill -9 spid ``` 在Windows环境下,则使用`orakill`工具: ```bash orakill charset6484; ``` #### 结论 理解并熟练掌握...

    oracle锁表解决

    这通常涉及到使用`kill`命令来杀死指定的进程: ```shell kill -9 spid; ``` 这里的`spid`是在步骤3中查到的系统进程ID。这种方法更加底层,也需要小心使用。 ### 总结 Oracle数据库中的锁表问题可以通过一系列...

    oracle锁表查询

    ### Oracle锁表查询知识点 ...通过本文介绍的Oracle锁表查询方法,DBA可以有效地监控数据库中的锁情况,并在必要时采取措施解决因锁引起的性能问题。理解并熟练掌握这些技能对于提高数据库性能和稳定性具有重要意义。

    怎样查找锁与锁等待及杀特定会话

    在Windows平台上,可以使用Oracle提供的工具`orakill`来杀死特定的线程(实际上是Oracle进程)。而在Linux/Unix系统中,可以直接使用`kill`命令来终止数据库进程对应的OS进程。 #### 四、总结 在Oracle数据库中,...

    ORACLE进程无法KILL处理方案.docx

    在这个解决方案中,我们将使用 ORACLE 提供的视图和系统表来查找锁定的对象,并杀死对应的进程以释放锁定的资源。下面是详细的处理步骤: 1. 查看哪些对象被锁 首先,我们需要查看哪些对象被锁定。我们可以使用...

    orcale查看锁表与解表语句

    12. **杀死会话解除锁**:当需要强制结束引起问题的会话时,可以使用`ALTER SYSTEM KILL SESSION`语句,如: ```sql alter system kill session '210,11562'; alter system kill session '1585,27319' -- ’sid,...

    oracle死锁及连接数监测

    如果发现死锁,可以通过杀死锁的会话来解决问题。杀死锁的会话可以使用以下语句: ```sql ALTER SYSTEM KILL SESSION '824,19'; ``` 其中,`824` 是会话 ID,`19` 是进程 ID。 查询数据库连接数 查询数据库连接...

    查看Oracle中是否有锁表的sql

    在Oracle数据库管理中,了解如何检查并处理锁表的情况至关重要,因为锁定可能导致数据不一致性和系统性能下降。以下是一些关键知识点,可以帮助你理解和解决Oracle中的锁问题。 1. **查看锁表的SQL** 使用以下查询...

    oracle查找死锁

    最后,通过操作系统命令杀死进程: ```bash kill <锁定会话的SPID> ``` 或者使用`ps -ef | grep spid`来确认进程是否已经被成功杀死。 通过以上步骤,我们可以有效地查找并解决Oracle数据库中的死锁问题,从而...

    oracle 不小心把表数据锁掉,sys查询被锁对象和解锁SQL语句

    现在提供一种方法解决这种问题,那是在ORACLE中杀不掉的,在OS一级再杀。  1.下面的语句用来查询哪些对象被锁:  select object_name,machine,s.sid,s.serial#  from v$locked_object l,dba_objects o ,v...

    ORACLE常用维护命令

    如果资源仍不释放,可以在OS层面执行`kill`命令杀死对应的进程。 5. **查看数据文件自动扩展**: 可以通过查询`DBA_DATA_FILES`视图中的`AUTOEXTENSIBLE`字段来确定数据文件是否配置为自动扩展。 6. **查看表空间...

    Oracle 错误一览表.docx

    - **解决方法**:使用`ALTER SYSTEM KILL SESSION`来杀死造成死锁的会话。 ##### orA-00061: 另一个例程设置了不同的DML_LOCKS - **描述**:DML_LOCKS参数被另一个实例设置为不同的值。 - **解决方法**:协调所有...

    如何安全快速的批量删除Oracle数据库外部会话session

    根据Oracle官方文档,这个命令并不真正“杀死”会话,而是将其标记为终止状态,随后由后台进程PMON来清理。使用`IMMEDIATE`选项可以强制回滚当前事务、释放会话锁,并立即返回控制权。例如,你可以运行以下命令来...

    ORACLE DBA常用脚本

    - **杀死会话**:`ALTER SYSTEM KILL SESSION 'sid, #serial';` 通过查询特定用户的活跃会话并针对性地终止,可以有效解决因用户操作导致的数据库资源占用问题。 #### 4. 打开游标管理 - **显示打开游标参数**:`...

    ORA-00031:标记要终止的会话

    本文将详细解析这一问题的解决方案,并提供一系列SQL语句和命令来处理和解决锁定、死锁以及如何在操作系统级别杀死进程的情况。 首先,要解决ORA-00031错误,我们需要找出被锁定的对象以及造成锁定的会话。我们可以...

    分析+Oracle+死锁的检测查询及处理方法

    如果仍然无法解决,可以找到Oracle进程并杀死: ```sql select pro.spid from v$session ses, v$process pro where ses.sid=XX and ses.paddr=pro.addr; ``` 然后在操作系统层面,如Linux,执行: ``` ps -ef...

    Oracle数据库日常维护诊断Sql

    - 使用`ALTER SYSTEM KILL SESSION`命令可以杀死指定的会话,这对于处理挂起的事务或不响应的会话非常有用。 ### 4. 查找特定机器上的会话 ```sql SELECT s.username, s.sid, s.SERIAL#, machine, s.terminal, ...

    DB_常用命令_Oracle

    - **作用**: 直接杀死指定会话,其中`xxx`和`xxxx`分别代表会话的SID和序列号。 - **应用**: 当某个会话异常或占用大量资源时,使用此命令可以迅速释放资源,但需谨慎操作,避免误杀正常会话。 **查询SESSION的CPU...

    常用SQL如何查看正在执行的语句

    - `kill -9 os_process_id`是Linux命令,用来强制杀死进程。 #### 三、查看当前正在执行的SQL语句 ```sql SELECT a.session_id, b.SERIAL#, c.SQL_TEXT FROM v$locked_object a, v$session b, v$sqltext c WHERE...

    oracle数据库死锁处理步骤

    - 若此操作无效,可以找到Oracle进程的PID并手动杀死: ```sql select pro.spid from v$session ses, v$process pro where ses.sid=XX and ses.paddr=pro.addr; ``` 其中sid替换为死锁的sid,然后通过`ps -ef |...

Global site tag (gtag.js) - Google Analytics