Java代码远程操作oracle数据库,执行sql文件、备份、回滚

前提简述

Sqlplus

是一个用于与OracleDatabase交互和执行查询的工具,所以我们要安装的是命令行工具。

imp|exp

是oracle导入导出工具,由于要备份回滚,所以我们也要安装这两个命令工具。

下载工具包

oracle官网去下载三个包:

依赖基础库:instantclient-basic-windows.x64-12.1.0.2.0.zip

sqlplus命令行工具:instantclient-sqlplus-windows.x64-12.1.0.2.0.zip

imp|exp工具:instantclient-tools-windows.x64-12.1.0.2.0.zip

sdk:instantclient-sdk-windows.x64-12.1.0.2.0.zip

安装工具

SQL*Plus命令行工具无需执行exe安装,所以只需将下载回来的两个文件解压到同一个目录即可,解压后文件名应该为instantclient_12_1,在运行工具之前我们需要在windows中配置以下环境变量,先右键计算机->属性->高级系统设置->环境变量:

在系统变量中找到Path并在后面加上刚才解压后instantclient_12_1的目录与sdk子目录

E:\instantclient_12_1\;E:\instantclient_12_1\sdk;

再新增两个变量到系统环境中

TNS_ADMIN=E:\instantclient_12_1

NLS_LANG=AMERICAN_AMERICA.UTF8

或者:编写个bat脚本,内容如下,然后执行一下脚本就好(env.bat)

set Path=%Path%;E:\instantclient_12_1\;E:\instantclient_12_1\sdk;

set TNS_ADMIN=E:\instantclient_11_2

set NLS_LANG=AMERICAN_AMERICA.UTF8

到此则一切工具安装完毕!

测试:

运行cmd->sqlplus:

运行cmd->exp:

运行cmd->imp:

java代码调用:代码找中env.bat就是上述讲到的环境变量bat脚本

public class SqlplusTest {     public static void main(String[] args) {         // 执行sql文件         String ip = "192.168.75.76";         String port = "1521";         String user = "system";         String password = "oracle";         String serviceId = "hsoradb";         String basePath = "F:/eclipse/workspace/MyTest/src/sqlplus";         String sqlplusPath = "E:/instantclient_12_1/";         String sqlPath = "C:/Users/liqiao13413/Desktop/test.sql";         String cmd = "cd /d " + basePath + " && env.bat " + sqlplusPath + " && sqlplus " + user + "/" + password + "@"+ ip + ":" + port + "/" + serviceId + " @" + sqlPath;         ICommandLineClient client = new LocalWindowsCommandClient();         ComposeResponse reponse = client.execute(cmd);         System.out.println(reponse.getExitCode());         System.out.println(reponse.getData());         // 导出数据dump         String dumpPath = "E:/database.dump";         String backupCmd = "cd /d " + basePath + " && env.bat " + sqlplusPath + " && exp " + user + "/" + password + "@"+ ip + ":" + port + "/" + serviceId + " file=" + dumpPath + " full=y";         ComposeResponse backUpreponse = client.execute(backupCmd);         System.out.println(backUpreponse.getData());         System.out.println(backUpreponse.getExitCode());         // 导入数据dump         String rollbackCmd = "cd /d " + basePath + " && env.bat " + sqlplusPath + " && imp " + user + "/" + password+ "@" + ip + ":" + port + "/" + serviceId + " file=" + dumpPath + " full=y";         ComposeResponse rollbackreponse = client.execute(rollbackCmd);         System.out.println(rollbackreponse.getData());         System.out.println(rollbackreponse.getExitCode());         client.disconnect();     } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

大数据系列(4)——Hadoop集群VSFTP和SecureCRT安装配置

前言 经过前三篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,当然,我相信安装的过程肯定遇到或多或少的问题,这些都需要自己解决,解决的过程就是学...

2944
来自专栏闵开慧

hadoop安装配置过程总结

 一、Jdk安装 系统已经默认有安装,但不完全,所以需要自己安装 配置环境变量: 在usr下新建java文件夹,将Java7压缩文件解压在该文件夹中,并配置系统...

3546
来自专栏Jed的技术阶梯

Hadoop完全分布式集群搭建

集群中只有mapred-site.xml.template,可以从这个文件进行复制

721
来自专栏北京马哥教育

MySQL开源热备工具XtraBackup的原理与程序说明

XtraBackup是Percona发布的MySQL开源热备工具,可以在尽量不影响线上读写的情况下进行快速全备、增备。支持InnoDB, XtraDB, 和My...

2895
来自专栏简单聊聊Spark

spark-1.3.0的编译及三种运行模式的配置

最近安装spark1.3.0并与Hadoop2.5.0集成,在Spark的历史资源管理中心没有找到对应的版本,而且在网上也没有找到对应版本的编译教程,于是只能根...

1043
来自专栏散尽浮华

Mysql的二进制日志binlog的模式说明

binlog模式总共可分为以下三种:row,statement,mixed 1.Row 日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进...

1815
来自专栏数据和云

impdp create index parallel-数据泵并行创建索引

题记:在数据泵导入时默认情况下创建索引是不使用并行的,所以这一步会消耗较长的时间,除了人工写脚本并行创建索引外,数据泵在导入时也可以并行创建索引,本文详细介绍了...

3224
来自专栏专注研发

HDFS基础配置

执行步骤:(1)配置集群(2)启动、测试集群增、删、查(3)执行wordcount案例

433
来自专栏idba

MySQL 各种SQL语句加锁分析

Locking read( SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE),UPDATE以及DE...

752
来自专栏云计算教程系列

如何备份你的MySQL数据库

数据库通常会在存储一些有价值的信息。因此,在发生事故或硬件故障时,必须具有可靠的备份以防止数据丢失。

2754

扫码关注云+社区