备份与还原ORACLE数据库(通过CMD命令执行)

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命令执行)的更多相关文章
- 使用数据泵expdp、impdp备份和还原oracle数据库
前面我已经整理过EXP 和 IMP备份和还原Oracle数据库的方法 今天我们只讲使用数据泵 expdp 和impdp的方法,有的同学会问他们有什么差别呢? EXP和IMP是客户端工具程序,它们既可以 ...
- 备份与还原mysql 数据库的常用命令。
一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 ...
- Oracle数据库导入导出命令总结
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...
- Oracle数据库导入导出命令总结 (详询请加qq:2085920154)
分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...
- oracle数据库导入导出命令!(转)
oracle数据库导入导出命令! Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成 ...
- oracle数据库exp/imp命令详解
转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...
- Java在线备份和还原MySQL数据库。
2018年6月29日14:00:48 阅读数:1534 今天整了整整一整天,终于使用Java在线备份和还原MySQL数据库了,哎,备份倒是很快,就是在还原的时候遇到了一个问题,也不报错,结果将sql语 ...
- dotnetcore ef 调用多个数据库时用户命令执行操作报错
dotnetcore ef 调用多个数据库时用户命令执行操作报错 1.多个DbContext 时报错: 报错: More than one DbContext was found. Specify w ...
- oracle数据库导入导出命令!
Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢 ...
随机推荐
- CodeForces - 1016D 补零思想
题目连接: https://vjudge.net/problem/1753263/origin 其实这道题跟行列式里的分块发有点类似,但也是类似罢了. 主要的思想是每一行,每一列的第一行(或者最后一行 ...
- [python]UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd'
有关编码问题,一直以来都是十分头疼的问题.代码中的字符编码其实还好,但是由于使用的window系统,会用Window的默认编码去解析文本. 今天用脚本在写文件的时候,就总是弹出UnicodeEncod ...
- BZOJ.2006.[NOI2010]超级钢琴(贪心 堆)
BZOJ 洛谷 思路和BZOJ3784一样,用前缀和+堆维护.做那题吧,不赘述啦. (没错我就是水一个AC) //54620kb 1060ms #include <queue> #incl ...
- Java笔记(三)异常
异常 一.概念 一)为什么会有Java异常机制 在没有Java异常机制的情况下,唯一的退出机制就是返回值,判断是否异常的方法就是 返回值.方法根据是否异常返回不同的返回值,调用者根据不同的返回值进行判 ...
- Linux下MySQL数据库常用基本操作
1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...
- Linux vi/vim命令高效助记图
图片来源网上,如有侵权,请告知,我会删除掉,谢谢~ 常用编辑按键: 1 vi +[num] file 打开文件,并将光标置于第n行首 2 vi + file 打开文件,并将光标置于最后一行首 3 vi ...
- C++程序设计方法3:移动构造函数
移动拷贝构造函数 语法: ClassName(ClassName&&); 目的: 用来偷“临时变量”中的资源(比如内存) 临时变量被编译器设置为常量形式,使用拷贝构造函数无法将资源偷出 ...
- 编程菜鸟的日记-初学尝试编程-编写函数实现strcpy功能(总结考察点)
char *Mystrcpy(char *strDest, const char *strSrc) //考察点1:将源字符串加const,表明为输入参数 {//考察点2:对源地址和目的地址的非0断言 ...
- jsp 出现cannot be resolved to a type问题解决办法
(1)检查<%@ page import>是否导入了相关的包.若是没有则需导入 (2)若导入相应的包后问题仍然存在则需创建相关的servlet
- Map集合架构总结
说明;这里先学习Map集合,然后再学习Set集合,是因为Set集合中的HashSet依赖于hashMap,就是通过hashMap集合来实现的,TreeSet集合依赖于TreeMap集合,TreeSet ...