用oracle命令备份数据库,生成dmp文件,保存了整一套的用户及表数据信息。还原简单。加上widnows的批处理bat命令,实现天天0点备份,现把经验送上给你们!javascript
用oracle命令备份数据库,生成dmp文件,保存了整一套的用户及表数据信息。还原简单。加上widnows的批处理bat命令,实现天天0点备份,现把经验送上给你们!javascript
百度经验:jingyan.baidu.comhtml
在“运行”里打开cmdjava
输入命令:sqlplus system/123456@orclsql
其中system是登陆数据库的用户名数据库
123456是用户名的密码windows
orcl是数据库实例名称oracle
若是提示命令无效,那就是你没有配置好oracle的环境变量(想当年我也被这个问题困扰着),配置oracle环境变量的方法以下:ssh
一、右击“个人电脑”->选择“属性”->选择“高级”->单击“环境变量”二、选择“Path”这一行,单击“编 辑”,在“Path”的变量值文本框的最后面先加入一个分号“:”,而后再分号后面加入sqlplus文件的目录路径,如“C:\Program Files\oracle\product\10.2.0\db_1\BIN”,而后点击“肯定”按钮。三、若是在“系统变量”列表框下面的“变量”列中找不到“ORACLE_HOME”和“ORACLE_SID”这两个变量,则须要下面操做,不然无需一下操做。四、在“系统变量”中点击“新建”按钮,在“变量名”中输入“ORACLE_HOME”,变量值中输入Oracle的安装目录路径,如“C:\Program Files\oracle\product\10.2.0\db_1”,而后点击“肯定”按钮。五、在“系统变量”中点击“新建”按钮,在“变量名”中输入“ORACLE_SID”,变量值中输入数据库的实例名,而后点击“肯定”按钮。工具
ORACLE_HOME:Oracle数据库软件的安装目录ORACLE_SID:Oracle数据库的实例名Oracle 数据库实例名:用于和操做系统进行联系的标识,即数据库和操做系统之间的交换是经过数据库实例名来体现的。spa
百度经验:jingyan.baidu.com
建立oracle的备份目录:
sql>create directory dpdata1 as 'D:\temp\dmp';
这仅仅是在oracle里设定的目录,并无真正建立
能够经过这句命令查看到这个目录
sql>select * from dba_directories;
赋于要导出数据表的所属用户权限
sql>grant read,write on directory dpdata1 to sshe;
好了,到了关键一步,以前走了很多弯路,但其它是小问题,在网上零零碎碎查了不少资料,终于找到缘由。
首先,要切换回命令窗口,不要再在sql>下运行,而后输入命令:
expdp system/123456@orcl directory=dpdata1 dumpfile=sshe.dmp logfile=sshe.log schemas=sshe
上面报了一个错ORA-39002:操做无效
缘由是D:\temp\dmp这个目录不存在,别觉得create directory以后就会自动生成文件夹,也别觉得执行expdp后会自动生成文件夹,要本身手动新建这个目录文件夹的。新建文件夹后再试一下,果真成功了!恭喜你,已成功备份!
若是你要问,导出来的dmp文件怎样还原回去。好吧,作人作到底,为了省去你再找方法的麻烦,这里我也作一个演示(通常备份的数据是等到数据库有问题时才用的上)。
首先,再一次登陆数据库 sqlplus system/123456@orcl
而后,删除目标数据库用户 drop user sshe cascade;
如今来再一次建立用户,能够用命令建立,也能够在plsql里建立,这里在plsql建立。
用system登陆数据库,而后右键users--新建
而后填写你的帐号名称,必须和备份时的用户一致,并赋于相应的权限
最后点击应用,完成用户建立。
返回DOS命令窗口,再也不是sql>
输入导入命令:impdp system/123456@orcl directory=dpdata1 dumpfile=SSHE.DMP logfile=sshe.log schemas=sshe
导入成功!
百度经验:jingyan.baidu.com
作一个按年月日命名的批处理。在D:\temp\目录下新建一个文件,随便命名为.bat,个人命名为sshe.bat,编辑为以下代码
-------------------------------------------------------------------------
@echo offrem set backupfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmprem set logfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.logrem delete 30days filesforfiles /p "D:\temp\dmp" /d -30 /c "cmd /c echo deleting @file ... && del /f @path"cd D:\temp\dmp
rem backup schemasset backupfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpset logfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.logexpdp sshe/sshe directory=DIR_DP dumpfile=%backupfile% logfile=%logfile% schemas=sshe parallel=4
-------------------------------------------------------------------------------
能够试执行一下,会自动生成一个以年月日命名的备份文件
forfiles /p "D:\temp\dmp" /d -30 /c "cmd /c echo deleting @file ... && del /f @path"的做用是:删除本目录下30天之后的备份文件,这个挺有用的。
作一个windows每晚自动运行数据库备份的bat,个人命名为auto.bat编辑以下内容
------------------------------------------------------------------------------
@ECHO OFFschtasks /create /tn SSHE数据库定时备份 /tr "D:\temp\sshe_bak.bat" /sc daily /st 00:00:00 /ru "system" PAUSEEXIT
------------------------------------------------------------------------------
双击auto.bat,就会在windows添加一个定时任务,每晚0点0分就会自动执行一次sshe.bat,从而完成自动备份的目的。
右键个人电脑:管理——任务计划程序——任务计划程序库,能够看到刚才添加进去的定时任务
能够将电脑的时钟设为23点59分50秒,等待10秒钟,看看自动备份可否成功。若是成功那就大功告成了!!
原文:http://jingyan.baidu.com/article/9113f81b2040862b3314c757.html