本文参考了其他 dos 计算日期的指令,参考比较多所以没一一指明,若有相关作者看到需要注明出处,请联系我,我必改正,注明出处[联系方式在博文尾部];
备份【导出】
@echo off
setlocal enabledelayedexpansion
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo 取当前时间戳;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 按所需格式拼接日期
set u_yyyy=%date:~0,4%
set u_mm=%date:~5,2%
set u_dd=%date:~8,2%
set u_date=%u_yyyy%-%u_mm%-%u_dd%
:: 按所需格式拼接日间
set u_hh=%time:~0,2%
set u_MM=%time:~3,2%
set u_ssff=%time:~6,5%
set u_time=%u_hh%.%u_MM%.%u_ssff%
:: 拼接时间戳,并把空格换成0【24 小时制,上午10点前,会出现空格】
set u_timestamp=%u_date%-%u_time%
set u_timestamp=%u_timestamp: =0%
echo %u_timestamp%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo 计算 days 天前或 days 天后的日期;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 正数:days 天前的日期;负数:days 天后的日期;
set days=17
rem program 'begin' 开始
:begin
:: 判断操作系统
ver | find /i "5.0" > nul && goto 2k || goto xp
rem program 'xp';xp 系统
:xp
for /f "tokens=1-3 delims=-/. " %%i in ("%date%") do (
set /a yy=%%i, mm=%%j, dd=%%k
)
goto nornal
rem program '2k';2k 系统
:2k
for /f "tokens=2-4 delims=-/. " %%i in ("%date%") do (
set /a yy=%%i, mm=%%j, dd=%%k
)
goto nornal
rem program 'nornal';计算日期
:nornal
:: echo %yy%-%mm%-%dd%;算出%yy%是否是闰年
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)"
:: 计算日期相差的天数
set /a nd=!dd!-!days!
:: echo [nd]=%nd% 计算当月的天数
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
set /a num+=1
if !num! equ !mm! set /a mday=%%i
)
::echo yy=%yy% mm=%mm% dd=%dd% nd=%nd% mday=%mday% leap=%leap%; 如果小于等于0则转到xiaoyu块处理
if !nd! leq 0 goto xiaoyu
:: 如果大于当月天数则转到dayu块处理
if !nd! gtr !mday! goto dayu
set nm=%mm%
goto println
rem program 'dayu' 处理日期相差天数大于当月天数的情况
:dayu
set /a nm=!mm!+1
set /a nd=!nd!-!mday!
if !nm! gtr 12 (
set /a yy=!yy!+1
set /a nm-=12
)
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)"
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
set /a num+=1
if !num! equ !nm! set /a mday=%%i
)
set mm=%nm%
::echo yy=%yy% mm=%mm% nd=%nd% mday=%mday% leap=%leap%
if !nd! gtr !mday! goto dayu
goto println
rem program 'xiaoyu' 处理日期相差天数小于等于0的情况
:xiaoyu
set /a nm=!mm!-1
if !nm! lss 1 (
set /a yy=!yy!-1
set /a nm+=12
)
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)"
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
set /a num+=1
if !num! equ !nm! set /a mday=%%i
)
set /a nd=!mday!+!nd!
set mm=%nm%
::echo yy=%yy% mm=%mm% nd=%nd% mday=%mday% leap=%leap%
if !nd! leq 0 goto xiaoyu
goto println
rem program 'println' 输出
:println
set mm=0%nm%
set dd=0%nd%
set mm=%mm:~-2%
set dd=%dd:~-2%
::按所需格式拼接日期
set calc_date=%yy%-%mm%-%dd%
set u_calc_date=%calc_date: =0%
echo %u_calc_date%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo oracl 按用户导出,备份;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 导出文件目录
set file_dir=[file_dir]
:: 备份文件目录
set backup_dir=\\[共享文件夹ip]\[backup_dir]
:: 导出文件名【只取计算出的时间戳,按用户导出时,在导出语句中加上用户名做前缀,以免导出多个用户的数据时,文件名重复导致数据文件被覆盖】
set fileName=%u_timestamp%
:: 删除大史文件名【只取计算出的日期,删除时按文件名模糊匹配】
set delete_fileName=%u_calc_date%
:: oracle 导出语句,如果要备份其他用户,加上导出语句就可以,注意文件名前加上用户前缀就可以,其他不需要修改。
exp [USERNAME]/[USERPASSWORD]@[SERVER_NAME] owner=[USERNAME] file=%file_dir%\[USERNAME]_%fileName%.dmp log=%file_dir%\logs\[USERNAME]_%fileName%.log
:: 复制文件到备份目录,包括日志文件
copy /B %file_dir%\*%fileName%*.dmp %backup_dir%
copy /B %file_dir%\logs\*%fileName%*.log %backup_dir%\logs
:: 删除 days 天前的数据文件;【备份目录与导出文件的目录都删除】
del /Q /F %file_dir%\*%delete_fileName%-*
del /Q /F %file_dir%\logs\*%delete_fileName%-*
del /Q /F %backup_dir%\*%delete_fileName%-*
del /Q /F %backup_dir%\logs\*%delete_fileName%-*
echo.
echo 备份完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
pause.
导入:
imp [USER_NAME]/[USER_PASSWORD]@[SERVICE_NAME] fromuser=[SOURCE_USER_NAME] touser=[TARGET_USER_NAME] file=[文件目录/文件名].dmp
--------------------------------------------------------------------
若有其他凝问或文中有错误,请及时向我指出,
我好及时改正,同时也让我们一起进步。
email : binary_space@126.com
qq : 1035862795
敲门砖: 代码谱写人生
分享到:
相关推荐
本资料"windows下oracle数据库备份压缩&删除历史备份.rar"提供了一个详细的过程,用于实现Oracle数据库的定时备份、备份文件的压缩以及自动删除两天前的旧备份。 首先,我们来讨论Oracle数据库的备份方法。在Oracle...
在Linux环境下,远程定时备份Oracle数据库是一项至关重要的任务,它能确保数据的安全性和业务的连续性。Oracle数据库作为企业级的数据库管理系统,其备份与恢复策略必须严谨且可靠。以下将详细阐述如何在没有安装...
本文将根据给定的信息“如何备份还原oracle数据库”,详细介绍备份与恢复Oracle数据库的方法与步骤。 ### 一、Oracle数据库备份的重要性 在日常维护工作中,由于硬件故障、人为操作失误或系统崩溃等原因,可能会...
本文档详细介绍了如何使用 Veeam 备份恢复 Oracle 数据库的配置过程,从环境准备到推送 Oracle RMAN Plugin,再到创建备份作业和运行备份作业,最后实现 Oracle 数据库的异机恢复。本文档旨在帮助读者快速掌握 Veeam...
1. **JDBC连接Oracle数据库**:使用Java的JDBC API,我们需要引入Oracle的JDBC驱动(ojdbc.jar),并通过`Class.forName()`加载驱动,然后用`DriverManager.getConnection()`建立数据库连接。 2. **执行备份脚本**...
windows环境下Oracle数据库的自动备份脚本
总结,通过RMAN和Windows任务计划程序的结合,企业可以在Windows环境下实现Oracle数据库的自动备份策略,确保数据安全的同时,降低管理复杂性。了解并熟练掌握这些知识,对于数据库管理员来说至关重要,因为这直接...
"Oracle数据库备份与恢复在Windows环境下" 在Windows环境下,Oracle数据库的备份和恢复是非常重要的任务。以下是详细的步骤,以确保数据库的安全和可靠性。 知识点1:使用expdp命令导出数据库 expdp命令是Oracle...
在Windows环境下,对Oracle数据库进行备份是数据库管理中的重要任务,确保数据安全和业务连续性。Oracle数据库的备份通常采用数据泵(Data Pump)工具,它提供了高效、灵活的导入和导出功能。本主题将深入讲解如何...
Oracle数据库是企业级广泛使用的数据库管理系统,其稳定性和可靠性备受...通过遵循这些最佳实践并结合"Oracle数据库备份七天"的VBS脚本,你可以构建一个高效且可靠的备份解决方案,为你的Oracle数据库提供持续的保护。
### Oracle备份与还原数据库知识点详解 #### 一、Oracle数据库备份方法概述 Oracle数据库提供了三种标准的备份方式:导出/导入(EXP/IMP)、热备份(Hot Backup)和冷备份(Cold Backup)。这些方法根据不同的场景...
本文将结合实践经验,讨论UNIX环境下Oracle数据库的自动备份实现方法。 一、数据库export备份 数据库export备份是将Oracle数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库...
在IT行业中,数据库管理是至关重要的任务之一,而Oracle数据库作为全球广泛使用的数据库管理系统,其数据安全性与备份策略显得尤为重要。本文将详细讲解如何利用批处理脚本(BAT)进行Oracle数据库的备份,并探讨...
本文将详细介绍Oracle数据库自动备份的三种常见方法:Windows下的任务计划(At命令)、UNIX下的Crontab以及第三方工具(如Viritas),并提供具体的实施步骤。 #### 二、Windows下的任务计划(At命令) ##### 1. ...
本文主要讨论如何在Linux系统下使用Oracle的exp工具来备份数据库到本地,并结合使用shell脚本和crontab实现自动化定时备份。 首先,我们需要创建一个shell脚本来执行Oracle的exp命令。创建一个新的shell文件,例如...
echo Windows环境下Oracle数据库的自动备份脚本 echo 1. 使用当前日期命名备份文件。 echo 2. 自动删除7天前的备份。
功能说明: 备份oracle数据库,并压缩打包,传至远程FTP服务器,做到本地异地同时备份,可自动清理本地过期备份,自动保留N个最新备份(针对此种备份,不针对文件夹),老的备份自动删除,将此文件加入系统任务计划,...
Oracle数据库RMAN自动备份和恢复是指使用Oracle提供的RMAN(Recovery Manager)工具来实现数据库的自动备份和恢复。RMAN是Oracle数据库的备份和恢复解决方案,可以实现数据库的自动备份、恢复和管理。 一、RMAN...
该脚本适用于Windows环境下的Oracle数据库备份管理。 ##### 2.2 关键步骤解析 - **步骤1:**设置当前日期作为备份文件的名称。这一步非常关键,因为它确保了每个备份文件都有唯一的标识符,便于后续管理和清理。 -...
相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份。一旦哪一天疏忽了, 而这一天系统又恰恰发生了故障,...本文结合实践 经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。