扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
相信为数不少的系统管理员每天都在做着同一样的工作——对数据进行备份 一旦哪一天疏忽了 而这一天系统又恰恰发生了故障 需要进行数据恢复 那么此时就无能为力了 假如每天设定一个固定的时间 系统自动进行备份 那该多好啊!下面笔者结合实践经验 谈一谈UNIX环境下Oracle数据库的自动备份 以起到抛砖引玉的作用 我们计划让数据库在晚上 点做export导出备份 在凌晨 点将备份文件拷贝到磁带上 在凌晨 点将备份文件拷贝到另一台UNIX机器上 为此我们可进行如下操作 一 导出数据库 export命令将数据库中的数据备份成一个二进制文件 它通常有三种模式 用户模式 表模式和整个数据库模式 本文拟采用用户模式 备份之前 应先建立一个备份目录 以容纳备份文件 比如可建一个/backup目录 接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora—backup tar—backup 需要说明的是 前一个文件需要对Oracle的参数进行初始化 为了方便起见 我们不妨将初始化命令放到一个文件中(文件名姑且定为ora—env) 再由第一个文件调用它 ora—env文件对Oracle的参数进行初始化 其内容如下 ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOMEORACLE—SID=ora ;export ORACLE—SIDORACLE—TERM=sun;export ORACLE—TERMLD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATHORA—NLS =$ORACLE—HOME/omon/nls/admin/data;export ORA—NLSPATH= :/usr/ccs/bin:/usr/ucb:$ORACLE—HOME/bin:$PATH;export PATHDISPLAY=host : ;export DISPLAYNLS—LANG=american—america zhs cgb ;export NLS—LANG ora—backup文件对数据库做export导出 导出的文件名可以任意定 本文定为字母 xx 加当天日期 即假如当天日期是 月 号 则导出的文件名为 xx dmp 以区别于其它日期的备份文件 ora—backup文件内容 /oracle/ora—env#初始化Oracle数据库rq=′date +″%m%d″ ′#把当天日期赋予变量rqrm /backup/# 清空 /backup目录exp test/test file=/backup/xx$rq dmp log=/backup/xx$rq log本命令用于在$提示符下 导出test用户的数据(其口令亦为test) 导出文件及日志均放在/backup目录下 二 磁带备份 tar—backup文件将用export命令导出的数据文件拷贝到磁带上 tar—backup文件内容 tar rvf /dev/rmt/ n/backup/本命令可将/backup目录下当天产生的文件备份到磁带上 本文件中 tar命令使用了三个参数 其中r选项表示向磁带上拷入文件而不破坏磁带原来内容 v选项表示在拷贝过程中显示文件信息 f选项后面加上磁带设备名 指定文件向何处拷贝 n选项表示磁带机不倒带 /dev/rmt/ 表示UNIX主机第一个磁带驱动器 同理 /dev/rmt/ 则表示UNIX主机第二个磁带驱动器 依此类推 ora—env ora—backup tar—backup文件编写完成后 分别使用下述命令 chmod ora—envchmod ora—backupchmod tar—backup这样 三个文件就都变成了可执行文件 三 异地备份 我们知道 通常可用FTP命令在两台主机间传输数据 但一般是通过交互方式实现的 即需要手工输入目标主机的IP地址 用户名 口令等 显然 这不符合自动备份的要求 所幸的是 我们可以通过编写一rc的文件来达到目标 这一文件必须命名rc 且必须存放在启动FTP命令的机器上的用户注册目录中 该文件的权限应禁止组内或其它用户进行读访问 这样 当用户使用FTP命令的时候 系统将会在该用户的注册目录中寻rc文件 如果能够寻找到 将会首先执行该文件 否则 会交互式地提示用户输入用户名 口令等 在使用FTP命令之前 应先在另一台作备份用的UNIX机器上建一目录 以容纳备份文件 本文建的目录是/pub 需要指出的是 为了加快备份速度 两台主机之间的传输速率应尽可能的高 最好位于同一局域网上 rc文件内容如下 machine host # host 为作备份用的主机名login oracle#oracle为备份主机上的一个用户password oracle#oracle用户的口令为oraclemacdef init#定义一个名为init的宏 它将在自动注册进程的最后被执行bin#文件的传输方式设为二进制lcd /backup# 进入本地工作目录/backupcd /pub# 进入备份主机目录/pubmput # 将/backup目录下的所有文件传输至备份主机bye#退出FTP会话进程 rc文件编写完成后 使用下述命令 chmod rc这样rc文件就只能被该用户所访问 四 启动备份进程 Cron是一个永久进程 它由/etc/rc local启动执行 Cron检查/var/spool/cron/crontabs/目录中的文件 找到所要执行的任务和执行任务的时间 Crontab文件的每一行由六个域(minutes hours day of month month day of week mand)组成 域之间用空格或Tab分开 其中 minutes 分钟域 值的范围是 到 hours 小时域 值的范围是 到 day of month 日期 值的范围是 到 month 月份 值的范围是 到 day of week 星期 值的范围是 到 星期日值为 mand 所要运行的命令如果一个域是 表明命令可以在该域所有可能的取值范围内执行 如果一个域是由连字符隔开的两个数字 表明命令可以在两个数字之间的范围内执行(包括两个数字本身) 如果一个域是由逗号隔开的一系列值组成的 表明命令可以在这些值组成的范围内执行 如果日期域和星期域都有值 则这两个域都有效 现在 我们编写一个文件 用以启动自动备份进程 值得注意的是 该文件只能在Oracle用户名下用crontab -e 命令来编辑 否则将不会被定时执行 文件名定为Oracle 文件将放在/var/spool/cron/crontabs 目录下 编辑完成后 可以在Oracle的$提示符下 用crontab -l命令来查看 Oracle文件内容 /oracle/ora—backup# 每天 点对数据库执行备份 /oracle/tar—backup# 每天 点将文件备份到磁带上 ftp -i host # 每天 点将文件备份到另一台主机上经过以上的操作后 系统每天晚上将自动产生一个备份 并且自动将备份文件分别拷贝到磁带上和另一台主机上 系统管理员需要做的是 隔几天换一盘磁带(更换磁带的周期取决于备份文件的大小和磁带的容量)和清理备份目录 这样 他们就可以从备份数据的繁琐中解脱出来 去做其它更有意义的工作 而数据库既实现了磁带备份 又实现了异地备份 相应的安全性也大大提高了 lishixinzhi/Article/program/Oracle/201311/18204
10多年的英吉沙网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整英吉沙建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“英吉沙网站设计”,“英吉沙网站推广”以来,每个客户项目都认真落实执行。
Oracle数据库RMAN的自动备份脚本简介
各位同学知道Oracle数据库RMAN如何自动备份脚本嘛?下面我为大家整理了关于Oracle数据库RMAN的自动备份脚本文章,希望能为你提供帮助:
1、数据库设置为归档方式
2、数据库的备份脚本
db_full_backup.sh :数据库全备脚本
db_l0_backup.sh :数据库0级备份脚本
db_l1_backup.sh :数据库1级备份脚本
:数据FTP上传脚本
ftp_del.sh :数据FTP清理脚本
rman_bak.sh :数据备份主程序
3、备份原理
每周1、3、6进行0级备份
每周日、2、4、5进行1级备份
备份文件上传到FTP服务器
FTP服务器每周清理一次,但是清理后将周六和周日的备份进行保留(6.bak和0.bak)
所有工作防暑crontab中自动执行备份
4、备份目录含义
arc :数据库归档目录
rmanbak :数据库备份文件的保存目录
rmanscripts :数据库脚本存放路径
5、FTP目录
ftp上必须手动建立目录
L0:
---1
---3
---6
---6.bak
L1:
---2
---4
---5
---0
---0.bak
rman_bak.sh脚本主程序
#!/bin/bash
#--------------------------------------------
# Oracle auto backup using rman
#
# author:songrh
# week:1,3,6 Level 0 backup
# 2,4,5,0 Level 1 backup
# Copyright by ChenLong Tec
#--------------------------------------------
#
#
export ORACLE_BASE=/u02/oracle
export ORACLE_HOME=/u02/oracle/product/9.2.4
export ORACLE_SID=PROD
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export NLS_LANG=american_america.ZHS16GBK
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=/bin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/local/bin
#
SH_PATH=/u02/rmanscripts
ARC_PATH=/u02/arch
RMAN_BAK_PATH=/u02/rmanbak
#
#FULL_PATH=$RMAN_BAK_PATH/full
L0_PATH=$RMAN_BAK_PATH/L0
L1_PATH=$RMAN_BAK_PATH/L1
#
#DAY_TAG=`date "%Y-%m-%d"`
LOG_TAG=`date "%Y-%m-%d"`
#FIRST_DAY=`date %e`
WEEK=`date %w`
#WEEK=1
#
# FTP configure
IP="122.120.150.155"
FTPUSER="ftpbak"
FTPPASS="******"
FTPROOT0="L0"
FTPROOT1="L1"
#
DISK_USE=`df -k |sed -n '/u02/'p | awk '{print $5}' |sed 's/%//'`
####check path function
############
if [[ $DISK_USE -ge 90 ]]; then
rm -rf $L0_PATH/*
rm -rf $L1_PATH/*
fi
if [ "$WEEK" = "6" -o "$WEEK" = "3" -o "$WEEK" = "1" ]; then
if [ ! -d $L0_PATH ]; then
mkdir $L0_PATH
fi
if [ "$WEEK" = "1" ]; then
rm -rf $L0_PATH/*
rm -rf $L1_PATH/*
mkdir $L0_PATH/$WEEK
$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK
cd $L0_PATH/$WEEK
$SH_PATH/ftp_del.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log
else
if [ ! -d $L0_PATH/$WEEK ]; then
mkdir $L0_PATH/$WEEK
$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK
cd $L0_PATH/$WEEK
$SH_PATH/ $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log
else
;
配置批处理文件
1
新建名为"oracleBackup"的文本文档(名字自己定),然后重命名后缀为"oracleBackup.bat"的批处理文件。
2
在oracleBackup.bat文件上点击右键,选择编辑,填写以下相关内容:
rem ---------------------------------------------------------------------------
rem windows环境下Oracle数据库的自动备份脚本。
rem 可以将本批处理设成windows任务计划下自动执行。
@echo off
@echo ================================================
@echo windows环境下Oracle数据库的自动备份脚本
@echo 说明:启动备份时,需要配置以下变量
@echo 1、BACKUP_DIR 指定要备份到哪个目录
@echo 2、ORACLE_USERNAME 指定备份所用的Oracle用户名
@echo 3、ORACLE_PASSWORD 指定备份所用的Oracle密码
@echo 4、ORACLE_DB 指定备份所用的Oracle连接名
@echo 5、BACK_OPTION 备份选项,可以为空,可以为full=y,可以为owner=a用户,b用户 等等....
@echo 6、RAR_CMD 指定RAR命令行压缩工具所在目录
@echo ================================================
rem 以下变量需要根据实际情况配置------ 注意:此脚本必须放在E:\backup目录下
set BACKUP_DIR=E:\backup
set ORACLE_USERNAME=se
set ORACLE_PASSWORD=xj
set ORACLE_DB=xj_orcl
set BACK_OPTION= OWNER=se
set RAR_CMD="C:\Program Files\WinRAR\Rar.exe"
for /f "tokens=1,2" %%a in ('date/t') do set TODAY=%%a
set BACK_NAME=%ORACLE_DB%_%TODAY%()_
set BACK_FULL_NAME=%BACKUP_DIR%\%BACK_NAME%
rem 开始备份
exp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% %BACK_OPTION% file="%BACK_FULL_NAME%.dmp" log="%BACK_FULL_NAME%exp.log"
rem 压缩并删除原有文件
%RAR_CMD% a -df "%BACK_FULL_NAME%back.rar" "%BACK_FULL_NAME%.dmp" "%BACK_FULL_NAME%exp.log"
rem ---------------------------------------------------------------------------
forfiles /m *.rar -d -7 /c "cmd /c del /f @path"
3
配置相关参数:
BACKUP_DIR:该参数为备份数据文件的存放位置,可根据实际情况进行设置(注:设置的文件路径不允许包含汉字、特殊字符等内容)。
ORACLE_USERNAME:该参数为指定备份的Oracle数据库用户名。
ORACLE_PASSWORD:该参数为指定备份的Oracle数据库密码。
ORACLE_DB:该参数为指定备份的Oracle数据库连接名。
BACK_OPTION:该参数为备份选项,可以为空,也可以为full=y等。
RAR_CMD:指定RAR命令行压缩工具所在目录
END
安装软件
1
下载WINRAR安装包。
2
点击"wrar520sc_setup.exe",进行安装软件。
3
根据软件的安装路径,在命名的bat处理文件中配置:RAR_CMD参数。
END
添加定时任务
打开电脑的控制面板,选择"任务计划",双击打开。页面如图所示:
双击打开添加定时任务,点击下一步进入相关设置页面。页面如图所示:
单击浏览按钮,找到oracleBackup.bat文件添加,然后进行配置:根据实际情况选择要备份的时间类型,此处以每天执行为例,选择每天,点击下一步,设置执行时间。
输入执行定时任务机器的用户名及密码,点击下一步,进入完成界面,点击完成,至此,Oracle数据库定时任务备份的设置。
5
利用修改机器时间进行定时任务的测试。
登陆oracle数据库服务器,利用plsql程序来登陆数据库。在用户名、密码、数据库的地方分别输入对应的用户名、密码和数据库实例名称。
2
登陆完成后,新建sql窗口,并在sql窗口中执行以下语句:
-----------------------------------------------------------------------------
declare stmt
varchar2(200);begin for tb in (select table_name from user_tables where
segment_created='NO') loop stmt:='alter table '||tb.table_name||'
allocate extent'; begin execute immediate stmt; exception when
others then dbms_output.put_line(stmt); end; end loop;end;/
-----------------------------------------------------------------------------
此语句的作用是导出oracle 11g的空表
3
建立bat批处理文件
------------------------------------------------------------------------------
cd d:\bea\dbbackdel oa%date:~8,2%.dmpexpdp username/password@orcl directory=DIR_EXP dumpfile=oa%date:~8,2%.dmp
------------------------------------------------------------------------------
其中d:\bea\dbback是命令所在的目录
username/password@orcl 分别为登陆数据库的用户名、密码、数据库实例
DIR_EXP 是在plsql中建立的directory即目录,需要根据自己的需求来创建
在电脑附件中找到任务计划程序,然后点击打开,如下图
点击右侧的“创建基本任务”,创建一个任务计划,填写任务名字和描述,如下图:
设置任务的执行周期,这里周期选择每天,点击下一步
再设置开始时间,一般选择在夜间备份数据库,点击下一步
设置执行的操作是,这里是批处理,所以选择程序,点击下一步
选择前面我们只做的bat批处理文件。即oracle备份语句文件。参数填写文件所在的目录,点击下一步:
点击完成即可。
然后双击对应的计划任务名称,出现界面如下图:
然后在安全选项中选择“不管用户是否登陆都要运行此程序”
步骤阅读
然后点击确定,系统会让用户输入对应的系统登陆密码,如下图,输入完密码点击确定即可。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。下面我为大家分享一下oracle数据库自动备份系统的 方法 ,有需要的可以参考一下!
oracle数据库自动备份系统
实现过程:
1. 建立文件 backup.bat (自定义文件名.bat)
@echo off
REM ###########################################################
REM # Windows Server 2003下Oracle数据库自动备份批处理脚本
REM ###########################################################
REM 取当前系统时间,可能因 操作系统 不同而取值不一样
set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURMON=%date:~0,4%%date:~5,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=orcl
set USER=bktcgl
set PASSWORD=bktcgl
REM 创建备份用目录,目录结构为oraclebak/YYYYMMDD/
if not exist "oraclebak" mkdir oraclebak
cd oraclebak
if not exist "%CURMON%" mkdir %CURMON%
set FILENAME=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%.DMP
set EXPLOG=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%_log.log
REM 调用ORACLE的exp命令导出用户数据
exp %USER%/%PASSWORD%@%OWNER% file=%FILENAME% log=%EXPLOG% owner=%USER% grants=n
exit
注:
1.bat文件可双击或直接在命令行执行,检查正确与否
2.检查时可注释掉exit
3.以上文件实现按月份创建文件夹,按时间生成备份文件
2.建立windows任务
步骤:
开始 - 所有程序 - 附件 - 系统工具 - 任务计划程序 - 操作 - 创建基本任务
- 任务名输入"oracle_backup"(自定义任务名),执行这个任务选择每天,下一步
- 起始时间下午12:00,起始日期2012-7-11,下一步 -(启动程序)下一步
-在 浏览 中查找刚刚写好的 backup.bat 文件 下一步 完成
注:
1.在任务计划栏目下新增一个名为"oracle_backup"的任务计划,表明已经配置完毕。
2.不同系统的任务计划略有不同,但基本换汤不换药,不做一一例举
问题:系统警告"已创建新任务,但可能不能运行,因为无法设置账户信息。指定的错误是:Ox80041315:任务计划程序服务没有运行"
原因:电脑的任务计划程序服务没有启动起来。
解决:开始 所有程序 管理工具 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",
右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划就可以了。
3.简单解释
1. bat:是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用 Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
2. Echo 命令:打开回显或关闭请求回显功能,或显示消息。
3. @ 命令:表示不显示@后面的命令
4. Rem 命令:注释命令
5. If命令:if表示将判断是否符合规定的条件,从而决定执行不同的命令。
6. exit :退出命令行
7. GRANTS: 是权限的意思,在你导出的目标数据库中可能会有一些表的如select 权限等赋给了别的用户。
【GRANTS=Y】导出的时候将这些权限导出,导入的时候将这些权限导入。
【GRANTS=N】权限不被导入。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流