在 centos6.5 中对 oracle 使用 rman 脚本进行备份(catalog 方式)

  • 创建 rman 表空间
SQL> create tablespace rman
   2 logging datafile '/u01/app/oracle/oradata/rman.dbf' size 1024M
   3 extent management local segment space management auto;

# 上面的 '/u01/app/oracle' 是你安装 oracle 时选择的路径,即 ORACLE_BASE。
# 不清楚的话可以使用 `env | grep oracle` 命令查看
  • 创建 rman 备份帐号
SQL> create user rman identified by rman default tablespace rman;
SQL> grant connect,resource to rman;
SQL> grant recovery_catalog_owner to rman;
SQL> grant unlimited tablespace to rman;
SQL> grant sysdba to rman;
  • 查看日志是否归档
SQL> archive log list;  

若出现 Automatic archival   Disabled
说明没有开启归档模式,请移步我的另一篇博文:oracle 开启日志归档模式

  • 建立 catalog 数据库
root@oracledb$ rman catalog rman/rman
RMAN> create catalog tablespace "RMAN";
RMAN> exit
  • 注册数据库
root@oracledb$ rman target / catalog rman/rman
RMAN> register database; 
  • 设置保留只 30 天的备份信息
RMAN> configure retention policy to recovery window of 30 days;
  • 启用控制文件自动备份及备份存放位置配置
RMAN> configure controlfile autobackup on;
  • 查看配置信息
RMAN> show all;
  • 创建备份必要目录(必须以 oracle 身份创建!必须以 oracle 身份创建!必须以 oracle 身份创建!
su oracle
cd /u01/app/oracle/
# 上面路径填自己 oracle 的安装路径
mkdir backup
cd backup
mkdir controlfileback 存放备份的控制文件
mkdir dbback  存放备份的数据文件
mkdir log     存放备份生成的日志,坚持该日志查看备份是否成功
mkdir logback 存放归档日志文件
  • 创建备份脚本 dbback.sh(必须以 oracle 身份创建!必须以 oracle 身份创建!必须以 oracle 身份创建!
mkdir script
vim dbback.sh

#!/bin/bash 
#this is rman auto full backup script 
export ORACLE_SID=xe
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_BASE=/u01/app/oracle
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" # 中文系统使用这个
export NLS_LANG="AMERICAN_AMERICA.WE8MSWIN1252" # 英文系统使用这个
backtime=`date +"20%y%m%d%H%M%S"`
cd $ORACLE_HOME/bin
rman target sys/yl123456@xe catalog rman/rman@xe log=$ORACLE_BASE/backup/log/backupall_$backtime.log <<EOF 
run{ 
    allocate channel c1 device type disk; 
    allocate channel c2 device type disk; 
    allocate channel c3 device type disk; 
    crosscheck backup; 
    sql 'alter system archive log current'; 
    backup database format '$ORACLE_BASE/backup/dbback/db_%d_%T_%U'; 
    sql 'alter system archive log current'; 
    backup archivelog all format '$ORACLE_BASE/backup/logback/arc_%t_%s' delete all input;  
    backup current controlfile format '$ORACLE_BASE/backup/controlfileback/cntrl_%s_%p_%s'; 
    crosscheck archivelog all; 
    delete noprompt expired backup; 
    delete noprompt obsolete; 
    delete noprompt backup of database completed before 'sysdate - 30'; 
    release channel c1; 
    release channel c2; 
    release channel c3; 
} 
EOF

  其中 ORACLE_SID、ORACLE_HOME、ORACLE_BASE 都可以在 env 命令中找到
  注意:rman target sys/yl123456@xe catalog rman/rman@xe 里面格式是
rman target 用户名/密码@ORACLE_SID catalog rman/rman@ORACLE_SID。必须要 用户名/密码@ORACLE_SID ,不然会出现错误。至于你在 oracle 设置了什么用户名密码,这个自己百度查吧,不难。
  你可以用 sqlplus 用户名/密码 as sysdba 登录 oracle 试试,能登录进去说明这个用户名密码可用。

  • 修改 dbback.sh 为可执行文件并执行(必须以 oracle 身份创建!必须以 oracle 身份创建!必须以 oracle 身份创建!
chmod u+x dbback.sh
./dbback.sh

执行结束后日志文件放在上面创建的 log 文件夹下,备份文件放在 dback 文件夹下。
如果没有报错,也请到 log 文件夹下查看最新的日志文件,以确保真的没问题。若出现 no start 之类的错误,请试着

sqlplus / as sysdba

SQL> shutdown immediate;
SQL> startup nomount

感谢:
http://blog.51cto.com/wukui127/812761
https://www.cnblogs.com/snake-hand/archive/2011/07/06/2452281.html
http://www.jb51.net/LINUXjishu/420989.html
https://www.cnblogs.com/HDK2016/p/6880560.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值