请高手帮帮兄弟啊!我用exp导出oracle的数据文件后,怎么用系统的时间做文件的名称?

blackice1015 2004-09-01 08:36:15
exp test/test@test d:\aaa.dmp
怎么才能把aaa.dmp这个文件写成动态的文件名,随备份的系统时间取值。例如file_20040901.dmp
...全文
295 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dybinchn 2005-03-02
  • 打赏
  • 举报
回复
在命令行中执行exp命令,照提示一步步作就可以啦
shouhuzhe 2004-09-02
  • 打赏
  • 举报
回复
生成一个BAT,将上面代码拷贝导里面,使用AT命令定义一个启动时间
at 23:59 /every D:\auto_exp.bat
刚刚完成,呵呵,一起使用一下
shouhuzhe 2004-09-02
  • 打赏
  • 举报
回复
@ECHO 功能:获取系统日期时间,导出数据库
@ECHO 说明:随便使用和更改
@ECHO 作者:守护者
@ECHO 时间:2004-09-02
ECHO OFF
REM 输出日期时间到TEMP
set mydate=%temp%\mydate.tmp
set mytime=%temp%\mytime.tmp
date /T > %mydate%
time /T > %mytime%
REM 忽略;开头的行,用-分隔,取1,2,3个符号
set parsearg="eol=; tokens=1,2,3* delims=-, "
for /F %parsearg% %%i in (%mydate%) do set yyyymmdd=%%i%%j%%k
set parsearg="eol=; tokens=1,2,3* delims=:, "
for /F %parsearg% %%p in (%mytime%) do set ppqq=%%p%%q
REM set exp_file=%TEMP%\HNDL_%yyyymmdd%_%ppqq%.dmp
set exp_file=C:\HNDL_%yyyymmdd%_%ppqq%.dmp

REM 如果文件存在,那么退出
REM IF EXISTS %exp_file% GOTO END1
set store_path=D:\营销开发日常备份\数据库备份\HNDL_%yyyymmdd%_%ppqq%.dmp

REM 到出文件
ECHO ON
exp HNDL/HNDL@HNDL FULL=N GRANTS=Y ROWS=Y file=%exp_file% OWNER=HNDL
ECHO OFF
REM 拷贝到默认路径
ECHO ON
COPY %exp_file% %store_path%/Y
DEL %exp_file% /F

REM 导出数据库到默认路径,数据库导出文件为当日日期
REM exp HNDL/HNDL@HNDL FULL=N GRANTS=Y ROWS=Y file=D:\营销开发日常备份\数据库备份\%date:~4,10%.dmp OWNER=HNDL
REM 导出数据库到默认路径,数据库导出文件为当日日期的星期几,每个星期只保留一份备份,重复文件将自动覆盖
REM exp HNDL/HNDL@HNDL FULL=N GRANTS=Y ROWS=Y file=D:\营销开发日常备份\数据库备份\%date%.dmp OWNER=HNDL
REM 导出完成
REM
REM GOTO END2
REM
REM :END1
REM REM 退出
REM ECHO 存在文件%exp_file% 请确认后退出
REM GOTO END3
REM :END2
REM ECHO 导出完成,请确认退出
REM GOTO END3
REM :END3
REM Pause
REM ECHO 完成退出
zmgowin 2004-09-02
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/2847/2847335.xml?temp=.4883234
g_robin 2004-09-02
  • 打赏
  • 举报
回复
这个问题不需要在oracle里解决,只要能生成文件名就可以了。
建立一个.vbs文件:
DIM objShell
Set objFileSystem = Wscript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder("d:\zzz")
Set colFiles = objFolder.Files

For Each FileObj in colFiles
fsDate = FileObj.DateCreated
if (DateDiff("d",Now,fsDate)<-3) then
FileObj.Delete
end if
Next

set objShell = wscript.createObject("wscript.shell")
iReturn = objShell.Run("exp system/manager owner=ttt file=d:\zzz\bak" & Date(), 1, TRUE)

然后在windows计划任务里执行这个脚本就可以了。
drabit 2004-09-01
  • 打赏
  • 举报
回复
如果solidpanther的这个存储过程能成功,恐怕oracle要面临起诉:任何一个能登陆数据库的用户(不管是否dba),都能用下面的pl/sql把硬盘格式化了:(windows下)
begin
execute('format c:');
end ;
dybinchn 2004-09-01
  • 打赏
  • 举报
回复
向你学习!
blackice1015 2004-09-01
  • 打赏
  • 举报
回复
太谢谢了!我试试看看。无限感激!!!!
solidpanther 2004-09-01
  • 打赏
  • 举报
回复
建立存储过程为:
create or replace procedure pro_bakdatabase is
begin
execute('exp test/test@test d:\aaa_'||to_char(sysdate,'yyyymmdd')||'.dmp');
end pro_bakdatabase ;
然后再调用这个存储过程pro_bakdatabase
solidpanther 2004-09-01
  • 打赏
  • 举报
回复
plsql块:
declare
kkk date
begin
execute('exp test/test@test d:\aaa_'||to_char(sysdate,'yyyymmdd')||'.dmp')
end;

17,383

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