生产环境:AIX 5.3 + Oracle 10.2.0.5
任务要求:普通表改造分区表,历史数据不要
 
这个需求很简单:
pl/sql导出建表语句,依次修改成分区的建表语句,注意将索引修改成本地索引;
drop 原表;
create 新分区表.
 
1.重建过程中遇到问题:删除某表时报错ORA-00054,导致无法删除重建此表。
SQL> drop table MOD_RESALT_PERF_CARR_1X_ZTE;
create table MOD_RESALT_PERF_CARR_1X_ZTE(……)partition by ……(……);
create unique index …… on MOD_RESALT_PERF_CARR_1X_ZTE(……) local tablespace …… compress; ORA-00054: resource busy and acquire with NOWAIT specified
ORA-00955: name is already used by an existing object
ORA-14016: underlying table of a LOCAL partitioned index must be partitioned
 
2.查询造成此表锁定的会话。
SQL>
SQL> select t2.username , t2.sid, t2.serial#, t2.logon_time, t2.MACHINE, t2.PROGRAM
from v$locked_object t1, v$session t2
where t1.SESSION_ID=t2.SID and t1.object_id =
(select object_id
from user_objects
where object_name = 'MOD_RESALT_PERF_CARR_1X_ZTE'); USERNAME SID SERIAL# LOGON_TIME MACHINE PROGRAM
------------------------------ ---------- ---------- ----------- ---------------------------------------------------------------- ------------------------------------------------
FJCRNOP 596 39243 2014-5-27 1 fjcol8 JDBC Thin Client
3.查出的结果与现场开发维护人员确认,可以强制杀掉,但Oracle中kill session遭遇ORA-00031。
SQL> alter system kill session '596,39243';

alter system kill session '596,39243'

ORA-00031: session marked for kill

此状态下,若drop 此表仍然会报错ORA-00054。

4.确定session对应的系统进程号SPID。

SQL> select a.spid,b.sid,b.serial#,b.username
from v$process a,v$session b
where a.addr=b.paddr and b.status='KILLED'; SPID SID SERIAL# USERNAME
------------ ---------- ---------- ------------------------------
282882 596 39243 FJCRNOP SQL>
SQL> select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=596; SPID OSUSER PROGRAM
------------ ------------------------------ ------------------------------------------------
282882 fjcrnop JDBC Thin Client
5.在数据库服务器上kill查出的系统进程:
oracle@cwwydb2$uname -a
AIX cwwydb2 00C445A54C00
oracle@cwwydb2$id
uid=(oracle) gid=(oinstall) groups=(dba)
oracle@cwwydb2$ps -ef|grep
oracle :: - : oraclecwwydb2 (LOCAL=NO)
oracle :: pts/ : grep
oracle@cwwydb2$kill
oracle@cwwydb2$ps -ef|grep
oracle :: - : oraclecwwydb2 (LOCAL=NO)
oracle :: pts/ : grep
oracle@cwwydb2$kill -
oracle@cwwydb2$ps -ef|grep
oracle :: pts/ : grep
这里可以看到,kill没有杀掉进程,kill -9成功杀掉进程。
此时在数据库中可以看到,v$session视图下状态为killed的进程已经没有了。
SQL> select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';

SPID                SID    SERIAL# USERNAME
------------ ---------- ---------- ------------------------------
 
6.再次运行删除表的脚本,成功执行,没有再报错。
SQL> @D:\jingyu\partitiontables\mod_resalt_perf_carr_1x_zte.tab

Table dropped

Table created

Index created

Index created

Index created

SQL>
 
7.总结:遭遇ORA-00054可以找到造成锁定的会话,确认会话可以终止后,先在Oracle中kill session,如果kill session遭遇ORA-00031,又需要立马清理,可以找到对应的系统进程在系统层面kill掉此进程。
 
------------------------------------------------------------------------------------
免责声明:为保证商业安全,本案例涉及的相关IP地址和名称已做特殊处理。

