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. VMware6.0-vCenter的安装准备及安装

    由于6.0的VCSA安装需要跳板主机来辅助,而在5.5时时可用用OVA导入模式安装的. 首先安装跳板插件 安装完成后,点击setup链接. 设置 Single Sign-On (SSO),将root和 ...

  2. BZOJ.3351.[IOI2009]Regions(根号分治 差分)

    BZOJ 表示非常爽2333 \(Description\) 给定一棵\(n\)个点的树,每个点有一个属性\(1\leq r_i\leq R\). \(Q\)次询问,每次询问给定\(r1,r2\),求 ...

  3. [SDOI2017]树点涂色

    Description: Bob有一棵\(n\)个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不 ...

  4. IDEA2018.2.2 版本配置注释模板

    Ctrl+Alt+S进入设置界面(我没改过按键映射,你也可以从File-OtherSetting进入设置),找到Editor->File and Code Templates,先在Include ...

  5. Python 列表(List)-文摘

    原文地址:http://www.runoob.com/python/python-lists.html Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个 ...

  6. eclipse编辑环境下导入springmvc的源码

    如果想要查看@ModelAttribute的源码,只需要,点击ctrl+鼠标左键,就会出现attach--,点击attach--,external,选择类似springframe-web-source ...

  7. echarts相关的可视化数据

    echarts使用步骤: 1)设置一个容器,该容器用来放图形,一定要给容器设置高度: 2)初始化echarts实例,语法:var  aa =  echarts.init(DOM); 例如: echar ...

  8. Celery框架

    在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式. 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是 ...

  9. java第七周动手动脑

    public class ParentChildTest { public static void main(String[] args) { Parent parent=new Parent(); ...

  10. 使用html5 Canvas绘制线条(直线、折线等)

    使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有"()"者为方法)如下: 属性或方法 基本描述 strokeSty ...