oracle备份数据库,这个问题因为进程挂起很是让我费劲,最后还是多亏了网友的力量,顺利解决,但是项目在运行当中,不知道是什么原因还是会出现进程挂起问题,重启一起tomcat,这个问题就解决了,本人水平有限,不知道具体是什么问题。
现将能用的代码贴出来,备份,以待后用。
实现的功能:备份全部数据库、备份两张数据表
需要前台传递进来一个备份标识:1:备份全部数据库,2:备份两张数据表
类名:IEEM060501Action.java
package com.jysd.ms.action;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Properties;
import com.jysd.ms.exception.BaseException;
import com.jysd.ms.util.ReadSystemConfig;
import com.jysd.ms.util.TimeCountUtil;
import com.opensymphony.xwork2.ActionSupport;
public class IEEM060501Action extends ActionSupport {
private static final long serialVersionUID = 1L;
private Runtime runtime = Runtime.getRuntime();
private Process process = null ;
//返回前台数据
private String message;
//备份文件地址
private String backupUrl ;
//备份文件名
private String dmpName;
//备份方式
private int backupMode;
//备份类型
private int backupType;
private Properties properties = new Properties() ;
/**
* @方法名称: execute
* @描述: 数据备份管理初始化方法
* 创建人:
* @return String
* @param @return
*/
public String execute()throws BaseException{
InputStream in = ReadSystemConfig.class.getClassLoader().getResourceAsStream("backupOracle.properties");
try {
properties.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
backupUrl = properties.getProperty("backupurl");
return SUCCESS;
}
/**
* @方法名称: backup
* @描述: 备份数据库
* 创建人:
* @return String
* @param @return
* @param @throws BaseException
*/
public String backup()throws BaseException{
//从配置文件中读取数据库信息,并备份数据库
boolean backupFlag = backupOracleDB(getExpString());
if(backupFlag){
message="备份成功!";
}else{
message="备份失败!";
}
return "backJson";
}
/**
* @方法名称: backupOracleDB
* @描述: 备份、还原 oracle 数据库的方法
* 创建人:
* @return boolean
* @param @param cmdStr 备份命令 ( 即导出 )
* @param @return
*/
public boolean backupOracleDB(String cmdStr) {
boolean isSuccess = true;
try {
process = runtime .exec(cmdStr);
String line = null;
BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()));
//读取ErrorStream很关键,这个解决了挂起的问题。
while ((line = br.readLine()) != null){
System.out.println(line);
}
br = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = br.readLine()) != null){
System.out.println(line);
}
//process.waitFor();
if(process.waitFor()!=0){
isSuccess = false;
}
}catch (Exception e) {
e.printStackTrace();
isSuccess = false;
}
return isSuccess ;
}
/**
* @方法名称: getLeftMenu
* @描述: 获取备份数据库的执行语句,备份文件名称,以当前时间命名
* @创建人:
* @return String
* @param @throws BaseException
*/
private String getExpString()throws BaseException{
StringBuffer sbu = new StringBuffer();
try {
InputStream in = ReadSystemConfig.class.getClassLoader().getResourceAsStream("backupOracle.properties");
properties.load(in);
sbu.append("exp ");
sbu.append(properties.getProperty("username")).append("/");
sbu.append(properties.getProperty("password")).append("@");
//sbu.append(properties.getProperty("ipaddress")).append("/");
sbu.append(properties.getProperty("databasename")).append(" file=");
sbu.append(properties.getProperty("backupurl"));
Date date = new Date();
if(dmpName==null){
dmpName = TimeCountUtil.dateToString(date,"yyyy.MM.dd.HH.mm.ss");
}else{
dmpName += TimeCountUtil.dateToString(date,"yyyy.MM.dd.HH.mm.ss");
}
dmpName = dmpName.replace(" ","");
dmpName = dmpName.replace(".dmp","");
sbu.append(dmpName).append(".dmp");
//等于2,仅备份监测数据(实时表、日结表数据)
if(backupMode==2)
sbu.append(" TABLES=(").append(properties.getProperty("realtable")).append(",").append(properties.getProperty("daytable")).append(")");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(sbu.toString());
return sbu.toString();
}
/**
* 读取数据库信息
*/
/*private static Properties properties = new Properties() ;
static {
InputStream in = ReadSystemConfig.class.getClassLoader().getResourceAsStream("backupOracle.properties");
try {
properties.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getBackupUrl() {
return backupUrl;
}
public void setBackupUrl(String backupUrl) {
this.backupUrl = backupUrl;
}
public String getDmpName() {
return dmpName;
}
public void setDmpName(String dmpName) {
this.dmpName = dmpName;
}
public int getBackupMode() {
return backupMode;
}
public void setBackupMode(int backupMode) {
this.backupMode = backupMode;
}
public int getBackupType() {
return backupType;
}
public void setBackupType(int backupType) {
this.backupType = backupType;
}
}
backupOracle.properties
username=1234
password=1234
ipaddress=192.168.1.126
backupurl=D\:/
databasename=orcl
realtable=table1
daytable=table2
分享到:
相关推荐
### Java 实现 Oracle 数据库备份的关键知识点 #### 一、背景与需求分析 在软件开发过程中,数据库备份是一项重要的工作,它可以确保数据的安全性,在发生意外情况时能够迅速恢复数据。传统的备份方式通常通过...
这个批处理文件通常会包含一系列的DOS命令,用于调用Oracle的工具,如`expdp`(数据泵导出)或`exp`来执行数据库的备份。一个基本的`expdp`命令示例如下: ```bat expdp username/password directory=BACKUP_DIR dump...
本文将详细讲解如何利用批处理脚本(BAT)进行Oracle数据库的备份,并探讨如何通过Java代码实现定时备份。 首先,让我们理解"Oracle数据库备份用bat脚本"的概念。批处理脚本是Windows操作系统中的一种命令文件,...
本主题将深入探讨如何使用C#编程语言来实现Oracle数据库的备份与还原过程。 首先,理解Oracle数据库的备份原理是必要的。Oracle提供多种备份方式,包括物理备份(如数据文件、控制文件的拷贝)和逻辑备份(如导出/...
java调用aoracle数据库
本篇将详细讲解如何利用LabVIEW调用Oracle数据库,包括ODBC连接、创建表、写入数据以及查询与更新操作。 首先,要实现LabVIEW与Oracle数据库的连接,我们需要借助ODBC(Open Database Connectivity)驱动程序。ODBC...
### Java代码实现Oracle数据库批量插入的关键知识点 #### 1. JDBC连接配置 - **JDBC URL**: `jdbc:oracle:thin:@IP:1521:orcl`,这里的URL指定了连接到Oracle数据库的方式。其中`@IP:1521:orcl`中的IP是指数据库...
本教程将详细阐述如何使用Java编程语言实现远程Oracle数据库的备份与还原功能,尤其适用于两台不在同一IP段的服务器之间操作。 首先,我们需要理解Oracle数据库备份的基本概念。备份是为了防止数据丢失,通常分为...
【Java备份Oracle数据库】 在Java中,我们可以通过执行操作系统命令(DOS命令)来备份Oracle数据库。这个过程通常涉及到调用Oracle的`exp`或`expdp`实用程序,它是一个用于导出数据库对象的数据泵工具。在提供的...
本文将详细介绍一种通过`exp`命令配合`crontab`定时任务实现Oracle数据库自动备份的方法。这种方式适用于大多数Oracle环境,并提供了两种备份方案:一是针对特定用户的单独数据备份;二是通过SYS用户进行整个数据库...
Java通过`Runtime.getRuntime().exec()`方法可以执行操作系统命令,这在上述代码中用于调用Oracle的`exp`(导出)和`imp`(导入)工具,这两个工具分别用于数据库的备份和恢复。 2. **Oracle的exp和imp工具**: -...
总的来说,这个Java源码项目提供了一个基础的SQL Server数据库自动备份解决方案,使用者可以根据自己的需求进行扩展,例如增加对其他数据库的支持,优化备份策略,或者添加更复杂的安全性和监控功能。对于学习数据库...
在本课程设计中,我们利用Java编程语言与Oracle数据库相结合,构建了一个功能完善的学生成绩管理系统。这个系统针对管理员、教师和学生三个角色,提供了不同的权限和操作功能,旨在实现成绩的有效管理和查询。 首先...
在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...
VB.NET 操作 Oracle 数据库增删改查以及存储过程调用 在本篇文章中,我们将详细介绍如何使用 VB.NET 操作 Oracle 数据库,包括增删改查操作以及存储过程的调用。 VB.NET 操作 Oracle 数据库的准备工作 在开始操作...
本工具"Oracle数据库备份恢复工具"是基于MFC(Microsoft Foundation Classes)界面开发的,旨在提供一个简单易用的平台,帮助用户轻松完成Oracle数据库的备份与恢复任务。 首先,我们来了解Oracle数据库备份的基本...
Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本篇...
本文将深入解析如何在Unix AIX环境下使用exp工具备份Oracle分区表,包括环境配置、备份策略及恢复流程,旨在提供一个全面的操作指南。 ### 环境配置 #### 系统与软件版本 - **硬件平台**: IBM P570服务器,为备份...