当前位置:  数据库>oracle

Oracle 11g R2 RAC RMAN备份脚本示例

    来源: 互联网  发布时间:2017-06-21

    本文导语: 一、将RAC切换成归档模式 1. 修改数据库的归档模式,通常在安装RAC的时候都会配置归档并且使用闪回区,已经配置过归档下面的方式可以略过。 SQL> alter system set cluster_database=false scope=spfile sid='*'; 2. 关闭所有实例(两边都要shutdown...

一、将RAC切换成归档模式

1. 修改数据库的归档模式,通常在安装RAC的时候都会配置归档并且使用闪回区,已经配置过归档下面的方式可以略过。

SQL> alter system set cluster_database=false scope=spfile sid='*';

2. 关闭所有实例(两边都要shutdown)

SQL> shutdown immediate

或直接关闭所有实例 
$ srvctl stop database -d orcl

3. 在任意一个实例上将数据库启动到mount状态,修改数据库归档模式

SQL> startup mount; 
SQL> alter database archivelog;   
SQL> alter system set cluster_database=true scope=spfile sid='*';   
SQL> shutdown immediate;

4. 启动所有实例

$ srvctl start database -d orcl

5. 验证归档模式开启

SQL> archive log list;

二、配置NFS共享目录,用于存储RMAN备份数据

1. 配置nfs服务,确保备份目录两边都可以访问,这里测试,使用节点1提供nfs服务。

node1配置:

# cat /etc/exports

#说明节点二同时也挂载节点的RMAN备份目录。 
/data/rman_bak      db2(rw,no_root_squash)

2. node2配置,节点2做为nfs客户端挂载,两目录保持一致。

# 手动挂载 
# mount -t nfs db1:/data/rman_bak /data/rman_bak

# 配置开机自动挂载 
# cat /etc/fstab   
db1:/data/rman_bak    /data/rman_bak  nfs  defaults 0 0

 


三、Oracle 11g RAC数据库参数修改

1. 修改控制文件的保存备份时间

说明:默认7天,根据情况修改。

SQL> show parameter control; 
SQL> alter system set control_file_record_keep_time=40 scope=both;

 


2. RMAN 配置参数

开启控制文件的自动备份,开启之后在数据库备份或者数据文件(比如添加数据文件)有修改的时候都会自动备份控制文件和spfile文件。 
RMAN> configure controlfile autobackup on;   
RMAN> configure retention policy to recovery window of 30 days;

3. 备份策略

确定数据库运行在归档模式,一天一次对数据库做一次备份,可以根据备份服务器上磁盘空间以及自定策略来决定存储备份的时间。 
每周日                      做 Level 0 级备份   
每周一,二,三,四,五,六  做 Level 1 级备份

四、 RMAN备份脚本配置

1. 准备目录

# su – oracle

说明:可以根据实际情况创建相关目录,注意目录权限。 
$ mkdir -p /u01/app/oracle/rman_bak/scripts   
$ mkdir -p /data/rman_bak/data   
$ mkdir -p /data/rman_bak/logs

说明: RAC的备份如果采用ASM的话,备份只在一个节点进行就可以了。也就是说这个备份存储到了其中的一个节点上了,其它节点如果采用NFS的方式也是可以实现恢复的。

2. 创建脚本内容

$ vi /u01/app/oracle/rman_bak/scripts/rman_bak.sh 
$ chmod u+x /u01/app/oracle/rman_bak/scripts/rman_bak.sh

3. 添加计划任务

$ crontab -e 
# RMAN   
00 1 * * 0            /u01/app/oracle/rman_bak/scripts/rman_bak.sh 0   
00 1 * * 1,2,3,4,5,6  /u01/app/oracle/rman_bak/scripts/rman_bak.sh 1

4. 手动测试通道

手动添加db1,db2本地服务名配置,11g rac默认只有scan ip的服务器,本地服务名需要手动添加如下:

# su - oracle 
$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

ORCL = 
  (DESCRIPTION =   
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-cluster)(PORT = 1521))   
    (CONNECT_DATA =   
      (SERVER = DEDICATED)   
      (SERVICE_NAME = orcl)   
    )   
  )

ORCL1 = 
  (DESCRIPTION =   
    (ADDRESS = (PROTOCOL = TCP)(HOST = db1-vip)(PORT = 1521))   
    (CONNECT_DATA =   
      (SERVER = DEDICATED)   
      (SERVICE_NAME = orcl)   
      (INSTANCE_NAME = orcl1)   
    )   
  )

