31.1:(若用程序调用cmd,则在备份和还原 末尾语句加上 2>&1 ,直接运行则不需要加)

--备份:
     1) exp SA/"""abc@1234"""@192.168.31.1:1521/DB1 buffer=10240000 file=C:\bak\data_back.dmp log=C:\bak\data_bak_explog.txt owner=(sa,user1) 2>&1
      --还原:还原前先执行删除,后执行还原
    1)  sqlplus sa/"""abc@1234"""@192.168.31.1:1521/DB1 @C:\bak\deleteDBObjects.txt
    2)  imp SA/"""abc@1234"""@192.168.31.1:1521/DB1 file=C:\bak\data_back.dmp full=y ignore=y 2>&1

deleteDBObjects.txt内容:
                      declare vsql varchar2(2000);
                      begin
                            --删除表
                            BEGIN
                              for i in (select 'drop table '||owner||'.'||table_name||' cascade constraints' v_name
                                          from dba_tables where owner='SA' or owner='user1')
                          loop
                              vsql:=i.v_name;
                             --dbms_output.put_line(vsql);
                               execute immediate vsql;
                            end loop;
                            end;

--删除过程和函数
                            BEGIN
                              for i in (select 'drop '|| object_type||' '||owner||'.' || object_name||'' v_name
                                        from dba_objects where (object_type='PROCEDURE' or object_type='FUNCTION' or object_type='PACKAGE') and (owner='SA' or owner='user1')
                                        )
                              loop
                              vsql:=i.v_name;
                             --dbms_output.put_line(vsql);
                               execute immediate vsql;
                              end loop;
                            end;
                      end;
                      /
                      exit;

相关代码如下:

public async void ExecuteCmd()
      {
          try
          {
              Process[] MyProcess = Process.GetProcessesByName("exp");//获取已经存在的exp.exe和imp.exe进程
              MyProcess.ToList().AddRange(Process.GetProcessesByName("imp"));
              if (MyProcess.Length != 0)
              {
                  for (int i = 0; i < MyProcess.Length; i++)
                  {
                      MyProcess[i].Kill();//关闭已存在的进程
                      MyProcess[i].Dispose();
                  }
              }

string cmd = txtInput.Text;// strInput;
              System.Diagnostics.Process p = new System.Diagnostics.Process();
              p.StartInfo.FileName = "cmd.exe";// @"D:\MyOracle\Oracle11g\product\11.2.0\dbhome_1\BIN\exp.exe";
                                               //启用操作系统外壳程序执行
              p.StartInfo.UseShellExecute = false;
              p.StartInfo.RedirectStandardInput = true;
              p.StartInfo.RedirectStandardOutput = true;
              p.StartInfo.RedirectStandardError = true;
              p.StartInfo.CreateNoWindow = true;

p.OutputDataReceived += new DataReceivedEventHandler(P_OutputDataReceived);
              p.ErrorDataReceived += new DataReceivedEventHandler(P_OutputDataReceived);

p.Start();                                  //设置自动刷新缓冲并更新   
                                                          //p.StandardInput.AutoFlush = true;           //写入命令     
              p.StandardInput.AutoFlush = true;           //写入命令
              p.StandardInput.WriteLine(cmd);                             //p.StandardInput.WriteLine(strInput);
              p.StandardInput.WriteLine("exit");          //等待结束

p.BeginOutputReadLine();
              p.WaitForExit();

}
          catch (Exception ex)
          {
          }
      }

delegate void AsynUpdateUI(string msg);
      private void UpdataUIStatus(string msg)
      {
          if (InvokeRequired)
          {
              this.Invoke(new AsynUpdateUI(delegate (string argMsg)
              {

txtShow.AppendText(argMsg + Environment.NewLine);

}), msg);
          }
          else
          {
              txtShow.AppendText(msg + Environment.NewLine);
          }
      }
      private void P_OutputDataReceived(object sender, DataReceivedEventArgs e)
      {
          if (e.Data != null)
          {
              string x = e.Data.ToString();
              UpdataUIStatus(x);
          }
      }
      private void btnBAKUP_Click(object sender, EventArgs e)
      {
          Thread t = new Thread(new ThreadStart(this.ExecuteCmd));
          t.Start();
      }

