专栏首页问天丶天问Java代码远程操作oracle数据库,执行sql文件、备份、回滚

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 条评论
登录 后参与评论

相关文章

  • Vue实践--指令

    1. v-text     v-text主要用来更新textContent,可以等同于JS的text属性。

    问天丶天问
  • JS 控制隐藏显示

    问天丶天问
  • Mysql忘记root密码,修改root密码

    问天丶天问
  • Android开发工具类之HttpUtils

    今天我们讲常用的开发工具类之HttpUtils,我发现上两次,我对于每个方法都进行了一定的解释,有人跟我评论和留言说,不用我解释,这么简单,这么明显的使用方法,...

    非著名程序员
  • 17.用300行代码手写初体验Spring V1.0版本

    3、 全程手写实现SpringMVC的核心功能,从最简单的V1版本一步一步优化为V2版本,最后到V3版本。

    编程之心
  • Android 垃圾分类APP(六)网络处理

      在之前的文章中完成了对首页新闻数据的显示处理,也做了UI的简单优化,现在已经看上去比之前要上档次了一些,不过我们还得继续优化才行。

    晨曦_LLW
  • Django 自定义模型管理器类2个应用

    py3study
  • Android 二次封装网络加载框架

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

    程序员徐公
  • Java基础-day05-代码题

    Java基础-day05-代码题 1.在主方法里键盘录入n(1<=n<=9),并调用打印nn乘法表的方法。 ? 实现代码: package StudentJ...

    Java帮帮
  • 先读懂CapsNet架构然后用TensorFlow实现:全面解析Hinton提出的Capsule

    本文转载于:https://www.jiqizhixin.com/articles/2017-11-05。如有侵权请告知。

    OLDPAN

扫码关注云+社区

领取腾讯云代金券