记录一则ORA-00054,ORA-00031解决过程的更多相关文章

  1. 记录linux /bin被误删除的解决过程

    1.事因: 执行shell测试时,shell中rm -rf $path/* 变量$path为空,结果执行的命令是rm -rf / 事发时及时ctrl+c中断,导致只有/bin /boot目录删除 2. ...

  2. Oracle ORA 12541 报错解决过程

    Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...

  3. IIS发布网站 报错500.19 错误解决过程记录

    首先先报上我的环境 WindowsServer 2012 IIS 8.5 网站是FrameWork 4.0 发布网站后浏览,报错信息如下: 解决过程记录如下: 1.看到这个问题首先想到的是权限问题,设 ...

  4. 记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26

    记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26 今天一大早上班就接到客户的电话,说:SQLSERVER启动不起来,业务系统使用不了 于是我就使用QQ远程,帮 ...

  5. [转]线上GC故障解决过程记录

    排查了三四个小时,终于解决了这个GC问题,记录解决过程于此,希望对大家有所帮助.本文假定读者已具备基本的GC常识和JVM调优知识,关于JVM调优工具使用可以查看我在同一分类下的另一篇文章: http: ...

  6. 一次线上GC故障解决过程记录

    排查了三四个小时,终于解决了这个GC问题,记录解决过程于此,希望对大家有所帮助.本文假定读者已具备基本的GC常识和JVM调优知识,关于JVM调优工具使用可以查看我在同一分类下的另一篇文章: http: ...

  7. linux服务器报No space left on device错误的解决过程记录

    起因 今天在本地提交了点代码,但到服务器上git pull的时候提示No space left on device,第一反应是猜想可能硬盘满了(很有可能是log导致的),不过想想又觉得不太可能,这台服 ...

  8. 【故障处理】ORA-30012的解决过程

    [故障处理]ORA-30012的解决过程 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...

  9. listener.ora/sqlnet.ora/tnsnames.ora配置文件详解

    oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 英文说明: The ...

  10. oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性

    学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...

随机推荐

  1. Python之路【第三篇】python基础 之基本数据类型 补充

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...

  2. Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》

    [摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...

  3. Android进程间通讯

    最近研究了一下Android进程间通讯,原来只是会用,但是只是会用是不行滴,就来研究一下. 刚开始看的时候,我的头是这么大,看了一夜的时候,头就变成这样了,,吓得宝宝赶紧上床休息了,. 先喝喝茶讲个故 ...

  4. #iOS问题记录#动态Html加载本地CSS和JS文件

    所谓动态Html,指代码中组合生成的html字符串: 若需要加载本地CSS,图片,JS文件,则, 1,需要文件的全路径: 2,需要"file:///"标志: 例如: //获取文件全 ...

  5. UWP图片编辑器(涂鸦、裁剪、合成)

    一.编辑器简介 写这个控件之前总想找一找开源的,可以偷下懒省点事.可是各种地方都搜遍了也没有找到. 于是,那就做第一个吃螃蟹的人吧! 控件主要有三个功能:涂鸦.裁剪.合成. 涂鸦:主要是用到了InkT ...

  6. .Net开发笔记(二十一) 反射在.net中的应用

    反射概念在网上到处都有,但是讲到的具体的应用很少,一个重要的原因是现实中真的很少用得到它.引用msdn上对“反射”的解释: "通过 System.Reflection 命名空间中的类以及 S ...

  7. 软件工程(QLGY2015)博客点评总结

    目录 第一次作业(2015.5.9) 第二次作业(2015.5.21) 第三次作业(2015.6.11) 2015上半年软工助教总结 第一次作业(2015.5.9) 存在主要问题 1)书写这种练习博客 ...

  8. 迷你MVVM框架avalon在兼容旧式IE做的努力

    很多时候,写代码就像砌砖头,只要我们不关心盖楼的原因.建筑的原理.土木工程基础和工程经验,就算我们砌了100栋高楼,我们也就只是一个砌砖工人,永远也成为不了一个工程师,更别说建筑师了.而那些包工头也只 ...

  9. Repository 仓储,你的归宿究竟在哪?(二)-这样的应用层代码,你能接受吗?

    写在前面 关于"Repository 仓储,你的归宿究竟在哪?"这个系列,本来是想写个上下篇,但是现在觉得,很有多东西需要明确,我也不知道接下来会写多少篇,所以上一篇的标题就改成了 ...

  10. [ASP.NET MVC 小牛之路]16 - Model 验证

    上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何根据用户提交HTTP请求数据创建Model对象.在实际的项目中, ...