修改抽取时的bug

web_backend_develope
chenlw 9 years ago
parent cd70315dc7
commit bd81c5caa0

@ -45,6 +45,7 @@ public class BaseController {
System.out.println("URI"+request.getRequestURI());
request.setAttribute("ex", ex);
System.err.println("BaseController --exp " + ex);
new CustomException("base_code_", ex);
// 根据不同错误转向不同页面
if(ex instanceof CustomException) {
CustomException cuse = (CustomException) ex;

@ -27,8 +27,11 @@ public class Custom4exception {
public final static String threadVolume_Thread_Except = "3001001002";
/**
*
* ---
*/
public final static String threadVolume_Oracle_Except = "3002001002";
/** * SQL执行错误 */
public final static String OracleSQL_Except = "3002001002";
}

@ -44,7 +44,6 @@ public class CustomException extends Exception {
public CustomException(String code,Exception e,Object... obj) {
super(code);
StringBuffer sbuf= new StringBuffer();
sbuf.append(msg);
this.code = code;
sbuf.append(code);
sbuf.append("\r\n");
@ -56,6 +55,8 @@ public class CustomException extends Exception {
}
// 记录原始的异常
if (null != e) {
sbuf.append(e.getMessage());
sbuf.append("\r\n");
StackTraceElement[] array = e.getStackTrace();
cause = e.getCause();
for (StackTraceElement stackTraceElement : array) {
@ -68,6 +69,7 @@ public class CustomException extends Exception {
Object[] array = obj;
sbuf.append("Object[] size : ");
sbuf.append(array.length);
sbuf.append("\r\n");
int forSize = 0;
if (Constant.CustomException_log_object_size < array.length) {
forSize = Constant.CustomException_log_object_size;

@ -0,0 +1,4 @@
3001001001=ThreadVolume\u7C7B\u67E5\u8BE2 volume\u5F02\u5E38
3001001002=ThreadVolume\u7C7B\u7EBF\u7A0B\u4F11\u7720\u5F02\u5E38
3002001002= \u62BD\u53D6\u6C47\u603B--\u7684-\u83B7\u53D6\u62BD\u53D6\u52A8\u4F5C\u5F02\u5E38
3002001002=SQL\u6267\u884C\u9519\u8BEF

@ -11,8 +11,6 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
@ -27,7 +25,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.base.BaseController;
import com.platform.entities.DataInfoEntity;
import com.platform.entities.DataInfoEntityMoveTmp;
import com.platform.entities.FolderNode;
import com.platform.entities.GatherOracleInfo;
import com.platform.entities.PagerOptions;
import com.platform.entities.VolumeEntity;
@ -40,7 +37,6 @@ import com.platform.service.IMoveDataService;
import com.platform.service.IMySqlService;
import com.platform.service.IOracleExtractService;
import com.platform.service.OracleStatusService;
import com.platform.utils.Bean2MapUtils;
import com.platform.utils.Configs;
import com.platform.utils.UtilsHelper;
@ -138,10 +134,10 @@ public class DataModelController extends BaseController{
@RequestMapping(value="/oracle/{name}/extract", method= RequestMethod.POST)
public void oracleExtract(HttpServletRequest res,
HttpServletResponse req,@RequestBody oracleForm form) throws Exception {
Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
res.setCharacterEncoding("UTF-8");
if (null != form.getCollOracle() && form.getCollOracle().size() > 0) {
OracleExtract.extractOracle(form.getTotalOracleName(), form.getCollOracle(), form.getTotalOracle());
if (null != form.getInneed() && form.getInneed().size() > 0) {
OracleExtract.extractOracle(form.getName(), form.getInneed(), form.getTarget());
}
req.setStatus(200);
}
@ -183,31 +179,7 @@ public class DataModelController extends BaseController{
@RequestMapping(value = "/volume/{name}/move", method= RequestMethod.POST)
@ResponseBody
public void volumeMove(HttpServletRequest res, HttpServletResponse req,@RequestBody volumeMoveForm form) throws Exception {
// res.setCharacterEncoding("UTF-8");
// System.out.println("get Request");
// Map<String, String[]> paramMap = res.getParameterMap();
//// System.out.println(paramMap);
// String[] nodes = paramMap.get("selectNode");
// Map map = null;
// for (String string : nodes) {
// System.out.println(string);
// JSONObject jsonobject = JSONObject.fromObject(string);
// map = jsonobject;
// }
// String dstVolume = (String) map.get("volume");
// List<String> listItemPath = new ArrayList<String>();
// String[] items = paramMap.get("selectItems");
// System.out.println("selectItems");
List<DataInfoEntity> datas = new ArrayList<DataInfoEntity>();
// List<String> srcVolumes = new ArrayList<String>();
// for (String string : items) {
// System.out.println(string);
// JSONObject jsobj = JSONObject.fromObject(string);
// Map itemmap = jsobj;
// DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(DataInfoEntity.class, itemmap);
// datas.add(data);
// }
List<DataInfoEntity> selectItems = form.getSelectItems();
if (null == selectItems) {
req.setStatus(200);
@ -221,28 +193,6 @@ public class DataModelController extends BaseController{
}
req.setStatus(200);
}
// public Object volumeMove(HttpServletRequest res, HttpServletResponse req, String name,
// @RequestBody FolderNode selectNode, @RequestBody List<DataInfoEntity> selectItems) throws Exception {
// log.debug("-----/volume/{name}/move------");
//// Map<String, String[]> paramMap = res.getParameterMap();
//// System.out.println(paramMap);
// Map<String, String[]> paramMap = res.getParameterMap();
// log.debug(paramMap);
// //汇总库 对象信息--带有tableName-
// String[] nodes = (String[]) paramMap.get("selectNode");
// Map map = null;
// JSONObject jsonobject = JSONObject.fromObject(string);
// map = jsonobject;
//
//
// log.debug(selectItems);
// log.debug(selectNode);
// boolean result = false ;
// if (selectItems.size() >0) {
// result = moveDataService.moveData(selectItems, selectNode.getPath());
// }
// return result;
// }
@RequestMapping(value="/oracle/list", method= RequestMethod.POST)
@ResponseBody

@ -4,52 +4,52 @@ import java.util.List;
public class oracleForm {
private GatherOracleInfo totalOracle;
private GatherOracleInfo target;
private List<OracleConnectorParams> collOracle;
private List<OracleConnectorParams> inneed;
private String totalOracleName;
private String name;
/**
* @return the totalOracle
*/
public GatherOracleInfo getTotalOracle() {
return totalOracle;
public GatherOracleInfo getTarget() {
return target;
}
/**
* @param totalOracle the totalOracle to set
*/
public void setTotalOracle(GatherOracleInfo totalOracle) {
this.totalOracle = totalOracle;
public void setTarget(GatherOracleInfo target) {
this.target = target;
}
/**
* @return the collOracle
*/
public List<OracleConnectorParams> getCollOracle() {
return collOracle;
public List<OracleConnectorParams> getInneed() {
return inneed;
}
/**
* @param collOracle the collOracle to set
*/
public void setCollOracle(List<OracleConnectorParams> collOracle) {
this.collOracle = collOracle;
public void setInneed(List<OracleConnectorParams> inneed) {
this.inneed = inneed;
}
/**
* @return the totalOracleName
*/
public String getTotalOracleName() {
return totalOracleName;
public String getName() {
return name;
}
/**
* @param totalOracleName the totalOracleName to set
*/
public void setTotalOracleName(String totalOracleName) {
this.totalOracleName = totalOracleName;
public void setName(String name) {
this.name = name;
}
}

@ -6,6 +6,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.base.Custom4exception;
import com.base.CustomException;
import com.platform.utils.Configs;
public class OracleConnector {
@ -15,27 +17,29 @@ public class OracleConnector {
Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
new CustomException(Custom4exception.OracleSQL_Except, e);
e.printStackTrace();
}
}
public static Connection ConnectionBuilder(String url, String user,
public synchronized static Connection ConnectionBuilder(String url, String user,
String password) {
Connection conn=null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
new CustomException(Custom4exception.OracleSQL_Except, e);
Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]");
}
return conn;
}
public static boolean canConnect(String url, String user, String password) {
public synchronized static boolean canConnect(String url, String user, String password) {
return (null != ConnectionBuilder(url, user, password));
}
public ResultSet getSQLExecResultSet(Connection conn, String sql) {
public synchronized static ResultSet getSQLExecResultSet(Connection conn, String sql) {
ResultSet resultSet = null;
try {
Statement statement = conn
@ -45,12 +49,13 @@ public class OracleConnector {
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
new CustomException(Custom4exception.OracleSQL_Except, e);
}
return resultSet;
}
public ResultSet getSQLExecResultSet(String url, String user,
public synchronized static ResultSet getSQLExecResultSet(String url, String user,
String password, String sql) {
return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql);
}
@ -59,18 +64,38 @@ public class OracleConnector {
* oracle
* @param conn
* @param sql
* @return
* @return true:sql
*/
public boolean execOracleSQL(Connection conn, String sql) {
public synchronized static boolean execOracleSQL(Connection conn, String sql) {
boolean flag = false;
try {
Statement statement = conn.createStatement();
if (statement.executeUpdate(sql) > 0)
statement.execute(sql);
flag = true;
} catch (SQLException e) {
flag = false;
e.printStackTrace();
new CustomException(Custom4exception.OracleSQL_Except, e);
}
return flag;
}
/**
* oracle
* @param conn
* @param sql
* @return true:1
*/
public synchronized static boolean execUpdateOracleSQL(Connection conn, String sql) {
boolean flag = false;
try {
Statement statement = conn.createStatement();
if(statement.executeUpdate(sql) > 0)
flag = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
flag = false;
e.printStackTrace();
new CustomException(Custom4exception.OracleSQL_Except, e, sql);
}
return flag;
}
}
}

@ -14,8 +14,6 @@ import com.platform.utils.FileOperateHelper;
public class OracleExtractHelper {
private OracleConnector oConnector;
/**
* dblink
*
@ -26,15 +24,17 @@ public class OracleExtractHelper {
*/
private boolean hasSameNameDBLink(Connection conn, String linkName) {
boolean flag = false;
String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK=" + linkName;
ResultSet rSet = oConnector.getSQLExecResultSet(conn, sql);
String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK='" + linkName+"'";
ResultSet rSet = null;
try {
rSet = OracleConnector.getSQLExecResultSet(conn, sql);
rSet.last();
if (rSet.getRow() > 0)
flag = true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rSet);
}
return flag;
}
@ -54,22 +54,22 @@ public class OracleExtractHelper {
+ oc.getUser()
+ " IDENTIFIED BY "
+ oc.getPassword()
+ " USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = "
+ " USING \'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = "
+ oc.getIp() + ")(PORT = " + oc.getPort()
+ ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName()
+ ")))';";
+ ")))\'";
if (null != oc) {
if (hasSameNameDBLink(conn, linkName)) { // 如果dblink已经存在,先删除dblink在创建dblink
String deleteSql = "DROP PUBLIC DATABASE LINK LinkTo"
String deleteSql = "DROP PUBLIC DATABASE LINK "
+ linkName;
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
deleteSql+"\r\n");
if (oConnector.execOracleSQL(conn, deleteSql)) {
if (OracleConnector.execOracleSQL(conn, deleteSql)) {
FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
+ oc.getName(), sql+"\r\n");
oConnector.execOracleSQL(conn, sql);
OracleConnector.execOracleSQL(conn, sql);
} else {
Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!");
FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
@ -78,7 +78,7 @@ public class OracleExtractHelper {
} else {
// 否则创建dblink
oConnector.execOracleSQL(conn, sql);
OracleConnector.execOracleSQL(conn, sql);
FileOperateHelper.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql);
}
@ -95,7 +95,7 @@ public class OracleExtractHelper {
public boolean createTableSpace(Connection conn, GatherOracleInfo oc) {
String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '"
+ Configs.GATHER_TABLESPACE_NAME + "'";
if (oConnector.execOracleSQL(conn, tmpSql)) {
if (OracleConnector.execUpdateOracleSQL(conn, tmpSql)) {
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
@ -110,7 +110,7 @@ public class OracleExtractHelper {
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
sql+"\r\n");
return oConnector.execOracleSQL(conn, sql);
return OracleConnector.execOracleSQL(conn, sql);
}
}
@ -120,20 +120,20 @@ public class OracleExtractHelper {
* @param conn
* @param oc
*/
public void createUser(Connection conn, GatherOracleInfo oc) {
String strTUser = oc.getName() + Configs.TABLE_SUFFIX;
public void createUser(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
String strTUser = oc.getName() + totalOracle.getSuffix();
String sql = "Create user " + strTUser + " default tablespace "
+ Configs.GATHER_TABLESPACE_NAME + " identified by "
+ Configs.GATHER_TABLE_PASSWORD;
String grantSql = "grant connect, resource, dba to " + strTUser;
oConnector.execOracleSQL(conn, sql);
OracleConnector.execOracleSQL(conn, sql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
sql+"\r\n");
oConnector.execOracleSQL(conn, grantSql);
OracleConnector.execOracleSQL(conn, grantSql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
@ -158,23 +158,30 @@ public class OracleExtractHelper {
+ " t WHERE t.TABLESPACE_NAME NOT IN ('SYSTEM','SYSAUX')"
+ " and t.owner||t.table_name not in (select owner||table_name from dba_tables@linkTo"
+ oc.getName() + " where 'data_type'='CLOB')";
ResultSet rsSet = oConnector.getSQLExecResultSet(conn, sql);
ResultSet rsSet = OracleConnector.getSQLExecResultSet(conn, sql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
sql+"\r\n");
try {
while (rsSet.next()) {
String resultSql = rsSet.getString(0);
oConnector.execOracleSQL(conn, resultSql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
resultSql+"\r\n");
try {
while (rsSet.next()) {
try {
rsSet.getRow();
String resultSql = rsSet.getString(1);
OracleConnector.execUpdateOracleSQL(conn, resultSql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
resultSql+"\r\n");
} catch (SQLException e) {
new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rsSet.getString(1));
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SQLException e) {
new CustomException(Custom4exception.threadVolume_Oracle_Except, e);
}
}
}

@ -7,6 +7,8 @@ import java.util.Map;
import org.springframework.stereotype.Service;
import com.base.Custom4exception;
import com.base.CustomException;
import com.platform.entities.GatherOracleInfo;
import com.platform.entities.OracleConnectorParams;
import com.platform.kubernetes.SimpleKubeClient;
@ -41,21 +43,22 @@ public class OracleExtractServiceImpl implements IOracleExtractService {
//采集库连接参数
List<OracleConnectorParams> datainfos = dataInfolist;
Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + "/"
Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":"
+ oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword());
for (OracleConnectorParams collectOracle : datainfos) {
client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
collectOracle.setName("J"+ collectOracle.getName().replace("-", "_"));
// client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
oracleExtract.createDBLink(conn, collectOracle); //创建dblink
oracleExtract.createTableSpace(conn, oracleModel); //创建表空间
oracleExtract.createUser(conn, oracleModel);//创建用户并授权
oracleExtract.createUser(conn, collectOracle, oracleModel);//创建用户并授权
oracleExtract.extractColleDB(conn, collectOracle);//执行抽取
client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
// client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
}
isSuccess = true;
}catch(Exception e){
new CustomException(Custom4exception.OracleSQL_Except, e);
}
return false;
return isSuccess;
}
// @Override

@ -42,7 +42,7 @@ public class Configs {
public static String TABLE_SUFFIX = "_20152016"; //汇总库汇总表的后缀名
public static String EXTRACT_LOG_LOCALTION = "/home/log"; //数据汇总日志保存位置
public static String EXTRACT_LOG_LOCALTION = "C:\\log"; //数据汇总日志保存位置
public static String GATHER_TABLESPACE_NAME=""; //表空间名

Loading…
Cancel
Save