java程序执行命令行,解锁数据库表
有些表锁的时间长或其他原因,在plsql中不能解锁,只能用命令行解锁。
有些功能跨平台系统的交互偶尔会锁表,就需要自动解锁。
下面是解锁的代码:
package com.lg.BreakOracleUtils; import com.lg.DB.DBProjp;
import com.lg.database.DbManager;
import com.lg.database.DbsConnection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class BreakOracleLock
{
private static final Log logger = LogFactory.getLog(BreakOracleLock.class); public static void breakOracleLock() { logger.info("解锁xx表定时程序已经启动了!"); DbsConnection connect = null;
try
{
DBProjp db = new DBProjp(); DbManager dbm = new DbManager();
connect = dbm.getConnection(db.url, db.userName, db.passWord); String sql = "select b.username, b.sid, b.serial#, logon_time, spid, c.object_name\n from v$locked_object a, v$session b, v$process p, all_objects c\n "+
" where a.session_id = b.sid\n and b.paddr = p.addr\n and a.object_id = c.object_id\n and (c.object_name like '表名%' or c.object_name like '表名%' )\n "
+" and b.username in ('数据库名' , '数据库名') \n and logon_time<=(sysdate-30/24/60)\n order by b.logon_time";
///设置锁表时间30分钟,即表的锁定时间小于当前时间30外,具体表的具体业务分析锁表的时间,自己设定
/
List list = connect.select(sql);
if ((list != null) && (list.size() > 0)) {
Map m = (Map)list.get(0);
String spid = (String)m.get("spid");
String cmdStr = "orakill orcl " + spid;
logger.info("解锁xx表执行命令:" + cmdStr + ",表名:" + m.get("object_name"));
Process localProcess = Runtime.getRuntime().exec(cmdStr);
}
connect.release();
} catch (Exception e) {
logger.info("解锁xx表定时程序失败!" + e.getMessage());
try {
if (connect != null)
connect.release();
}
catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} logger.info("解锁xx表定时程序结束!");
}
}
java程序执行命令行,解锁数据库表的更多相关文章
- java程序——从命令行接收多个数字,求和之后输出结果
命令行参数都是字符串,必须先将其转化为数字,才能相加.以下是流程图,源代码和输出结果. 流程图: 源代码: import java.util.Scanner; public class Test { ...
- 使用java对执行命令行 或 执行bat文件
public class Hellotianhao { public static void main(String[] args) throws Exception{ System.out.prin ...
- JAVA程序 从命令行接受多个数字,求和之后输出结果
源程序代码: public class sum{ public static void main(String[] args){ double[] a=new double[4]; a[0]=Doub ...
- 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题
Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...
- java的-D命令行参数 mvn -D参数
java的-D命令行参数 我们会用mvn启动一个应用,如下的命令行: MAVEN_OPTS="-XX:PermSize=256m -XX:MaxPermSize=512m" mvn ...
- 【转载】在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
- 在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
- Python执行命令行
背景 我们知道,虽然会破坏平台独立性,但是有的时候需要在代码里面调用命令行来获取一些信息,那么了解在 Python 中如何执行命令行至关重要 使用介绍 Python 中使用命令行可以通过 subpro ...
- 性能监控之Java程序执行解析
大家好,最近接触javassist技术,研究过程中对Java程序执行过程进行了一系列探索,弄清楚了几个盲区(仅针对个人而言),现将经验与大家分享. 1.编码->.java 通常指写代码的过程,最 ...
随机推荐
- jquery获取transform里面的值
用transform的translateX写了一个侧滑效果,如何获取它改变的值是多少呢? 获取translateX值的方法: $('div').css("transform").r ...
- 从psd文件到html
纲要 计划布局,划分整体结构 内容区域,从整体到局部,局部中的通用部分,根据上下文应用样式 公共头部(public-header).尾部(public-footer) 公共容器(public-cont ...
- 详解WebApp与Native App的区别
一篇真的很棒关于html5的Web App与Native App的技术分析 ! 自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于 ...
- Stage2--Python的数据类型
说在前面: Stage1-Stage4简单介绍一下Python语法,Stage5开始用python实现一些实际应用,语法的东西到处可以查看到,学习一门程序语言的最终目的是应用,而不是学习语法,语法本事 ...
- android drag
1.Android:Drag and Drop的应用 2.Android 用户界面---拖放(Drag and Drop)(三) 3.Android 用户界面---拖放(Drag and Drop)( ...
- 深度搜索C语言伪代码
bool DFS(Node n, int d){ if (d == 4){//路径长度为返回true,表示此次搜索有解 return true; } for (Node nextNode in n){ ...
- API 的历史
原文出处: apievangelist 译文出处:灯下鼠 历史无处不在. 研究我们来自何方,有助于指引我们前行.科技的发展日新月异,但时常停一下匆忙的脚步,稍稍回顾一下历史,却总是有益的. 下面就 ...
- siebel学习笔记-应用/数据访问控制
应用/数据访问控制Siebel提供的两种主要的访问控制方式在View级别和Data(record)级别: 1.View级别的访问控制:一个企业通常按照功能进行工作的区分,分配给一个用户的功能决定了他能 ...
- 团队合作之Scrum
CCSU小助手 一:开发团队简介 队名:瓜队 组员:钟文兴.周畅.吉刘磊.唐仲勋 宣言:We are a team at any time! 团队项目描述: 内容:“生活在长大”: 目标:为了方便对学 ...
- datatable 动态显示/隐藏列
这个例子演示了 column().visible()方法来隐藏显示列,通过点击列按钮动态切换 <table id="example" class="display& ...