linux如何查看linux连oracle数据库库是否有自动备份

Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份_oracle
作者:用户
本文讲的是Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份_oracle,
Oracle数据库服务器
操作系统:CentOS
IP:192.168.0.198
端口:1521
Oracle数据库版本:Oracle11gR2
具体操作:
1、root用户登录服务器
mkdir -p /ba
Oracle数据库服务器
操作系统:CentOS
IP:192.168.0.198
端口:1521
Oracle数据库版本:Oracle11gR2
具体操作:
1、root用户登录服务器
mkdir -p /backup/oracledata #新建Oracle数据库备份目录
chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)
温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接
2、新建Oracle数据库备份脚本
vi /backup/oracledata/ordatabak.sh #新建文件,输入以下代码
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。
# oracle用户的系统环境变量路径:/home/oracle/.bash_profile
date=`date +%Y_%m_%d`
#获取系统当前日期时间
#设置删除7天之前的备份文件
orsid=`192.168.0.198:1521/orcl`
#Oracle数据库服务器IP、端口、SID
orowner=OSYUNWEI
#备份此用户下面的数据
bakuser=OSYUNWEI
#用此用户来执行备份,必须要有备份操作的权限
bakpass=OSYUNWEI
#执行备注的用户密码
bakdir=/backup/oracledata
#备份文件路径,需要提前创建好
bakdata=$orowner"_"$date.dmp #备份数据库名称
baklog=$orowner"_"$date.log #备份执行时候生成的日志文件名称
ordatabak=$orowner"_"$date.tar.gz #最后保存的Oracle数据库备份文件
cd $bakdir #进入备份目录
mkdir -p $orowner #按需要备份的Oracle用户创建目录
cd $orowner #进入目录
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #执行备份
tar -zcvf $ordatabak $bakdata
#压缩备份文件和日志文件
find $bakdir/$orowner
-type f -name "*.log" -exec rm {} \; #删除备份文件
find $bakdir/$orowner
-type f -name "*.dmp" -exec rm {} \; #删除日志文件
find $bakdir/$orowner
-type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;
#删除7天前的备份(注意:{} \中间有空格)
:wq #保存退出
chmod +x /backup/oracledata/ordatabak.sh
#添加脚本执行权限
3、vi /etc/crontab
#编辑系统任务计划,添加以下代码到最后一行
30 2 * * * oracle
/backup/oracledata/ordatabak.sh
#每天凌晨2点30分,以oracle用户执行ordatabak.sh备份文件
:wq! #保存退出
service crond restart #重启crond
每天凌晨2点30分,会自动备份数据库到/backup/oracledata/OSYUNWEI目录中,保存为.tar.gz压缩文件,并且删除7天前的备份,即只保留最近7天的数据。
备注:以上所有的代码都是在英文半角状态下输入。
至此,Linux下自动备份Oracle数据库并删除指定天数前的备份教程完成。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
oracle数据库
oracle数据库备份脚本、oracle数据库执行脚本、oracle数据库脚本编写、oracle导出数据库脚本、oracle示例数据库脚本,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!Linux下自动执行Oracle数据库的备份
星期天0 级
星期一,二,四,五,六2 级
星期三1 级
--创建本地管理路径
mkdir -p/dinglp/ora_managed/backup
mkdir -p /dinglp/ora_managed/backup
mkdir -p /dinglp/ora_managed/backup/export
mkdir -p /dinglp/ora_managed/backup/log
mkdir -p /dinglp/ora_managed/backup/rman_backup
mkdir -p /dinglp/ora_managed/s
--创建rman表空间和rman用户
create tablespacerman_tbs datafile '/oradata/luke/rman_tbs01.dbf' size 1024M;
create user rman_dlp identified by dlp default tablespace rman_tbs temp
grant connect,resource ,recovery_catalog_
--注册catalog 数据库
rman catalogrman_dlp/dlp
create catalog tablespace rman_
connect target sys/dg@priamry
--设置备份参数
configure retentionpolicy to redundancy 2;
configure retention policy to recovery window of 7
--以下是备份脚本(可以通过vi进行编辑)
dlp-& touch exp_rman.par
dlp-& touch exp_rman.sh
dlp-& touch rman_bk_LEVEL0.rcv (数据库0级备份)
dlp-& touch rman_bk_LEVEL0.sh
dlp-& touch rman_bk_LEVEL1.rcv (数据库1级备份)
dlp-& touch rman_bk_LEVEL1.sh
dlp-& touch rman_bk_LEVEL2.rcv (数据库2级备份)
dlp-& touch rman_bk_LEVEL2.sh
--倒出RMAN用户数据脚本exp_rman.par
##################################
### exp_rman.par ###
##################################
userid=rman_dlp/dlp
file=/dinglp/ora_managed/backup/export/rman.dmp
log=/dinglp/ora_managed/backup/log/rman.log
--倒出RMAN数据SHELL脚本exp_rman.sh
###################################
### exp_rman.sh ###
###################################
#!/bin/bash
source /home/Oracle/.bash_profile
cd /dinglp/ora_managed/s
exp parfile=exp_rman.par
--零级备份RMAN脚本rman_bk_LEVEL0.rcv
connect catalog rman_dlp/dlp
connect target sys/dg@primary
allocate channel d1
allocate channel d2
backup incremental level 0 database format'/dinglp/ora_managed/backup/rman_backup/level0_%d_%s_%p_%u.bak'
tag='level 0' include
sql 'alter system archive log current';
backup archivelog all format'/dinglp/ora_managed/backup/rman_backup/log_%d_%s_%p_%u.bak'
release channel d2;
release channel d1;
delete nop
--零级备份SHELL脚本的rman_bk_LEVEL0.sh
#####################################
rman_bk_LEVEL0.sh ###
#####################################
!/bin/bash
source /home/oracle/.bash_profile
cd /dinglp/ora_managed/s
rman cmdfile=rman_bk_LEVEL0.rcv msglog=$HOME/backup/log/rman_bk_LEVEL0.log
./dinglp/ora_managed//exp_rman.sh
--一级差异增量备份RMAN脚本rman_bk_LEVEL1.rcv
connect catalog rman_dlp/dlp
connect target sys/dg@primary
allocate channel d1
backup incremental level 1 format'/dinglp/ora_managed/backup/rman_backup/level1_%d_%s_%p_%u.bak' tag = 'level 1'
sql 'alter system archive log current';
backup archivelog all format '/dinglp/ora_managed/backup/rman_backup/log_%d_%s_%p_%u.bak'
release channel d1;
delete nop
--一级差异增量备份SHELL脚本rman_bk_LEVEL1.sh
#####################################
rman_bk_LEVEL1.sh ###
#####################################
!/bin/bash
source /home/oracle/.bash_profile
cd /dinglp/ora_managed/s
rman cmdfile=rman_bk_LEVEL1.rcvmsglog=/dinglp/ora_managed/backup/log/rman_bk_LEVEL1.log
. /dinglp/ora_managed/s/exp_rman.sh
--二级差异增量备份RMAN脚本rman_bk_LEVEL2.rcv
connect catalog rman_dlp/dlp
connect target sys/dg@primary
allocate channel d1
backup incremental level 2 format'/dinglp/ora_managed/backup/rman_backup/level2_%d_%s_%p_%u.bak' tag = 'level 2'
sql 'alter system archive log current';
backup archivelog all format '/dinglp/ora_managed/backup/rman_backup/log_%d_%s_%p_%u.bak'
release channel d1;
delete nop
--二级差异增量备份SHELL脚本rman_bk_LEVEL2.sh
######################################
### rman_bk_LEVEL2.sh ###
######################################
#!/bin/bash
source /home/oracle/.bash_profile
cd /dinglp/ora_managed/s
rman cmdfile=rman_bk_LEVEL2.rcv msglog=/dinglp/ora_managed/backup/log/rman_bk_LEVEL2.log
. /dinglp/ora_managed/s/exp_rman.sh
--提高RMAN增量备份性能
alter database enableblock change tracking using file '/u01/app/oracle/admin/devdb/bdump/luke.log';
descv$block_change_
--RMAN 动态视图
V$ARCHIVED_LOG 显示在数据库中已经创建、备份或清除的归档文件。
V$BACKUP_CORRUPTION 显示在备份集的备份过程中找到的损坏块。
V$COPY_CORRUPTION 显示映像复制过程中找到的损坏块。
V$BACKUP_DATAFILE 用于通过确定各数据文件中的块数来创建大小相同的备份集。通过它也可以找出数据文件中已损坏的块数。V$BACKUP_REDOLOG 显示在备份集中存储的归档日志。
V$BACKUP_SET 显示已经创建的备份集。
V$BACKUP_PIECE 显示为备份集创建的备份片。
--如何监视复制进程
使用SET COMMAND ID 命令可将服务器会话与通道联系起来。
查询V$PROCESS 和V$SESSION,可以确定会话与哪些RMAN 通道对应。
查询V$SESSION_LONGOPS,可以监视备份和复制的进度。
--linux下自动运行备份脚本
crontab格式简介
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
[root@dlp ~]# vi/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
00 22 * * 0 root /dinglp/ora_managed/s/rman_bk_LEVEL0.sh
00 22 * * 3 root /dinglp/ora_managed/s/rman_bk_LEVEL1.sh
00 22 * * 1,2,4,5,6 root /dinglp/ora_managed/s/rman_bk_LEVEL2.sh
点阅读原文,免费领取更多Oracle教程
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点用户名:ppp51
访问量:3397
注册日期:
阅读量:1297
阅读量:3317
阅读量:580938
阅读量:464753
51CTO推荐博文
这个脚本比较简单:
周天对数据库进行全备,周一到周六进行归档日志备份。
[oracle@T10 ~]$ cat backup.sh
#!/bin/bash
#oracle backup script
btime=`date +%A`
export ORACLE_SID=snzo
export ORACLE_HOME=/u01/oracle/product/10g/db
if [ $btime = &Sunday& ] ; then
&&&&&&& /u01/oracle/product/10g/db/bin/rman target / cmdfile=/home/oracle/datafile.sql log=/home/oracle`date +%Y-%m-%d`_dbf.log
&&&&&&& /u01/oracle/product/10g/db/bin/rman target / cmdfile=/home/oracle/archive.sql log=/home/oracle/`date +%Y-%m-%d`_arc.log
备份数据库的数据库脚本:
[oracle@T10 ~]$ cat datafile.sql
allocate channel ch1
allocate channel ch2
backup database format '/u01/oracle/backup/%U_%T.dbf';
backup archivelog all delete input format '/u01/oracle/backup/%U_%T.arc';
release channel ch1;
release channel ch2;
备份归档日志的脚本:
[oracle@T10 ~]$ cat archive.sql
allocate channel ch1
backup archivelog all delete input format '/u01/oracle/backup/%U_%T.arc';
release channel ch1;
设置crontab:
[oracle@T10 ~]$ crontab -l
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/u01/orace/product/10g/db/bin
HOME=/home/oracle
*/5& *& *& *& *& /home/oracle/backup.sh
此处为测试,没5分钟进行一次备份。
最后查看备份结果:
[oracle@T10 ~]$ cat _arc.log
Recovery Manager: Release 10.2.0.4.0 - Production on Wed Oct 19 16:55:01 2011
Copyright (c) , Oracle.& All rights reserved.
connected to target database: SNZO (DBID=)
3& allocate channel ch1
4& backup archivelog all format '/u01/oracle/backup/%U_%T.arc';
5& release channel ch1;
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: sid=10 devtype=DISK
Starting backup at 19-OCT-11
current log archived
channel ch1: starting archive log backupset
channel ch1: specifying archive log(s) in backup set
input archive log thread=1 sequence=102 recid=14 stamp=
input archive log thread=1 sequence=103 recid=15 stamp=
input archive log thread=1 sequence=104 recid=16 stamp=
input archive log thread=1 sequence=105 recid=17 stamp=
input archive log thread=1 sequence=106 recid=18 stamp=
input archive log thread=1 sequence=107 recid=19 stamp=
input archive log thread=1 sequence=108 recid=20 stamp=
input archive log thread=1 sequence=109 recid=21 stamp=
input archive log thread=1 sequence=110 recid=22 stamp=
input archive log thread=1 sequence=111 recid=23 stamp=
channel ch1: starting piece 1 at 19-OCT-11
channel ch1: finished piece 1 at 19-OCT-11
piece handle=/u01/oracle/backup/1rmpgnb7_1_1_.arc tag=TAG503 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:02
Finished backup at 19-OCT-11
Starting Control File and SPFILE Autobackup at 19-OCT-11
piece handle=/u01/oracle/backup/c--d comment=NONE
Finished Control File and SPFILE Autobackup at 19-OCT-11
released channel: ch1
Recovery Manager complete.
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:未分类┆阅读(0)┆评论(0)Linux下自动备份Oracle数据库 – 运维生存时间
你可能喜欢
有回复时邮件通知我
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom 商务合作QQ:
记住我的登录信息
点击“立即注册”转到用户注册页面。
输入用户名或电子邮箱地址,您会收到一封新密码链接的电子邮件。
用户名或电子邮件地址linux&oracle&exp自动备份脚本
1、备份脚本backup.sh
#!/bin/bash
ORACLE_BASE=/u01/app/oracle&&&
export ORACLE_SID=ORCL
export ORACLE_HOME=$ORACLE_BASE/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=American_America.ZHS16GBK
export BAKUPTIME=`date +%Y%m%d%H%M%S`&
--定义当前系统时间变量
DATA_DIR=/home/oracle/backup/datas/$BAKUPTIME&
--定义数据备份目录
export TAR_DIR=/home/oracle/backup/tars/$BAKUPTIME --定义数据打包目录
mkdir -p $DATA_DIR& --创建数据备份目录
$TAR_DIR&&&
--创建数据打包目录
$DATA_DIR&&&&&&&&&
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/SCOTT_$BAKUPTIME.dmp"
--备份数据库SCOTT用户
exp scott/scott file=$DATA_DIR/SCOTT_$BAKUPTIME.dmp
log=$DATA_DIR/SCOTT_$BAKUPTIME.log
echo "Starting tar..."
echo "Tar file path $TAR_DIR/SCOTT_$BAKUPTIME.tar.gz"
--压缩SCOTT备份数据文件和日志文件
tar -zcvf $TAR_DIR/SCOTT_$BAKUPTIME.tar.gz SCOTT*
echo "Bakup file path $DATA_DIR/HR_$BAKUPTIME.dmp"
--备份数据库HR用户
exp hr/hr file=$DATA_DIR/HR_$BAKUPTIME.dmp
log=$DATA_DIR/HR_$BAKUPTIME.log
echo "Starting tar..."
echo "Tar file path $TAR_DIR/HR_$BAKUPTIME.tar.gz"
--压缩HR备份数据文件和日志文件
tar -zcvf $TAR_DIR/HR_$BAKUPTIME.tar.gz HR*
echo "Bakup completed."
2.cron任务计划脚本
--每天23:30执行自动备份,并将任务计划产生的日志信息和错误信息输出到backup.log日志中
30&23 * * * /home/oracle/backup/backup.sh
&&/home/oracle/backup/backup.log 2&&1
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 linux下oracle备份 的文章

 

随机推荐