windows:
因项目需要,要整出个每天自动备份Oracle数据库的脚本,在参考了网上的相关资料,结合Windows自带的任务计划功能,基本能满足需求。相关代码如下:
01.@echo off
02.REM ###########################################################
03.REM # Windows Server 2003下Oracle数据库自动备份批处理脚本
04.REM ###########################################################
05.REM 取当前系统时间,可能因操作系统不同而取值不一样
06.set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%
07.set CURTIME=%time:~0,2%
08.REM 小时数如果小于10,则在前面补0
09.if "%CURTIME%"==" 0" set CURTIME=00
10.if "%CURTIME%"==" 1" set CURTIME=01
11.if "%CURTIME%"==" 2" set CURTIME=02
12.if "%CURTIME%"==" 3" set CURTIME=03
13.if "%CURTIME%"==" 4" set CURTIME=04
14.if "%CURTIME%"==" 5" set CURTIME=05
15.if "%CURTIME%"==" 6" set CURTIME=06
16.if "%CURTIME%"==" 7" set CURTIME=07
17.if "%CURTIME%"==" 8" set CURTIME=08
18.if "%CURTIME%"==" 9" set CURTIME=09
19.set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
20.REM 设置所有者、用户名和密码
21.set OWNER=DBUSER
22.set USER=DBUSER
23.set PASSWORD=DBPWD
24.REM 创建备份用目录,目录结构为backup/YYYYMMDD/
25.if not exist "backup" mkdir backup
26.if not exist "backup\%CURDATE%\" mkdir backup\%CURDATE%\
27.set CURDIR=backup\%CURDATE%
28.set FILENAME=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%.DMP
29.set EXPLOG=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%_log.log
30.REM 调用ORACLE的exp命令导出用户数据
31.exp %USER%/%PASSWORD%@DBSample file=%FILENAME% log=%EXPLOG% owner=%OWNER% grants=n
32.exit
@echo off
REM ###########################################################
REM # Windows Server 2003下Oracle数据库自动备份批处理脚本
REM ###########################################################
REM 取当前系统时间,可能因操作系统不同而取值不一样
set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURTIME=%time:~0,2%
REM 小时数如果小于10,则在前面补0
if "%CURTIME%"==" 0" set CURTIME=00
if "%CURTIME%"==" 1" set CURTIME=01
if "%CURTIME%"==" 2" set CURTIME=02
if "%CURTIME%"==" 3" set CURTIME=03
if "%CURTIME%"==" 4" set CURTIME=04
if "%CURTIME%"==" 5" set CURTIME=05
if "%CURTIME%"==" 6" set CURTIME=06
if "%CURTIME%"==" 7" set CURTIME=07
if "%CURTIME%"==" 8" set CURTIME=08
if "%CURTIME%"==" 9" set CURTIME=09
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
REM 设置所有者、用户名和密码
set OWNER=DBUSER
set USER=DBUSER
set PASSWORD=DBPWD
REM 创建备份用目录,目录结构为backup/YYYYMMDD/
if not exist "backup" mkdir backup
if not exist "backup\%CURDATE%\" mkdir backup\%CURDATE%\
set CURDIR=backup\%CURDATE%
set FILENAME=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%.DMP
set EXPLOG=%CURDIR%\%OWNER%_%CURDATE%_%CURTIME%_log.log
REM 调用ORACLE的exp命令导出用户数据
exp %USER%/%PASSWORD%@DBSample file=%FILENAME% log=%EXPLOG% owner=%OWNER% grants=n
exit
其中,%USER%/%PASSWORD%@DBSample中的DBSample为连接数据库的实例名称;grants=n表示导出数据时不导出对表/视图/序列/角色的授权
然后再结合Windows自带的“任务计划”,设置于每天夜里1点钟或其他时间自动运行,便可达到每天自动备份指定数据库的目的了!
附相关代码知识点:
1、@echo off:DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”
2、批处理获取当前日期时间:%time:~0,2%:“:”(冒号)和“~”波浪号必不可少,“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取到输出结果的后第几位;“,”后的数字:为正数表示取到输出结果的前第几位;为负数表示舍弃输出结果的后几位。如想获取当前系统时间的HHMMSS格式,则可以成%time:~0,2%%time:~3,2%%time:~6,2%
3、imp、exp非交互式命令行方式使用方法:exp 用户名/密码@实例名 file=路径/文件名.dmp owner=用户名, imp 用户名/密码@实例名 fromuser=导出时用的用户名 touser=用户名 file=路径/文件名.dmp
如果备份的文件太大,可以使用WinRAR带命令行的格式调用WinRAR压缩备份的文件,具体代码如下:
view plaincopy to clipboardprint?
01.CD %CURDATE%
02."C:\Program Files\WinRAR\WinRAR.exe" a -df %PREFIX%_%CURDATE%_%CURTIME%.rar * -r
CD %CURDATE%
"C:\Program Files\WinRAR\WinRAR.exe" a -df %PREFIX%_%CURDATE%_%CURTIME%.rar * -r
首先进行已备份文件的目录中,调用系统安装的WinRAR的命令行格式,带上相关参数,即可
linux:
1.创建一个文件名字为bak.sh的脚本,放在/home目录下面即/home/bak.sh,bak.sh中的内容如下:
#!/bin/sh
export ORACLE_BASE=/opt/oracle;
ORACLE_HOME=/opt/oracle/product/10.2.1; export ORACLE_HOME
ORACLE_SID=cms40; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
LD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATH
PATH=$PATH:/bin:/usr/bin:/usr/sbin:/root:/opt/bin
PATH=$PATH:/opt/local/bin:/opt/NSCPnav/bin:$ORACLE_HOME/bin
export PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
LANG=EN.us; export LANG
export LD_ASSUME_KERNEL=2.4.21
exp cmsuser/xyz file=/home/oracle/111`date +'%Y%m%d'`.dmp log=/home/oracle/111`date +'%Y%m%d'`.log
注意:文章中黄色部分的环境变量的来源是:
#su - oralce
$cat ~/.bash_profile
Cmsuser是要登陆的数据库的名称,xyz是要登陆的数据库的密码,/home/oracle是存放导出的数据的路径,这个路径是oracle所应有的权限,正是因为oracle用户在home下面,所以用这个目录
2. 为脚本添加执行权限
#chmod +x bak.sh
3. 编辑crontab:
#vi /etc/crontab
在最后一行中加入:
30 0 * * * oracle /home/bak.sh (bak.sh 的路径)
每天5点运行脚本,也可以修改5为其他指定时间。
注意:30 16 * * 5 root /home/bak.sh
代表意义 分钟 小时 日期 月份 周
数字范围 0-59 0-23 1-31 1-12 0-6
以下是各部分的取之范围:
分钟 0~59
小时 0~23
日期 1~31
月份 1~12
周 0~6
其中周的范围0~6,0代表星期天,1~6代表周一~周六。
分享到:
相关推荐
实现oracle 数据库自动备份+保留最新的7天数据+另一机器拷贝备份的脚本
功能说明: 备份oracle数据库,并压缩打包,传至远程FTP服务器,做到本地异地同时备份,可自动清理本地过期备份,自动保留N个最新备份(针对此种备份,不针对文件夹),老的备份自动删除,将此文件加入系统任务计划,...
"oracle数据库自动备份脚本带说明"的标题表明这是一个关于如何自动化执行Oracle数据库备份的脚本,这对于系统管理员来说是非常实用的工具。下面我们将详细探讨Oracle数据库的备份策略、自动备份脚本的工作原理以及...
总结来说,"Oracle数据库自动备份脚本FOR WIN.rar" 提供了一个高效、便捷的Windows环境下的Oracle数据库备份解决方案,它通过自动化的流程简化了管理任务,保障了数据安全。对于任何依赖Oracle数据库的企业来说,...
AutoOracleback_Oracle数据库自动备份脚本,可以设置删除历史备份时间。
总的来说,Oracle数据库自动备份脚本的创建和维护是数据库管理员日常工作中不可或缺的部分。通过合理配置和定期执行,可以有效保护数据安全,降低因硬件故障、人为错误或其他不可预见事件导致的数据丢失风险。
windows环境下Oracle数据库的自动备份脚本
包含备份自动压缩,仅保留30天内的备份文件,30天以上自动删除等,下载直接可用,有注释。加入window任务计划轻松实现自动备份。
适合小白使用的数据库自动备份的脚本,主页还有linux环境下的自动备份的脚本,免费下载使用,如有问题随时都可提问,每天我都会上线及时回复,欢迎大佬来指教。
"oracle数据库自动备份上传至FTP服务器" Oracle 数据库自动备份上传至 FTP 服务器是指通过 Shell 脚本来实现对 Oracle 数据库的自动备份,并将备份文件上传至 FTP 服务器上,以防服务器出现故障,导致数据库无法...
本文将围绕“Oracle自动备份脚本”这一主题,深入探讨如何利用脚本实现Oracle数据库的自动备份,确保数据的安全与可恢复性。 ### Oracle自动备份脚本的重要性 在日常运营中,数据的丢失或损坏可能对企业造成不可...
Linux下实现Oracle数据库自动备份的脚本
首先,让我们理解"Oracle数据库备份用bat脚本"的概念。批处理脚本是Windows操作系统中的一种命令文件,可以包含一系列的DOS命令,用于自动化执行特定的任务。在Oracle数据库环境中,我们可以利用Oracle的数据泵工具...
对于Oracle数据库而言,实现自动化的数据库备份不仅可以提高效率,还能降低人为操作失误的风险。本文将详细介绍Oracle数据库自动备份的三种常见方法:Windows下的任务计划(At命令)、UNIX下的Crontab以及第三方工具...
Oracle数据库自动备份脚本是确保数据安全的重要工具,特别是在单机数据库环境中,因为一旦数据丢失,可能会带来不可逆的损失。以下将详细解释这个超实用的Oracle数据库自动备份脚本的实现步骤和相关知识点。 首先,...
一个简单的数据库备份脚本通常包括以下部分: 1. 设置变量:定义备份的数据库名、备份路径、备份文件名等。 2. 连接数据库:使用SQL命令连接到数据库服务器。 3. 执行备份操作:执行SQL命令进行数据库备份。 4. 保存...