DG9RMAN全备和增量备shell脚本+windows下脚本.docx

上传人:b****7 文档编号:15919829 上传时间:2023-07-09 格式:DOCX 页数:18 大小:19.50KB
下载 相关 举报
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第1页
第1页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第2页
第2页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第3页
第3页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第4页
第4页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第5页
第5页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第6页
第6页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第7页
第7页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第8页
第8页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第9页
第9页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第10页
第10页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第11页
第11页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第12页
第12页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第13页
第13页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第14页
第14页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第15页
第15页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第16页
第16页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第17页
第17页 / 共18页
DG9RMAN全备和增量备shell脚本+windows下脚本.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DG9RMAN全备和增量备shell脚本+windows下脚本.docx

《DG9RMAN全备和增量备shell脚本+windows下脚本.docx》由会员分享,可在线阅读,更多相关《DG9RMAN全备和增量备shell脚本+windows下脚本.docx(18页珍藏版)》请在冰点文库上搜索。

DG9RMAN全备和增量备shell脚本+windows下脚本.docx

DG9RMAN全备和增量备shell脚本+windows下脚本

一. 一些准备知识

 

使用RMAN 备份分catalog 和nocatalog,就是是否使用恢复目录,如果不使用恢复目录,那么就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。

因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的。

 如果使用catalog模式,就需要句需要创建catalog目录。

 当库比较多时,使用catalog也是比较方便的。

 具体参考:

  RMAN Catalog 和 Nocatalog 的区别

 

RMAN的备份也分两种,一种是全备,另一种增量备份。

 全备适用与数据库比较小的情况,如果库大的话就需要使用增量备份了,因为这样能减少备份的时间。

 Window 下的备份脚本,参考Blog:

Windows下RMAN备份脚本

 

关于控制文件对于RMAN的重要性,可以参考下面blog中的第四节:

RMAN 系列

(一)---- RMAN 体系结构概述

 

修改控制文件的保存时间,从默认的7天改成14天

  SQL> show parameter control

 SQL> alter system set control_file_record_keep_time=14 scope=both; 

 

开启控制文件的自动备份,开启之后在数据库备份或者数据文件(比如添加数据文件)有修改的时候都会自动备份控制文件和spfile文件。

Configure controlfile autobackup on;

 

 

当数据库兼容性设置为大于等于10.0.0时,尽管在没有0级备份情况做1级的增量备份实际上是一个全备,但是这个全备也是1级的,不能用作1级积累增量备份的基础备份,这个是在设计备份策略的时候要注意的问题。

 

 

二. 全备脚本

 

以 nocatalog 模式为例:

Shell 脚本:

 

########################################################################

##   hot_database_backup.sh      ##

##   created by Tianlesoftware   ##

##        2010-7-16                 ##

#########################################################################

#!

/bin/sh 

# --------------------------------------------------------------------------- 

# Determine the user which is executing this script. 

