`
ygsilence
  • 浏览: 337323 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle回滚注意事项

sql 
阅读更多

回滚到fisrt()时注意使用next()时需要将光标移到第一行之前    使用previous();

 

 

 

 

package com.trs.util;

import java.util.Calendar;
import java.util.Date;
import java.util.Properties;
import java.sql.Connection;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;

import org.apache.log4j.Logger;

import com.trs.client.TRSConnection;
import com.trs.client.TRSResultSet;
import com.trs.dao.oracleDao;
import com.trs.dao.trsDao;

public class checkTest {
    private static Logger CheckTRSLogger = Logger.getLogger("CheckTRSLogger");
   
    public static void check(){
       
        Date dateSta = null;                     //时间段起始
        Date dateEnd = null;                    //时间段结束
        Date dateComp = null;                     //总时间截止
        Calendar calSta=Calendar.getInstance();
        Calendar calEnd=Calendar.getInstance();
        Calendar calComp=Calendar.getInstance();
        String calStaString = "";
        String calEndString = "";
       
        TRSConnection trsCon = null;
        TRSResultSet trsRs = null;
        Connection oraCon = null;
        ResultSet oracleRs = null;
       
        String table = "";//oracle中检索的表名
        String tableTem = "";//oracle中临时的表名
        String tableRecord =""; //记录遗漏的记录
        String column_oracle1 = "";//oracel中检索的关键字段
        String column_oracle2 = "";//oracel中检索的字段
       
       
        String host = "";//trs数据库ip
        String port = "";//trs数据库端口
        String username = "";//trs数据库用户名
        String password = "";//trs数据库密码
        String library = "";//trs数据库中检索库名
        String column_trs1 = "";//trs数据库中检索字段名
        String column_trs2 = "";//trs数据库中关键字段名
       
       
        int trsNum = 0;    //TRS记录数量
        int oracleNum = 0;  //Oracle 记录数量
         
        try {
            DBUtil.loadProperties("oracleconfig.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
        table = DBUtil.getConfigInfo("table");
        tableTem = DBUtil.getConfigInfo("tableTem");
        tableRecord = DBUtil.getConfigInfo("tableRecord");
        column_oracle1 = DBUtil.getConfigInfo("column_oracle1");
        column_oracle2 = DBUtil.getConfigInfo("column_oracle2");
       
       
        try {
            DBUtil.loadProperties("trsconfig.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
         host = DBUtil.getConfigInfo("host");//trs数据库ip
         port = DBUtil.getConfigInfo("port");//trs数据库端口
         username = DBUtil.getConfigInfo("username");//trs数据库用户名
         password = DBUtil.getConfigInfo("password");//trs数据库密码
         library = DBUtil.getConfigInfo("library");//trs数据库中检索库名
         column_trs1 = DBUtil.getConfigInfo("column1");//trs数据库中检索字段名
         column_trs2 = DBUtil.getConfigInfo("column2");//trs数据库中检索关键字段名  ID
       
       
        try {
            DBUtil.loadProperties("timeLimits.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
        String dateStaString = DBUtil.getConfigInfo("DateSta");
        String dateEndString = DBUtil.getConfigInfo("dateEnd");
        String dateCompString = DBUtil.getConfigInfo("dateComp");
        String dataFormate = "yyyy.MM.dd HH:mm:ss";
       
        SimpleDateFormat dateformat = new SimpleDateFormat(dataFormate);
       
        try{
            dateSta = dateformat.parse(dateStaString);
            dateEnd = dateformat.parse(dateEndString);
            dateComp = dateformat.parse(dateCompString);
           
            calSta.setTime(dateSta);
            calEnd.setTime(dateEnd);
            calComp.setTime(dateComp);
        }catch(Exception e){
            e.printStackTrace();
            CheckTRSLogger.error(e.getMessage());
        }
       
        int dayNum =(calEnd.get(Calendar.YEAR)-calSta.get(Calendar.YEAR))*365
                +calEnd.get(Calendar.DAY_OF_YEAR)-calSta.get(Calendar.DAY_OF_YEAR);
       
        String calCompString = dateformat.format(calComp.getTime());
        //时间量小于截止时间执行比对程序
        while(calEnd.before(calComp)){
           
            calStaString = dateformat.format(calSta.getTime());
            calEndString = dateformat.format(calEnd.getTime());
           
            try{
                trsCon = trsDao.getTRSConnection(host, port, username, password);
                trsRs = trsDao.readTRS(trsCon, library, column_trs1, calStaString, calEndString);
                trsNum = (int)trsRs.getRecordCount();
               
                CheckTRSLogger.info("此时间段"+calStaString+"-----"+calEndString+"TRS记录量"+trsNum);
               
                oraCon = oracleDao.getOracleConnection();
                oracleRs = oracleDao.readOracle(oraCon, table, column_oracle1,column_oracle2, calStaString, calEndString);
                oracleRs.last();
                oracleNum = oracleRs.getRow();
                oracleRs.first();
                oracleRs.previous();

               
                if(oracleNum>trsNum){
                    if(trsNum>0){
                        for (int i = 0; i < trsNum; i++)
                        {
                            trsRs.moveTo(0, i);
                            String columnValue = trsRs.getString(column_trs2);
                            oracleDao.insertOracle(oraCon,tableTem,column_oracle1,columnValue);
                        }
                       
                        try{
                            trsRs.close();
                            trsCon.close();
                        }catch(Exception e){
                            e.printStackTrace();
                            CheckTRSLogger.error(e.getMessage());
                        }
                       
                        while(oracleRs.next()){
                            String temColumnValue = oracleRs.getString(column_oracle1);
                            if(!oracleDao.isExt(oraCon,tableTem,column_oracle1,temColumnValue)){
                                oracleDao.insertOracle(oraCon ,tableRecord,column_oracle1,temColumnValue);
                            }
                        }
                        oracleDao.deleteOracle(oraCon,tableTem);
                       
                    }else{
                        while(oracleRs.next()){
                            String temColumnValue1 = oracleRs.getString(column_oracle1);
                            oracleDao.insertOracle(oraCon ,tableRecord,column_oracle1,temColumnValue1);
                        }
                    }
                }
                   
            }catch(Exception e){
                e.printStackTrace();
                CheckTRSLogger.error(e.getMessage());
            }finally{
               
                try{
                    oracleRs.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    oraCon.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    trsRs.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    trsCon.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
            }
           
            CheckTRSLogger.info("已对比的时间段:"+calStaString+"----------"+calEndString);
           
            calSta = (Calendar)calEnd.clone();
           
            calEnd.add(Calendar.DAY_OF_YEAR, dayNum);
        }
    }
}
   

分享到:
评论

相关推荐

    Oracel开发注意事项

    在IT行业的数据库领域,Oracle作为一个广泛使用的数据库管理系统,其开发过程中的注意事项对于确保系统的稳定性和效率至关重要。以下是从给定的文件标题、描述、标签以及部分内容中提炼出的关键知识点: ### Oracle...

    部分常见ORACLE面试题以及SQL注意事项

    1. Oracle和SQL面试准备:文档中提到了“部分常见ORACLE面试题以及SQL注意事项”,这暗示文档中包含了针对Oracle数据库和SQL语言的面试准备知识点。由于文件中对创建表和SQL语句有具体的描述,我们可以推断文档可能...

    Oracle数据库日常维护手册.pdf

    - **注意事项**: 需要确保所有必要的Oracle服务进程都在运行中,如`oracle`进程等。 - **计数命令**: `$ ps -ef | grep ora_ | grep -v grep | wc -l` - **输出示例**: `oracle 2960 10 May 07` - **解释**: 这里...

    SQL面试题大全(部分常见ORACLE面试题以及SQL注意事项)

    - 提供事务支持,包括提交、回滚和崩溃恢复能力。 - 支持行级锁定,提高并发性能。 - 提供非锁定读取,即在SELECT查询中不会锁定行。 - 不需要锁定扩展,因为行级锁占用空间小。 - 支持外键约束,确保数据的...

    Oracle与MS_SQL_Server_之比较

    五、Oracle回滚段与SQL Server的数据库事务日志文件 这部分内容将对比两个数据库系统中用于事务恢复和数据一致性的机制。Oracle的回滚段和SQL Server的数据库事务日志文件在管理事务日志和实现回滚操作中扮演关键...

    oracle dataguard 运维正确停机启动步骤

    #### 三、注意事项 1. **顺序性**:停机时应先关闭主用机再关闭备用机;启动时则应先启动备用机再启动主用机。 2. **同步状态**:在关闭备用机前,必须先取消日志同步,以防止数据丢失。 3. **监听器管理**:确保在...

    linux-cPP-oracle.rar_occi 源码_oracle

    六、注意事项 1. 错误处理:OCPI API中的函数通常返回一个状态,需要检查是否成功,并使用`OCIErrorGet()`获取错误信息。 2. 性能优化:批量执行SQL,预编译语句,使用绑定变量等技术可以提升性能。 3. 安全性:避免...

    C#调用oci直连Oracle

    下面我们将深入探讨如何在C#中使用oci.dll进行Oracle数据库的直连,以及相关的注意事项和步骤。 首先,oci.dll是Oracle提供的一个动态链接库,它提供了对Oracle数据库的底层访问。由于不需要Oracle客户端,这种方法...

    oracle开发入门书籍

    对于想要入门Oracle开发的初学者来说,了解Oracle的基础知识和开发注意事项至关重要。本知识点从Oracle开发入门书籍的标题、描述、标签以及部分内容出发,详细介绍了Oracle的各个方面。 首先,Oracle数据库的基础...

    Oracle11g升级到11.2.0.4案例

    6. **其他注意事项**: 单实例升级通常比RAC(Real Application Clusters)更简单,但仍然需要谨慎处理。在实际操作中,可能还需要关注网络配置、权限设置、初始化参数文件(init.ora)的调整,以及在升级后执行...

    oracle实现数据库的备份与还原

    4. **注意事项**: - 安全性:备份应存储在安全位置,避免未经授权的访问。 - 测试:在实际环境前,先在测试环境中验证备份和恢复流程。 - 计划:定期执行备份,并根据业务需求制定合理的备份策略。 - 空间管理...

    oracle最全卸载方法

    在本篇文章中,我们将详细探讨Oracle最全卸载的方法,包括必要的步骤、注意事项以及可能遇到的问题及其解决策略。 首先,我们需要理解Oracle数据库的组件结构。Oracle数据库由多个组件构成,包括数据库实例、监听器...

    Linux-UNIX环境下如何创建Oracle8i数据库

    ### Linux-UNIX环境下创建Oracle8i数据库的详细步骤与注意事项 #### 标题与描述解析: 标题和描述都提到了“Linux-UNIX环境下如何创建Oracle8i数据库”,这明确指出文章将聚焦于如何在Linux或UNIX操作系统上安装并...

    浅谈Oracle常见错误处理

    首先,关于数据库恢复,在文档中特别提到“数据库非常规恢复”的注意事项。文档明确指出,以下内容仅供在非生产环境测试使用,而不能用于生产环境数据库。这强调了数据库恢复操作的风险性,尤其是那些内部方法如BBED...

    实验oracle9i升级到10g.pdf

    ### Oracle 9i 升级至 10g 的详细步骤及注意事项 #### 背景与目标 本文档详细阐述了从Oracle 9i升级到Oracle 10g的过程,特别聚焦于在HPUX操作系统下的升级流程。此次升级的目的在于迁移现有的Oracle 9.2.0.1...

    转:pb12 开发 webservice 注意事项

    ### 转:PB12 开发 WebService 注意事项 #### 概述 在将一个传统的C/S(客户端/服务器)MIS系统改造为基于WebService的C/S/S架构的过程中,会遇到一系列技术挑战与注意事项。以下内容是针对这一转换过程中所记录的...

    AIX7.1 ORACLE 11G RAC生产环境搭建(含打补丁)

    ### 注意事项 文档中提供的操作指南对于非专业人士具有一定的难度,因此在执行安装和配置过程中需要具备相应的数据库管理知识。同时,对于安装过程中出现的任何错误,都需要认真分析并作出合理处理,必要时应参考...

    Oracle高手必读,不要错过噢

    根据提供的文件信息,我们可以深入探讨以下几个Oracle数据库的关键知识点:删除表的不同方式及其注意事项、HAVING子句的使用、外部联接(尤其是“+”符号的意义)、SET TRANSACTION命令的应用以及一些实用的操作技巧...

    oracle 11补丁包和安装说明

    在整个过程中,"安装说明"文件起到了关键的作用,它会提供详细的步骤指导、注意事项以及可能遇到的问题解决方案。仔细阅读并遵循这些说明,可以确保补丁安装过程的顺利进行。 总结起来,Oracle 11g补丁包是保持...

Global site tag (gtag.js) - Google Analytics