ORCL2 = 
  (DESCRIPTION =   
    (ADDRESS = (PROTOCOL = TCP)(HOST = db2-vip)(PORT = 1521))   
    (CONNECT_DATA =   
      (SERVER = DEDICATED)   
      (SERVICE_NAME = orcl)   
      (INSTANCE_NAME = orcl2)   
    )   
  )

手动测试通道

rman target /

configure channel 1 device type disk connect  'sys/oracle123@orcl1'; 
configure channel 2 device type disk connect  'sys/oracle123@orcl2';

4. 脚本步署方案

$ vi /u01/app/oracle/rman_bak/scripts/rman_bak.sh

#!/bin/bash 
export ORACLE_BASE=/u01/app/oracle   
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1   
export ORACLE_SID=orcl1   
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK   
export PATH=$ORACLE_HOME/bin:$PATH   
LEVEL=$@   
DATE=`date +%w`   
DATE_2=`date +%Y%m%d`   
BACKUP_PATH="/data/rman_bak"   
BIN=$ORACLE_HOME/bin

if [ $# != 1 ]; then 
echo "usage: rman_bak.sh n   
where n is the rman backup level(Only 0,1 is permitted)."   
exit 1   
fi

if [ $@ -ne 0 -a $@ -ne 1 ]; then 
echo "usage: rman_bak.sh n   
where n is the rman backup level(Only 0,1 is permitted)."   
exit 2   
fi

if [[ $LEVEL = 0 ]]; then 
$BIN/rman log $BACKUP_PATH/logs/level.$ORACLE_SID.$LEVEL.$DATE_2.log


    
 
 

您可能感兴趣的文章:

  • oracle while的用法示例分享
  • Oracle 使用Java Source 简单示例
  • ORACLE 毫秒与日期的相互转换示例
  • java使用jdbc链接Oracle示例类分享
  • Oracle数据库安装配置示例
  • java操作oracle数据库示例
  • Oracle数据库安装配置流程示例详细解析
  • oracle表空间中空表统计方法示例介绍
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • Oracle层次查询和with函数的使用示例
  • php连接oracle数据库的示例代码
  • ORACLE实现字段自增示例说明
  • SqlServer实现类似Oracle的before触发器示例
  • oracle截取字符(substr)检索字符位置(instr)示例介绍
  • Oracle外键不加索引引起死锁示例
  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle数据库密码重置、导入导出库命令示例应用
  • 随机获取oracle数据库中的任意一行数据(rownum)示例介绍
  • oracle comment命令用法示例分享
  • linux环境下oracle条件导出数据的shell脚本怎么写
  • Oracle新手教程 手工创建数据库的全部脚本及说明
  • 杀掉oracle在线用户脚本分享
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • linux下oracle的自启动脚本解析
  • 怎么写一个Shell来执行这样的功能,访问Oracle数据库,然后执行一个SQL脚本,生成一个文件。急!
  • oracle使用sql脚本生成csv文件案例学习
  • IT科技资讯 iis7站长之家
  • Linux下Oracle归档日志自动清理脚本代码(sh)
  • 求教:shell 脚本怎么获取ORACLE存储过程的返回值?
  • Oracle 10g在Solaris 10下的自动运行脚本
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何将Aix上的oracle 物理备份 然后再在linux 系统上还原oracle
  • Oracle数据库设置任务计划备份一周的备份记录
  • Oracle数据库备份和恢复工具 RMan
  • oracle10g 数据备份与导入
  • aix下自动备份oracle 的输出日志问题,急!!
  • hp unix下备份oracle表的问题
  • linux小白提问linux备份oracle数据库的问题
  • oracle不能自动备份
  • Oracle数据库逻辑备份的SH文件
  • Linux环境中Oracle数据导入与导出备份操作
  • oracle数据库备份急???????????
  • oracle定时备份压缩的实现步骤
  • Unix系统下如何将oracle数据库备份
  • 详解如何应用改变跟踪技术加速Oracle递增备份
  • Oracle中备份表的简单sql命令语句
  • 实战Oracle数据库备份与恢复
  • Linux下实现自动备份Oracle数据库
  • oracle备份恢复的具体方法
  • 利用windows任务计划实现oracle的定期备份
  • Oracle11g备份和恢复功能的提高
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3