点击下载源码

备份与还原ORACLE数据库(通过CMD命令执行)的更多相关文章

  1. 使用数据泵expdp、impdp备份和还原oracle数据库

    前面我已经整理过EXP 和 IMP备份和还原Oracle数据库的方法 今天我们只讲使用数据泵 expdp 和impdp的方法,有的同学会问他们有什么差别呢? EXP和IMP是客户端工具程序,它们既可以 ...

  2. 备份与还原mysql 数据库的常用命令。

    一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 ...

  3. Oracle数据库导入导出命令总结

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...

  4. Oracle数据库导入导出命令总结 (详询请加qq:2085920154)

    分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...

  5. oracle数据库导入导出命令!(转)

    oracle数据库导入导出命令! Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成 ...

  6. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

  7. Java在线备份和还原MySQL数据库。

    2018年6月29日14:00:48 阅读数:1534 今天整了整整一整天,终于使用Java在线备份和还原MySQL数据库了,哎,备份倒是很快,就是在还原的时候遇到了一个问题,也不报错,结果将sql语 ...

  8. dotnetcore ef 调用多个数据库时用户命令执行操作报错

    dotnetcore ef 调用多个数据库时用户命令执行操作报错 1.多个DbContext 时报错: 报错: More than one DbContext was found. Specify w ...

  9. oracle数据库导入导出命令!

    Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢 ...

随机推荐

  1. XamarinSQLite教程添加列

    XamarinSQLite教程添加列 如果开发者想要在现有的表中添加列,并不需要删除重新创建数据表,只需要修改数据表.操作步骤如下. (1)右击需要添加列的表,单击Add column…(beta)命 ...

  2. jmeter时间格式化

    jmeter时间格式化 #17位时间取到毫秒 ${__time(yyyyMMdd-HHmmssSSS,)} #10位时间戳 ${__time(/1000,)} yyyyMMddHHmmss yyyy年 ...

  3. Wannafly Winter Camp 2019.Day 8 div1 I.岸边露伴的人生经验(FWT)

    题目链接 \(Description\) 给定\(n\)个十维向量\(\overrightarrow{V_i}=x_1,x_2,...,x_{10}\).定义\(\overrightarrow{V}= ...

  4. 【树形期望DP】BZOJ3566- [SHOI2014]概率充电器

    [题目大意] 充电器由 n-1 条导线连通了 n 个充电元件.这n-1条导线均有一个通电概率p%,而每个充电元件本身有直接被充电的概率q[i]%.问期望有多少个充电元件处于充电状态? [思路] 第一次 ...

  5. bzoj3255 一个关于序列的游戏

    题意是啥 给你一个数列,可以任意删去一段,记其长度为$s$,得到$val_s$的价值,问你最大价值和为多少.. 其中这一段数要满足成一个上凸且相邻数差为$1$ 显然,删掉一段数后剩下的左右会相邻.. ...

  6. Html表单标签:

    表单用于收集不同的类型的用户输入,表单由不同类型的标签组成,相关标签及属性如下: (1)<form>标签 定义整体的表单区域 -- action属性 定义表单数据提交址址 -- metho ...

  7. JS膏集02

    JS膏集02 1.复习 函数也是对象 2.贪食蛇案例 <!DOCTYPE html> <html lang="en"> <head> <m ...

  8. 4、css属性操作

    前面说的主要是css的使用规则和选择器等,这篇主要讲解css的具体使用. 本篇导航: css text 背景属性 边框属性 列表属性 dispaly属性 外边距(margine)和内边距(paddin ...

  9. 1、mysql初识

    之前我们写代码需要存取信息时用的是文件可是用文件存取数据非常局限,今天我们将走进一个新的世界mysql 本片导航: 数据库由来 数据库概述 mysql介绍 下载安装 mysql软件基本管理 初识sql ...

  10. 【记】研究Sharding-JDBC遇到的一个异常(Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table structure for `t`. The different meta data of actual tables are as follows)

    一.异常信息 Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table str ...