web_backend_develope
wu ming 9 years ago
parent cd70315dc7
commit 0a5b380ee7

@ -113,7 +113,7 @@ public class DataModelController extends BaseController{
String[] oraclesName = paramMap.get("oracleName");
if (oraclesName != null)
for (String rcName : oraclesName) {
Configs.CONSOLE_LOGGER.info("连接成功\t" + rcName);
Configs.CONSOLE_LOGGER.info("执行连接\t" + rcName);
new OracleStatusService().connectToOracle(rcName);
}
req.setStatus(200);
@ -128,7 +128,7 @@ public class DataModelController extends BaseController{
String operate = paramMap.get("operation")[0];
if (null != oraclesName) {
for (String rcName : oraclesName) {
Configs.CONSOLE_LOGGER.info("取消连接:\t" + rcName);
Configs.CONSOLE_LOGGER.info("取消连接:\t" + rcName);
new OracleStatusService().cancelToOracle(rcName, operate);
}
}
@ -138,10 +138,9 @@ 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 {
res.setCharacterEncoding("UTF-8");
if (null != form.getCollOracle() && form.getCollOracle().size() > 0) {
OracleExtract.extractOracle(form.getTotalOracleName(), form.getCollOracle(), form.getTotalOracle());
res.setCharacterEncoding("UTF-8");
if (null != form.getInneed() && form.getInneed().size() > 0) {
OracleExtract.extractOracle(form.getName(), form.getInneed(), form.getTarget());
}
req.setStatus(200);
}

@ -4,52 +4,34 @@ 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;
}
}

@ -4,6 +4,7 @@ import io.fabric8.kubernetes.api.model.Container;
import io.fabric8.kubernetes.api.model.ContainerPort;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.ReplicationController;
import io.fabric8.kubernetes.client.Client;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
@ -19,7 +20,7 @@ import com.platform.utils.UtilsHelper;
public class SimpleKubeClient {
private KubernetesClient client;
private final static String DEFAULT_NAMESPACE = "default";
private final static String DEFAULT_NAMESPACE = "default";
public SimpleKubeClient() {
this.client = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL);
@ -32,18 +33,22 @@ public class SimpleKubeClient {
public SimpleKubeClient(Config config) {
Config cf = config;
if (null == config) {
cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL).build();
cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL)
.build();
}
this.client = new DefaultKubernetesClient(cf);
}
// RollingUpdatercline
public void updateOrAddReplicasLabelById(String namespace,
String resourceId, String key, String value) {
KubernetesClient kubeClient = client;
if (checkClientNull())
kubeClient = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL);
kubeClient.replicationControllers().inNamespace(namespace)
.withName(resourceId).edit().editMetadata()
.withName(resourceId).rolling().edit().editMetadata()
.addToLabels(key, value).endMetadata().done();
}

@ -8,25 +8,25 @@ import java.sql.Statement;
import com.platform.utils.Configs;
public class OracleConnector {
public class OracleConnector {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Configs.CONSOLE_LOGGER.error(e.getMessage());
}
}
}
public static Connection ConnectionBuilder(String url, String user,
String password) {
Connection conn=null;
String password) {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]");
} catch (SQLException e) {
Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage()
+ "]");
}
return conn;
}
@ -35,7 +35,7 @@ public class OracleConnector {
return (null != ConnectionBuilder(url, user, password));
}
public ResultSet getSQLExecResultSet(Connection conn, String sql) {
public static ResultSet getSQLExecResultSet(Connection conn, String sql) {
ResultSet resultSet = null;
try {
Statement statement = conn
@ -43,34 +43,48 @@ public class OracleConnector {
ResultSet.CONCUR_UPDATABLE);
resultSet = statement.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Configs.CONSOLE_LOGGER.error(e.getMessage());
}
return resultSet;
}
public ResultSet getSQLExecResultSet(String url, String user,
public static ResultSet getSQLExecResultSet(String url, String user,
String password, String sql) {
return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql);
}
/**
* oracle
*
* @param conn
* @param sql
* @return
*/
public boolean execOracleSQL(Connection conn, String sql) {
public static boolean execOracleSQL(Connection conn, String sql) {
boolean flag = false;
try {
Statement statement = conn.createStatement();
if (statement.executeUpdate(sql) > 0)
flag = true;
//ResultSet set = statement.execute(sql);
flag = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Configs.CONSOLE_LOGGER.error(e.getMessage());
flag = false;
}
return flag;
}
}
public static boolean execUpdateOracleSQL(Connection conn, String sql) {
boolean flag = false;
try {
Statement statement = conn.createStatement();
statement.execute(sql);
flag = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
Configs.CONSOLE_LOGGER.error(e.getMessage());
flag = false;
}
return flag;
}
}