# --------------------------------------------------------------------------- 

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1` 

 

# --------------------------------------------------------------------------- 

# Put output in .out. Change as desired. 

# Note:

 output directory requires write permission. 

# --------------------------------------------------------------------------- 

RMAN_LOG_FILE=${0}.out 

# --------------------------------------------------------------------------- 

# You may want to delete the output file so that backup information does 

# not accumulate.  If not, delete the following lines. 

# --------------------------------------------------------------------------- 

if [ -f "$RMAN_LOG_FILE" ] 

then 

rm -f "$RMAN_LOG_FILE" 

fi 

# ----------------------------------------------------------------- 

# Initialize the log file. 

# ----------------------------------------------------------------- 

echo >> $RMAN_LOG_FILE 

chmod 666 $RMAN_LOG_FILE 

# --------------------------------------------------------------------------- 

# Log the start of this script. 

# --------------------------------------------------------------------------- 

echo Script $0 >> $RMAN_LOG_FILE 

echo ==== started on `date` ==== >> $RMAN_LOG_FILE 

echo >> $RMAN_LOG_FILE 

# --------------------------------------------------------------------------- 

# Oracle home path. 

# --------------------------------------------------------------------------- 

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 

export ORACLE_HOME 

# --------------------------------------------------------------------------- 

# the Oracle SID of the target database. 

# --------------------------------------------------------------------------- 

ORACLE_SID=orcl 

export ORACLE_SID 

# --------------------------------------------------------------------------- 

# The Oracle DBA user id (account). 

# --------------------------------------------------------------------------- 

ORACLE_USER=oracle 

export ORACLE_USER 

# --------------------------------------------------------------------------- 

# Set the Oracle Recovery Manager name. 

# --------------------------------------------------------------------------- 

RMAN=$ORACLE_HOME/bin/rman 

# --------------------------------------------------------------------------- 

# Print out the value of the variables set by this script. 

# --------------------------------------------------------------------------- 

echo >> $RMAN_LOG_FILE 

echo   "RMAN:

 $RMAN" >> $RMAN_LOG_FILE 

echo   "ORACLE_SID:

 $ORACLE_SID" >> $RMAN_LOG_FILE 

echo   "ORACLE_USER:

 $ORACLE_USER" >> $RMAN_LOG_FILE 

echo   "ORACLE_HOME:

 $ORACLE_HOME" >> $RMAN_LOG_FILE 

# --------------------------------------------------------------------------- 

# Print out the value of the variables set by bphdb. 

# --------------------------------------------------------------------------- 

#echo  >> $RMAN_LOG_FILE 

#echo   "NB_ORA_FULL:

 $NB_ORA_FULL" >> $RMAN_LOG_FILE 

#echo   "NB_ORA_INCR:

 $NB_ORA_INCR" >> $RMAN_LOG_FILE 

#echo   "NB_ORA_CINC:

 $NB_ORA_CINC" >> $RMAN_LOG_FILE 

#echo   "NB_ORA_SERV:

 $NB_ORA_SERV" >> $RMAN_LOG_FILE 

#echo   "NB_ORA_POLICY:

 $NB_ORA_POLICY" >> $RMAN_LOG_FILE 

# --------------------------------------------------------------------------- 

# NOTE:

 This script assumes that the database is properly opened. If desired, 

# this would be the place to verify that. 

# --------------------------------------------------------------------------- 

echo >> $RMAN_LOG_FILE 

# --------------------------------------------------------------------------- 

# --------------------------------------------------------------------------- 

# Call Recovery Manager to initiate the backup. 

# --------------------------------------------------------------------------- 

 

CMD_STR=" 

ORACLE_HOME=$ORACLE_HOME 

export ORACLE_HOME 

ORACLE_SID=$ORACLE_SID 

export ORACLE_SID 

$RMAN nocatalog target sys/admin  msglog $RMAN_LOG_FILE append << EOF 

RUN { 

allocate channel c1 type disk;

allocate channel c2 type disk;

 

BACKUP FORMAT '/u01/backup/orcl_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk; 

 

sql 'alter system archive log current';

 

BACKUP FORMAT '/u01/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT; 

 

backup current controlfile tag='bak_ctlfile' format='/u01/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/u01/backup/ORCL_spfile_%U_%T';

 

release channel c2;

release channel c1;

}

report obsolete; 

delete noprompt obsolete; 

crosscheck backup; 

delete noprompt expired backup;

list backup summary; 

#EOF 

# Initiate the command string 

 

if [ "$CUSER" = "root" ] 

then 

    echo "Root Command String:

 $CMD_STR" >> $RMAN_LOG_FILE     

    su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE 

    RSTAT=$?

 

else 

    echo "User Command String:

 $CMD_STR" >> $RMAN_LOG_FILE     

    /bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE 

    RSTAT=$?

 

fi 

 

# --------------------------------------------------------------------------- 

# Log the completion of this script. 

# --------------------------------------------------------------------------- 

if [ "$RSTAT" = "0" ] 

then 

    LOGMSG="ended successfully" 

else 

    LOGMSG="ended in error" 

fi 

 

echo >> $RMAN_LOG_FILE 

echo Script $0 >> $RMAN_LOG_FILE 

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE 

echo >> $RMAN_LOG_FILE 

/bin/mailx -s "RMAN Backup SID " daimm@sf- < $RMAN_LOG_FILE 

 

exit $RSTAT 

 

 

三. 增量备份

 

以catalog模式为例:

 

在存放catalog的实例上创建catalog 目录:

 

 

1.创建Catalog所需要的表空间

SQL>create tablespace catalog_ts datafile 'D:

/APP/ADMINISTRATOR/ORADATA/ORCL/catalog_ts1.dbf'  size 20M;

 

2.创建RMAN用户并授权

SQL>create user catalog identified by catalog default tablespace catalog_ts;

SQL>grant recovery_catalog_owner to catalog; 

 

查看角色所拥有的权限:

 

select * from dba_sys_privs where grantee='RECOVERY_CATALOG_OWNER';

 

3.创建恢复目录

[oracle@db1 scripts]$ rman target / catalog catalog/catalog@catalog1;

Recovery Manager:

 Release 10.2.0.1.0 - Production on Thu Jul 15 12:

03:

16 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database:

 ORCL (DBID=1248423599)

connected to recovery catalog database

RMAN> create catalog tablespace catalog_ts;

recovery catalog created

如果此处报错:

ORACLE error from recovery catalog database:

 ORA-00955:

 name is already used by an existing object

可以用命令删除catalog,在创建:

RMAN> drop catalog;

recovery catalog owner is CATALOG

enter DROP CATALOG command again to confirm catalog removal

RMAN> drop catalog

recovery catalog dropped

RMAN> register database;

database registered in recovery catalog

starting full resync of recovery catalog

full resync complete

RMAN>

 

 

 

差异备份有3个级别:

 

0级:

相当于全备,不同的是0级可用于增量备份,全备不行。

1级:

备份自上次0级备份以来的数据

2级:

备份自上次备份以来的数据

 

脚本的增量备份策略:

 周日0级备份,周四1级备份,其他2级备份

 

 

 

Shell 脚本:

########################################################################

##   incremental_hot_database_backup.sh      ##

##   created by Tianlesoftware            ##

##        2010-7-16                          ##

#########################################################################

#!

/bin/ksh 

export LANG=en_US

BACKUP_DATE=`date +%d`

RMAN_LOG_FILE=${0}.out

TODAY=`date`

USER=`id|cut -d "(" -f2|cut -d ")" -f1`

echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE

ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

export ORACLE_HOME

RMAN=$ORACLE_HOME/bin/rman

export RMAN

ORACLE_SID=orcl

export ORACLE_SID

ORACLE_USER=oracle

export ORACLE_USER

 

echo "ORACLE_SID:

 $ORACLE_SID">>$RMAN_LOG_FILE

echo "ORACLE_HOME:

$ORACLE_HOME">>$RMAN_LOG_FILE

echo "ORACLE_USER:

$ORACLE_USER">>$RMAN_LOG_FILE

echo "==========================================">>$RMAN_LOG_FILE

echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE

echo "                   ">>$RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

 

WEEK_DAILY=`date +%a`

 

case  "$WEEK_DAILY" in

       "Mon")

            BAK_LEVEL=2

            ;;

       "Tue")

            BAK_LEVEL=2

            ;;

       "Wed")

            BAK_LEVEL=2

            ;;

       "Thu")

            BAK_LEVEL=1

            ;;

       "Fri")

            BAK_LEVEL=2

            ;;

       "Sat")

            BAK_LEVEL=2

            ;;

       "Sun")

            BAK_LEVEL=0

            ;;

       "*")

            BAK_LEVEL=error

esac

export BAK_LEVEL=$BAK

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2