概述
- 创建 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
最后
以上就是糊涂小海豚为你收集整理的在 centos6.5 中对 oracle 使用 rman 脚本进行备份(catalog 方式)的全部内容,希望文章能够帮你解决在 centos6.5 中对 oracle 使用 rman 脚本进行备份(catalog 方式)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复