|
|
|
@ -15,8 +15,8 @@ import com.platform.utils.Configs;
|
|
|
|
|
import com.platform.utils.FileOperateHelper;
|
|
|
|
|
|
|
|
|
|
public class OracleExtractHelper {
|
|
|
|
|
|
|
|
|
|
public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(OracleExtractHelper.class);
|
|
|
|
|
|
|
|
|
|
public static Logger log = Logger.getLogger(OracleExtractHelper.class);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断dblink是否已经存在
|
|
|
|
@ -26,22 +26,39 @@ public class OracleExtractHelper {
|
|
|
|
|
* dblink的名称
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private boolean hasSameNameDBLink(Connection conn, String linkName, String filePath) {
|
|
|
|
|
|
|
|
|
|
private boolean hasSameNameDBLink(Connection conn, String linkName,
|
|
|
|
|
String filePath) {
|
|
|
|
|
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK='" + linkName+"'";
|
|
|
|
|
String sql = "SELECT COUNT(*) c FROM ALL_DB_LINKS WHERE DB_LINK='"
|
|
|
|
|
+ linkName + "'";
|
|
|
|
|
ResultSet rSet = null;
|
|
|
|
|
Statement statement = null;
|
|
|
|
|
try {
|
|
|
|
|
rSet = OracleConnector.getSQLExecResultSet(conn, sql, null);
|
|
|
|
|
rSet.last();
|
|
|
|
|
if (rSet.getRow() > 0)
|
|
|
|
|
flag = true;
|
|
|
|
|
FileOperateHelper
|
|
|
|
|
.fileWrite(filePath, sql+ "\r\n"+"OK \r\n");
|
|
|
|
|
statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
|
|
|
|
|
ResultSet.CONCUR_UPDATABLE);
|
|
|
|
|
rSet = statement.executeQuery(sql);
|
|
|
|
|
if (rSet.next()) {
|
|
|
|
|
if (rSet.getInt("c") > 0)
|
|
|
|
|
flag = true;
|
|
|
|
|
else
|
|
|
|
|
flag = false;
|
|
|
|
|
}
|
|
|
|
|
FileOperateHelper.fileWrite(filePath + ".log", sql + "\r\n"
|
|
|
|
|
+ "OK \r\n");
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
FileOperateHelper
|
|
|
|
|
.fileWrite(filePath, sql+ "\r\n"+ e.getMessage() + "\r\n,连接异常! \r\n");
|
|
|
|
|
FileOperateHelper.fileWrite(filePath, sql + "\r\n" + e.getMessage()
|
|
|
|
|
+ "\r\n,连接异常! \r\n");
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
} finally {
|
|
|
|
|
if (null != statement) {
|
|
|
|
|
try {
|
|
|
|
|
statement.close();
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
log.error(Custom4exception.OracleSQL_Except, e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return flag;
|
|
|
|
|
}
|
|
|
|
@ -49,12 +66,13 @@ public class OracleExtractHelper {
|
|
|
|
|
/**
|
|
|
|
|
* 创建dblink
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库的连接
|
|
|
|
|
* @param oc 采集库
|
|
|
|
|
* dblink连接参数实体
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库的连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 采集库 dblink连接参数实体
|
|
|
|
|
*/
|
|
|
|
|
public void createDBLink(Connection conn, OracleConnectorParams oc) {
|
|
|
|
|
String linkName = "LINKTO" + oc.getName();
|
|
|
|
|
String linkName = "LINKTO_J" + oc.getName().replaceAll("-", "_");
|
|
|
|
|
String sql = "CREATE PUBLIC DATABASE LINK "
|
|
|
|
|
+ linkName
|
|
|
|
|
+ " CONNECT TO "
|
|
|
|
@ -66,24 +84,30 @@ public class OracleExtractHelper {
|
|
|
|
|
+ ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName()
|
|
|
|
|
+ ")))\'";
|
|
|
|
|
if (null != oc) {
|
|
|
|
|
if (hasSameNameDBLink(conn, linkName, Configs.EXTRACT_LOG_LOCALTION + oc.getName()+".log")) { // 如果dblink已经存在,先删除dblink,在创建dblink
|
|
|
|
|
String deleteSql = "DROP PUBLIC DATABASE LINK "
|
|
|
|
|
+ linkName;
|
|
|
|
|
//删除 dblink
|
|
|
|
|
if (OracleConnector.execOracleSQL(conn, deleteSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
if(!OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName())){
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if (hasSameNameDBLink(conn, linkName, Configs.EXTRACT_LOG_LOCALTION
|
|
|
|
|
+ oc.getName())) { // 如果dblink已经存在,先删除dblink,在创建dblink
|
|
|
|
|
String deleteSql = "DROP PUBLIC DATABASE LINK " + linkName;
|
|
|
|
|
// 删除 dblink
|
|
|
|
|
if (OracleConnector.execOracleSQL(conn, deleteSql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
if (!OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!");
|
|
|
|
|
FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
|
|
|
|
|
+ oc.getName()+".log", "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n");
|
|
|
|
|
+ oc.getName() + ".log",
|
|
|
|
|
"删除已有的DBLink失败,无法创建新的DBLink!" + "\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
// 否则,创建dblink
|
|
|
|
|
if(!OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName())){
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if (!OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -92,119 +116,158 @@ public class OracleExtractHelper {
|
|
|
|
|
/**
|
|
|
|
|
* 创建表空间
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param collectOracle
|
|
|
|
|
* @param oc 汇总库信息
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param collectOracle
|
|
|
|
|
* @param oc
|
|
|
|
|
* 汇总库信息
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public boolean createTableSpace(Connection conn, OracleConnectorParams collectOracle, GatherOracleInfo oc) {
|
|
|
|
|
public boolean createTableSpace(Connection conn,
|
|
|
|
|
OracleConnectorParams collectOracle, GatherOracleInfo oc) {
|
|
|
|
|
String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '"
|
|
|
|
|
+ oc.getTableName() + "'";
|
|
|
|
|
// 存在 表空间
|
|
|
|
|
if (OracleConnector.execUpdateOracleSQL(conn, tmpSql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName())) {
|
|
|
|
|
if (OracleConnector.execUpdateOracleSQL(conn, tmpSql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName())) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
String sql = "create tablespace " + oc.getTableName()
|
|
|
|
|
+ " datafile '" + Configs.GATHER_TABLESPACE_PATH
|
|
|
|
|
+ oc.getTableName() + ".dbf"
|
|
|
|
|
+ "' size 512M autoextend on next 512M maxsize unlimited";
|
|
|
|
|
return OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName());
|
|
|
|
|
return OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建用户并授权
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param oc 汇总库信息
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 汇总库信息
|
|
|
|
|
*/
|
|
|
|
|
public void createUser(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = oc.getName() + totalOracle.getSuffix();
|
|
|
|
|
|
|
|
|
|
public void createUser(Connection conn, OracleConnectorParams oc,
|
|
|
|
|
GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = "J" + oc.getName().replaceAll("-", "_")
|
|
|
|
|
+ totalOracle.getSuffix();
|
|
|
|
|
|
|
|
|
|
String sql = "Create user " + strTUser + " default tablespace "
|
|
|
|
|
+ totalOracle.getTableName() + " identified by "
|
|
|
|
|
+ Configs.GATHER_TABLE_PASSWORD;
|
|
|
|
|
String grantSql = "grant connect, resource, dba to " + strTUser;
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION
|
|
|
|
|
+ oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建用户并授权
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param oc 汇总库信息
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 汇总库信息
|
|
|
|
|
*/
|
|
|
|
|
public void createOnlyUser(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
public void createOnlyUser(Connection conn, OracleConnectorParams oc,
|
|
|
|
|
GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = Configs.GATHER_STANDARD_USER_NAME;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String sql = "Create user " + strTUser + " default tablespace "
|
|
|
|
|
+ totalOracle.getTableName() + " identified by "
|
|
|
|
|
+ Configs.GATHER_TABLE_PASSWORD;
|
|
|
|
|
String grantSql = "grant connect, resource, dba to " + strTUser;
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建用户并授权
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param oc 汇总库信息
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 汇总库信息
|
|
|
|
|
*/
|
|
|
|
|
public void createTable(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
public void createTable(Connection conn, OracleConnectorParams oc,
|
|
|
|
|
GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = oc.getName() + totalOracle.getSuffix();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String sql = "Create table " + strTUser + " default tablespace "
|
|
|
|
|
+ totalOracle.getTableName() + " identified by "
|
|
|
|
|
+ Configs.GATHER_TABLE_PASSWORD;
|
|
|
|
|
String grantSql = "grant connect, resource, dba to " + strTUser;
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION
|
|
|
|
|
+ oc.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(conn, grantSql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 执行汇总操作
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param oc 采集库
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 采集库
|
|
|
|
|
*/
|
|
|
|
|
public void extractColleDB(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = oc.getName() + totalOracle.getSuffix();
|
|
|
|
|
public void extractColleDB(Connection conn, OracleConnectorParams oc,
|
|
|
|
|
GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = "J" + oc.getName().replaceAll("-", "_")
|
|
|
|
|
+ totalOracle.getSuffix();
|
|
|
|
|
String sql = "SELECT 'create table "
|
|
|
|
|
+ strTUser
|
|
|
|
|
+ ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||"
|
|
|
|
|
+ "'@LINKTO"
|
|
|
|
|
+ oc.getName()
|
|
|
|
|
+ ";' FROM dba_tables@LINKTO"
|
|
|
|
|
+ oc.getName()
|
|
|
|
|
+ "'@LINKTO_J"
|
|
|
|
|
+ oc.getName().replaceAll("-", "_")
|
|
|
|
|
+ ";' FROM dba_tables@LINKTO_J"
|
|
|
|
|
+ oc.getName().replaceAll("-", "_")
|
|
|
|
|
+ " 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 = OracleConnector.getSQLExecResultSet(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
try {
|
|
|
|
|
while (rsSet.next()) {
|
|
|
|
|
try {
|
|
|
|
|
rsSet.getRow();
|
|
|
|
|
String resultSql = rsSet.getString(1).replace(";", "");
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, resultSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
+ " and t.owner||t.table_name not in (select owner||table_name from dba_tables@LINKTO_J"
|
|
|
|
|
+ oc.getName().replaceAll("-", "_")
|
|
|
|
|
+ " where 'data_type'='CLOB')";
|
|
|
|
|
/*
|
|
|
|
|
* ResultSet rsSet = OracleConnector.getSQLExecResultSet(conn, sql,
|
|
|
|
|
* Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
*/
|
|
|
|
|
Statement statement = null;
|
|
|
|
|
try {
|
|
|
|
|
statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
|
|
|
|
|
ResultSet.CONCUR_UPDATABLE);
|
|
|
|
|
ResultSet resultSet = statement.executeQuery(sql);
|
|
|
|
|
FileOperateHelper.fileWrite(
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName() + ".log", sql
|
|
|
|
|
+ "\r\n" + "OK \r\n");
|
|
|
|
|
|
|
|
|
|
while (resultSet.next()) {
|
|
|
|
|
try {
|
|
|
|
|
String resultSql = resultSet.getString(1).replace(";", "");
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, resultSql,
|
|
|
|
|
Configs.EXTRACT_LOG_LOCALTION + oc.getName());
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 测试是否能否连接上?
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 测试是否能否连接上?
|
|
|
|
|
*
|
|
|
|
|
* @return true:能连接上
|
|
|
|
|
*/
|
|
|
|
|
public boolean testConnect(Connection conn) {
|
|
|
|
@ -212,32 +275,39 @@ public class OracleExtractHelper {
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
try {
|
|
|
|
|
Statement statement = conn.createStatement();
|
|
|
|
|
if(statement.executeUpdate(testSql) > 0)
|
|
|
|
|
flag = true;
|
|
|
|
|
if (statement.executeUpdate(testSql) > 0)
|
|
|
|
|
flag = true;
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
flag = false;
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
return flag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 执行抽取操作--支付表
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库连接
|
|
|
|
|
* @param oc 采集库
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 采集库
|
|
|
|
|
*/
|
|
|
|
|
public void extractStandardPayTable(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
public void extractStandardPayTable(Connection conn,
|
|
|
|
|
OracleConnectorParams oc, GatherOracleInfo totalOracle) {
|
|
|
|
|
String strTUser = Configs.GATHER_STANDARD_USER_NAME;
|
|
|
|
|
createPay(conn, oc);
|
|
|
|
|
String sql = "insert into " + strTUser + "." + Configs.GATHER_STANDARD_PAY_TABLE_NAME + " select * from "
|
|
|
|
|
+ strTUser + "." + Configs.GATHER_STANDARD_PAY_TABLE_NAME +"@LINKTOST"
|
|
|
|
|
+ oc.getName();
|
|
|
|
|
String sql = "insert into " + strTUser + "."
|
|
|
|
|
+ Configs.GATHER_STANDARD_PAY_TABLE_NAME + " select * from "
|
|
|
|
|
+ strTUser + "." + Configs.GATHER_STANDARD_PAY_TABLE_NAME
|
|
|
|
|
+ "@LINKTOST" + oc.getName();
|
|
|
|
|
String resultSql = sql.replace(";", "");
|
|
|
|
|
OracleConnector.execOracleSQL(conn, resultSql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
OracleConnector.execOracleSQL(conn, resultSql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 执行抽取操作--执行表
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 执行抽取操作--执行表
|
|
|
|
|
*
|
|
|
|
|
* @param conn
|
|
|
|
|
* @param collectOracle
|
|
|
|
|
* @param oracleModel
|
|
|
|
@ -246,38 +316,43 @@ public class OracleExtractHelper {
|
|
|
|
|
OracleConnectorParams collectOracle, GatherOracleInfo oracleModel) {
|
|
|
|
|
createExec(conn, collectOracle);
|
|
|
|
|
String strTUser = Configs.GATHER_STANDARD_USER_NAME;
|
|
|
|
|
|
|
|
|
|
String sql = "insert into " + strTUser + "." + Configs.GATHER_STANDARD_EXEC_TABLE_NAME + " select * from "
|
|
|
|
|
+ strTUser + "." + Configs.GATHER_STANDARD_EXEC_TABLE_NAME +"@LINKTOST"
|
|
|
|
|
+ collectOracle.getName();
|
|
|
|
|
|
|
|
|
|
String sql = "insert into " + strTUser + "."
|
|
|
|
|
+ Configs.GATHER_STANDARD_EXEC_TABLE_NAME + " select * from "
|
|
|
|
|
+ strTUser + "." + Configs.GATHER_STANDARD_EXEC_TABLE_NAME
|
|
|
|
|
+ "@LINKTOST" + collectOracle.getName();
|
|
|
|
|
String resultSql = sql.replace(";", "");
|
|
|
|
|
OracleConnector.execOracleSQL(conn, resultSql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + collectOracle.getName());
|
|
|
|
|
|
|
|
|
|
OracleConnector.execOracleSQL(
|
|
|
|
|
conn,
|
|
|
|
|
resultSql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ collectOracle.getName());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void createPay(Connection conn, OracleConnectorParams oc) {
|
|
|
|
|
String payCmd = "CREATE TABLE u_bzbjy.zfxxb(XZQHDM Varchar(255),XZQHMC Varchar(255),PZBH Varchar(255),LYZBKZH Varchar(255),"
|
|
|
|
|
+ "ZFDATE Varchar(255),YSDWCODE Varchar(255),YSDWNAME Varchar(255),YWGKCS Varchar(255),XMCODE Varchar(255),XMNAME Varchar(255),"
|
|
|
|
|
+"XMLBCODE Varchar(255),XMLBNAME Varchar(255),ZB_NO Varchar(255),GNFLCODE Varchar(255),GNFLNAME Varchar(255),JJFLCODE Varchar(255),"
|
|
|
|
|
+"JJFLNAME Varchar(255),ZJXZCODE Varchar(255),ZJXZNAME Varchar(255),JSBFFSNAME Varchar(255),SKR Varchar(255),SKRYH Varchar(255),"
|
|
|
|
|
+ "XMLBCODE Varchar(255),XMLBNAME Varchar(255),ZB_NO Varchar(255),GNFLCODE Varchar(255),GNFLNAME Varchar(255),JJFLCODE Varchar(255),"
|
|
|
|
|
+ "JJFLNAME Varchar(255),ZJXZCODE Varchar(255),ZJXZNAME Varchar(255),JSBFFSNAME Varchar(255),SKR Varchar(255),SKRYH Varchar(255),"
|
|
|
|
|
+ "SKRZHZH Varchar(255),FKZHCODE Varchar(255),FKZHNAME Varchar(255),FKYHCODE Varchar(255),FKYHNAME Varchar(255),QSZHCODE Varchar(255),"
|
|
|
|
|
+ "QSZHNAME Varchar(255),QSYHCODE Varchar(255),QSYHNAME Varchar(255),JE Numeric(18,2), SFTK Varchar(255),NIAN Varchar(255),ZY Varchar(255))";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
OracleConnector.execOracleSQL(conn, payCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
OracleConnector.execOracleSQL(conn, payCmd,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建dblink
|
|
|
|
|
*
|
|
|
|
|
* @param conn 汇总库的连接
|
|
|
|
|
* @param oc 采集库
|
|
|
|
|
* dblink连接参数实体
|
|
|
|
|
* @param conn
|
|
|
|
|
* 汇总库的连接
|
|
|
|
|
* @param oc
|
|
|
|
|
* 采集库 dblink连接参数实体
|
|
|
|
|
*/
|
|
|
|
|
public void createStandardDBLink(Connection conn, OracleConnectorParams oc) {
|
|
|
|
|
String linkName = "LINKTOST" + oc.getName();
|
|
|
|
@ -292,31 +367,50 @@ public class OracleExtractHelper {
|
|
|
|
|
+ ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName()
|
|
|
|
|
+ ")))\'";
|
|
|
|
|
if (null != oc) {
|
|
|
|
|
if (hasSameNameDBLink(conn, linkName, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()+".log")) { // 如果dblink已经存在,先删除dblink,在创建dblink
|
|
|
|
|
String deleteSql = "DROP PUBLIC DATABASE LINK "
|
|
|
|
|
+ linkName;
|
|
|
|
|
//删除 dblink
|
|
|
|
|
if (OracleConnector.execOracleSQL(conn, deleteSql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
// OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if(!OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName())){
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if (hasSameNameDBLink(conn, linkName,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()
|
|
|
|
|
+ ".log")) { // 如果dblink已经存在,先删除dblink,在创建dblink
|
|
|
|
|
String deleteSql = "DROP PUBLIC DATABASE LINK " + linkName;
|
|
|
|
|
// 删除 dblink
|
|
|
|
|
if (OracleConnector.execOracleSQL(conn, deleteSql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
// OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
// Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if (!OracleConnector.execOracleSQL(
|
|
|
|
|
conn,
|
|
|
|
|
sql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ oc.getName())) {
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(
|
|
|
|
|
conn,
|
|
|
|
|
sql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ oc.getName());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!");
|
|
|
|
|
FileOperateHelper.fileWrite(Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ oc.getName()+".log", "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n");
|
|
|
|
|
FileOperateHelper.fileWrite(
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ oc.getName() + ".log",
|
|
|
|
|
"删除已有的DBLink失败,无法创建新的DBLink!" + "\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
// 否则,创建dblink
|
|
|
|
|
// OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if(!OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName())){
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(conn, sql, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
// OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
// Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
if (!OracleConnector.execOracleSQL(conn, sql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName())) {
|
|
|
|
|
OracleConnector.execUpdateOracleSQL(
|
|
|
|
|
conn,
|
|
|
|
|
sql,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION
|
|
|
|
|
+ oc.getName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void createExec(Connection conn, OracleConnectorParams oc) {
|
|
|
|
|
String execCmd = "CREATE TABLE u_bzbjy.kzxzb(XZQHDM Varchar(255),XZQHMC Varchar(255),YSND Varchar(255),ZBCODE Varchar(255),ZB_ID Varchar(255),ZB_NO Varchar(255),"
|
|
|
|
|
+ "ZBDJLXCODE Varchar(255),ZBDJLXNAME Varchar(255),ZBLXNAME Varchar(255),DOCNO Varchar(255),ZBSM Varchar(255),ZBFWDATE Varchar(255),ZBYSLXCODE Varchar(255),"
|
|
|
|
@ -324,9 +418,10 @@ public class OracleExtractHelper {
|
|
|
|
|
+ "JJFLNAME Varchar(255),ZBGLCSNAME Varchar(255),SZGLCODE Varchar(255),SZGLNAME Varchar(255),XMCODE Varchar(255),XMNAME Varchar(255),GZBZ Varchar(255),"
|
|
|
|
|
+ "JJBZ Varchar(255),CGBZ Varchar(255),ZFFSCODE Varchar(255),ZFFSNAME Varchar(255),JZZFBZ Varchar(255),ZBJE Numeric(18,2),ZBTJJE Numeric(18,2),ZBDJJE Numeric(18,2),"
|
|
|
|
|
+ "ZBKYJE Numeric(18,2),ZYZFBZ Varchar(255),BZ Varchar(255))";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
OracleConnector.execOracleSQL(conn, execCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
OracleConnector.execOracleSQL(conn, execCmd,
|
|
|
|
|
Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error(Custom4exception.threadVolume_Oracle_Except, e);
|
|
|
|
|
}
|
|
|
|
|