@ -13,9 +13,6 @@ import com.platform.utils.Configs;
import com.platform.utils.FileOperateHelper;
public class OracleExtractHelper {
private OracleConnector oConnector;
/**
* dblink
*
@ -26,15 +23,15 @@ 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 = OracleConnector.getSQLExecResultSet(conn, sql);
try {
rSet.last();
if (rSet.getRow() > 0)
flag = true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Configs.CONSOLE_LOGGER.info(e.getMessage());
}
return flag;
}
@ -54,22 +51,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"
+ ")))\'";
if (null != oc) {
if (hasSameNameDBLink(conn, linkName)) { // 如果dblink已经存在,先删除dblink在创建dblink
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 +75,9 @@ public class OracleExtractHelper {
} else {
// 否则创建dblink
oConnector.execOracleSQL(conn, sql);
System.out.println("dblin不存在");
OracleConnector.execOracleSQL(conn, sql);
Configs.CONSOLE_LOGGER.error("创建DBLink!");
FileOperateHelper.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql);
}
@ -95,7 +94,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.execOracleSQL(conn, tmpSql)) {
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
@ -110,7 +109,7 @@ public class OracleExtractHelper {
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),
sql+"\r\n");
return oConnector.execOracleSQL(conn, sql);
return OracleConnector.execOracleSQL(conn, sql);
}
}
@ -127,13 +126,13 @@ public class OracleExtractHelper {
+ 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,7 +157,7 @@ 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(),
@ -166,7 +165,7 @@ public class OracleExtractHelper {
try {
while (rsSet.next()) {
String resultSql = rsSet.getString(0);
oConnector.execOracleSQL(conn, resultSql);
OracleConnector.execOracleSQL(conn, resultSql);
FileOperateHelper
.fileWrite(
Configs.EXTRACT_LOG_LOCALTION + oc.getName(),

@ -10,10 +10,13 @@ import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.commons.lang.text.StrBuilder;
import com.platform.entities.OracleConnectorParams;
import com.platform.kubernetes.SimpleKubeClient;
import com.platform.oracle.OracleConnector;
import com.platform.utils.Configs;
import com.platform.utils.Constant;
public class OracleStatusService {
private static Map<String, Timer> alliveTask = new Hashtable<String, Timer>();
@ -29,16 +32,24 @@ public class OracleStatusService {
OracleConnectorParams orp = new OracleConnectorParams();
Timer timer = new Timer();
alliveTask.put(replicasName, timer);
timer.schedule(new connectTask(replicasName, orp, sKubeClient), DELAY_TIME,
INTERVAL_TIME);
timer.schedule(new connectTask(replicasName, orp, sKubeClient),
DELAY_TIME, INTERVAL_TIME);
}
public void cancelToOracle(String replicasName, String operate) {
if (operate.equals("stop")) {
SimpleKubeClient sKubeClient = new SimpleKubeClient();
sKubeClient.updateOrAddReplicasLabelById(replicasName, "status",
"0");
String cmd = "kubectl label --overwrite rc " + replicasName
+ " status=0";
List<String> rList = Constant.ganymedSSH
.execCmdWaitAcquiescent(cmd);
StringBuffer sb = new StringBuffer();
for (String str : rList)
sb.append(str).append("\n");
Configs.CONSOLE_LOGGER.info(sb.toString());
// SimpleKubeClient sKubeClient = new SimpleKubeClient();
// sKubeClient.updateOrAddReplicasLabelById(replicasName,
// "status","0");
}
killAlliveTask(replicasName);
}
@ -85,8 +96,9 @@ public class OracleStatusService {
private int count;
private OracleConnectorParams ocp;
private SimpleKubeClient client;
public connectTask(String taskName, OracleConnectorParams ocp, SimpleKubeClient client){
public connectTask(String taskName, OracleConnectorParams ocp,
SimpleKubeClient client) {
this.taskName = taskName;
this.ocp = ocp;
this.count = 0;
@ -102,12 +114,20 @@ public class OracleStatusService {
@Override
public void run() {
if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { //如果任务已经执行10次则任务oracle启动失败并取消oracle连接
if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { // 如果任务已经执行10次则任务oracle启动失败并取消oracle连接
killAlliveTask(taskName);
client.updateOrAddReplicasLabelById(taskName, "status", "1"); //更新ReplicationController标签将oracle状态标示未1(0:启动中1失败2成功)
// client.updateOrAddReplicasLabelById(taskName, "status", "1");
// //更新ReplicationController标签将oracle状态标示未1(0:启动中1失败2成功)
String cmd = "kubectl label --overwrite rc " + taskName
+ " status=1";
List<String> rList = Constant.ganymedSSH
.execCmdWaitAcquiescent(cmd);
StringBuffer sb = new StringBuffer();
for (String str : rList)
sb.append(str).append("\n");
Configs.CONSOLE_LOGGER.info("更新replicationController标签 "
+ taskName + "\t[标签更新为: 失败]");
} else { //否则执行连接oracle任务判断oracle是否启动成功
} else { // 否则执行连接oracle任务判断oracle是否启动成功
Pod pod = filterPod();
if (pod != null) {
String ip = client.getPodHostIp(pod);
@ -115,15 +135,23 @@ public class OracleStatusService {
if (ip != null && port != 0) {
String url = "jdbc:oracle:thin:@" + ip + ":" + port
+ ":" + ocp.getDatabaseName();
boolean flag = OracleConnector.canConnect(url, //连接结果返回参数true标示连接成功false标示连接失败
boolean flag = OracleConnector.canConnect(url, // 连接结果返回参数true标示连接成功false标示连接失败
ocp.getUser(), ocp.getPassword());
Configs.CONSOLE_LOGGER.info("url:" + url + ",user:"
+ ocp.getUser() + ",password:"
+ ocp.getPassword());
String message = "失败";
if (flag && alliveTask.containsKey(taskName)) {
client.updateOrAddReplicasLabelById(taskName,
"status", "2");
String cmd = "kubectl label --overwrite rc "
+ taskName + " status=2";
// client.updateOrAddReplicasLabelById(taskNSyame,
// "status", "2");
List<String> rList = Constant.ganymedSSH
.execCmdWaitAcquiescent(cmd);
StringBuffer sb = new StringBuffer();
for (String str : rList)
sb.append(str).append("\n");
Configs.CONSOLE_LOGGER.info(sb.toString());
message = "成功";
killAlliveTask(taskName); // 连接成功,取消连接
Configs.CONSOLE_LOGGER
@ -140,6 +168,7 @@ public class OracleStatusService {
/**
* oracleip
*
* @return
*/
private Pod filterPod() {

@ -14,6 +14,8 @@ import com.platform.oracle.OracleConnector;
import com.platform.service.IOracleExtractService;
import com.platform.service.OracleExtractHelper;
import com.platform.utils.Bean2MapUtils;
import com.platform.utils.Configs;
import com.platform.utils.Constant;
@Service(value = "OracleExtract")
public class OracleExtractServiceImpl implements IOracleExtractService {
@ -41,19 +43,40 @@ public class OracleExtractServiceImpl implements IOracleExtractService {
//采集库连接参数
List<OracleConnectorParams> datainfos = dataInfolist;
Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + "/"
+ oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword());
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标示汇总完成
/**
* oracle
*/
//client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
String cmd = "kubectl label --overwrite rc " + collectOracle.getName() + " isExtract=1";
Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
/**
* data-infoextract1;
*/
System.out.println("标签更新成功");
collectOracle.setName(collectOracle.getName().replace("-", "_"));
oracleExtract.createDBLink(conn, collectOracle); //创建dblink
System.out.println("创建dblink成功");
oracleExtract.createTableSpace(conn, oracleModel); //创建表空间
System.out.println("创建表空间成功");
oracleExtract.createUser(conn, oracleModel);//创建用户并授权
System.out.println("用户授权成功");
oracleExtract.extractColleDB(conn, collectOracle);//执行抽取
client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
System.out.println("执行抽取成功");
//client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态0标示为未汇总1标示汇总中2标示汇总完成
cmd = "kubectl label --overwrite rc " + collectOracle.getName() + " isExtract=1";
Constant.ganymedSSH.execCmdWaitAcquiescent(cmd);
/**
* data-infoextract2;
*/
}
isSuccess = true;
}catch(Exception e){
Configs.CONSOLE_LOGGER.error(e.getMessage());
}
return false;
}

@ -21,7 +21,7 @@ public class Configs {
public static final Logger LOGGER = Logger.getLogger(Configs.class);
public static String KUBE_MASTER_URL = "http://192.168.0.113:8080/"; // kubernetes集群的maser
public static String KUBE_MASTER_URL = "http://192.168.0.110:8080/"; // kubernetes集群的maser
// URl
public static int ORACLE_DEFAULT_PORT = 1521; // oracle的默认端口号
@ -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 = "D:\\log"; //数据汇总日志保存位置
public static String GATHER_TABLESPACE_NAME=""; //表空间名

Loading…
Cancel
Save