日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java执行数据库命令行_java程序执行命令行,解锁数据库表

發布時間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java执行数据库命令行_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程序执行命令行,解锁数据库表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。