生产环境: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. >hibernate.cfg.xml的一些常用配置

    1.数据库的基本配置信息 hibernate.connection.driver_class是配置数据库驱动 hibernate.connection.url是配置数据库的url hibernate. ...

  2. ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体

    示例代码如下: public static IWorkspaceName BrowseWorkspace(int hwnd,out IWorkspace ws) { IGxObjectFilterCo ...

  3. strcpy函数在VS2015无法使用的问题

    一:原因:一般认为是vs准备弃用strcpy的,安全性较低,所以微软提供了strcpy_s来代替 然而,strcpy_s并没有strcpy好用,我们要想继续在VS2015中使用strcpy该怎么办 呢 ...

  4. 谢欣伦 - OpenDev原创教程 - 服务端套接字类CxServerSocket

    这是一个精练的服务端套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxServerSocket的使用如下(以某个叫做CSo ...

  5. 实例讲解 SQL 注入攻击

    这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...

  6. ASP.NET Core 文件上传

    前言 上篇博文介绍了怎么样在 asp.net core 使用 Redis 和 Protobuf 进行 Session缓存.本篇的是开发过程中使用的一个小功能,怎么做单文件和多文件上传. 如果你觉得对你 ...

  7. C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义

    类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 inst ...

  8. MVC学习二:基础语法

    目录 一:重载方法的调用 二:数据的传递 三:生成控件 四:显示加载视图 五:强类型视图 六:@Response.Write() 和 @Html.Raw()区别 七:视图中字符串的输入 八:模板页 一 ...

  9. 剑指Offer面试题:1.实现Singleton模式

    说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实 ...

  10. 企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...