在对数据库进行备份时,用数据泵的方法,需要执行一段代码:


--建目录
create directory dir as 'd:\bak';

--给用户授权使用目录
grant read,write on directory dir to scott;

--在cmd中输入以下代码
expdp scott/tiger@XE directory=dir dumpfile=abc.dmp [可选tables=(xxx,xxx)]


================================================

================================================


如果每天都要进行备份,可以建一个计划任务,去执行一个批处理文件;


但是文件名不能是固定的,最好是以创建日期时间命名。


研究了一下在windows上,用系统日期时间命名文件的方法,如下;



%date%,是获取当前日期,格式如下;


C:\Documents and Settings\Administrator>date


当前日期: 2013-12-13 星期五



%time%,是获取当前时间,格式如下;


C:\Documents and Settings\Administrator>time


当前时间: 11:10:19.44



因为文件名不能带有特殊符号,比如说“:”;


所以文件名不能直接取%time%;



截取%time%的方法是:%time:~0,2%_%time:~3,2%_%time:~6,2%;


    ps:~0,2的意思是,从第0位开始截取,截取2位。


               _下划线是连接符号,可以更改。



日期的截取同理,日期只需要截去中文部分:%date:~0,10%

    ps:这里说明一下,如果系统的时间格式中有“/”的话,这里还要截取date,

                   (原因也是文件夹不能包含的字符 “ / ”)

         例:%date:~0,4%_%date:~5,2%_%date:~8,2%

================================================

================================================


测试一下:


建一个文本文档,修改后缀为.bat,输入如下代码;



set T=%date:~0,4%_%date:~5,2%_%date:~8,2%@%time:~0,2%_%time:~3,2%_%time:~6,2%


md %T%



执行以下,看看是否在同目录下创建了一个文件夹


例:2013_12_13@11_22_40



测试成功后,就可以实践了;


还是建一个文本文档改.bat,输入如下代码;



set T=%date:~0,4%_%date:~5,2%_%date:~8,2%@%time:~0,2%_%time:~3,2%_%time:~6,2%


expdp scott/tiger@XE directory=dir dumpfile=%T%.dmp


pause




运行即可,结果如下:



C:\ceshi>set T=2013-12-13@11_24_19


C:\ceshi>expdp scott/tiger@XE directory=dir dumpfile=2013-12-13@11_24_19.dmp


Export: Release 11.2.0.2.0 - Production on 星期五 12月 13 11:24:19 2013


Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.


连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
启动 "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/********@XE directory=dir dumpfile=2
013_12_13@11_24_19.dmp
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 192 KB
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 导出了 "SCOTT"."DEPT" 5.929 KB 4 行
. . 导出了 "SCOTT"."EMP" 8.484 KB 12 行
. . 导出了 "SCOTT"."SALGRADE" 5.859 KB 5 行
. . 导出了 "SCOTT"."BONUS" 0 KB 0 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
SCOTT.SYS_EXPORT_SCHEMA_01 的转储文件集为:
C:\BAK\2013_12_13XE11_24_19.DMP
作业 "SCOTT"."SYS_EXPORT_SCHEMA_01" 已于 11:25:11 成功完成




C:\ceshi>pause
请按任意键继续. . .



这样就实现了定时备份数据库,并且使用系统时间给dmp文件命名,无须担心重复。


================================================

================================================



注:

          1、在dmp文件的命名中@符号会被替换成XE。