资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954
全部博文(163)
分类: Oracle
2015-01-07 16:59:47
1. 备份配置规范
l 操作系统字符集 配置为 ZHS16GBK
l 备份远程挂接目录 配置为/back/rmanbackup
l NFS 挂接采用异同步方式
2. 备份脚本执行流程
3. 相关备份脚本目录(脚本信息应该放在双机热备NFS客户端服务器上)
l 脚本总目录为/bossdata/backupScripts
l 全备份脚本/bossdata/backupScripts/backup.rman
l 日志备份脚本/bossdata/backupScripts/backup_arch.rman
l 全备份启动脚本/bossdata/backupScripts/bossdb_backup.sh
l 日志备份启动脚本/bossdata/backupScripts/bossdb_backup_arch.sh
4. 备份文件存储位置列表(在备份服务器上)
l 数据文件和控制文件备份存储位置 /back/rmanbackup/bossdb*
l 日志文件备份存储位置 /back/rmanbackup/bossdblog*
5. 执行计划和配置策略
l 每月2日~月底最后一天凌晨00:30分别进行数据库联机物理全备份
l 小时单位中在15分和45分,即每间隔30分钟备份归档日志
l 月末夜间到次月1日凌晨出帐不做数据库备份,日志文件保留3天
l 任何时候最少保留三份备份集
l 启动控制文件和参数文件的自动备份
6. 备份监控
l 通过日志文件/back/rmanbackup/archive_log.rman查看备份情况;
l 监控备份服务器/back/rmanbackup分区的磁盘空间情况,如果空间使用率超过70%,请考虑增加磁盘空间
l /bossdata/arch_log存放的是数据库的归档日志,需要监控其空间使用情况(由于备份服务器上空间有限,归档日志存放在双机热备的共享盘阵上)
7. 备份部署
7.1. 备份服务器分区挂载
数据库主机操作系统为solaris,备份服务器操作系统为linux,使用如下方法将linux分区挂载到solaris下
? 在备份服务器上建立分区/back/rmanbackup,空间要求至少为生产库所有数据文件大小的5倍
(备份策略为保存2份完整备份集的前提下).
? 修改备份服务器/etc/exports,增加共享目录
/back/rmanbackup 192.168.1.205(rw,async,no_root_squash)
/back/rmanbackup 192.168.1.215(rw,async,no_root_squash)
其中IP地址分别为双机中两台机器的IP地址
? 启动与停止备份服务器的nfs服务
/etc/rc.d/init.d/portmap start (在redhat中portmap是默认启动的)
/etc/rc.d/init.d/nfs start 启动
/etc/rc.d/init.d/nfs stop 停止
注:修改/etc/exports文件增加新的共享之后应先停止NFS服务,再启动NFS服务方能是新增加的共享起作用。使用命令exportfs -rv 也可以达到同样的效果。
? 设置备份服务器的nfs服务开机自启动
# chkconfig --list|grep nfs ——查看nfs自启动状态
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
# chkconfig nfs on ——设置nfs服务的开机自启动
# chkconfig --list|grep nfs ——查看nfs自启动状态
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
# chkconfig --list|grep portmap——查看portmap自启动状态
portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
# chkconfig portmap on ——设置portmap开机自启动
# chkconfig --list|grep portmap——查看portmap自启动状态
portmap 0:off 1:off 2:on 3:on 4:on 5:on 6:off
? 在两台主应用服务器建立目录/rmanbackup
? 在两台主应用服务器挂载备份目录
mount -o vers=3,bg,hard,nointr,rsize=32768,wsize=32768,timeo=600,actimeo=0 192.168.1.225:/back/rmanbackup /rmanbackup
其中IP地址为备份服务器的IP地址
8. 修改数据库为归档模式
如果数据库为非归档模式,需要将数据库修改为归档模式。
? 查看数据库是否处于归档模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /bossdata/archData
Oldest online log sequence 20208
Next log sequence to archive 20210
Current log sequence 20210
? 设置归档日志存放位置(如果你想的话)
SQL> alter system set log_archive_dest_1='location=/star_db/arch_log’;(红色路径随意)
如果数据库启动在双机上,将$ORACLE_HOME/dbs/spfilestarsms.ora文件拷贝到另外一台
主机的相同的位置下
? 停止数据库
如果数据库是启动在双机上,请使用集群停止数据库,并手工挂载磁盘阵列到一台主机上。
可以用菜单停止oracle-app任务,不需要手工挂载磁盘阵列,然后就启动数据库到mount状态按要求执行命令。
如果是单机,直接执行
SQL>shutdown immediate;
? 启动数据库到mount状态
SQL>startup mount;
? 修改数据库为归档模式
SQL> alter database archivelog;
如果是oracle10g之前版本,需再执行
SQL> alter system set log_archive_start=true scope=spfile;
? 确认数据库已修改为归档模式
SQL> archive log list;
? 启动数据库
如果数据库运行在双机上,执行
SQL>shutdown immediate;
停止数据库,并使用集群软件正常启动数据库。
如果数据库运行在单机上,执行
SQL>alter database open;
直接打开数据库即可。
? 验证归档是否正常,执行
SQL> alter system switch logfile;
并到归档日志存放位置(/bossdata/archData/)下查看是否有归档文件产生。
9. 备份策略配置
以ORACLE用户执行以下命令以RMAN登录数据库
bash-2.05$rman target /
执行以下命令查看当前备份策略,同时判断备份策略是否已经调整正确。
RMAN>show all;
? 修改备份文件保持策略配置
RMAN>CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
表示任何时候最少保留一份备份集。
? 控制文件自动备份配置
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
表示开启自动备份控制文件和参数文件。
10.部署备份脚本
? 部署脚本bossdb_backup.sh、bossdb_backup_arch.sh、backup_arch.rman和backup.rman到/bossdata/backupScripts/目录,并赋予可执行权限
? 以ORACLE用户执行脚本bossdb_backup.sh,查看输出日志和/rmanbackup目录,测
试备份是否成功。如果成功,会在备份目录下生成类似bossdbSTARSMS04nctsv6_1_1.dbf.20120607的文件和lkSTARSMS、orapwstarsms两个目录。
? 以ORACLE用户执行归档日志备份脚本bossdb_backup_arch.sh,查看输出日志和
/rmanbackup目录,测试备份是否成功
? 增加ORALCE用户的crontab,定时自动执行备份脚本
命令栏输入crontab -e oracle
--物理全备份,出账日不需要全备份
30 00 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31**
/star_db/backup/bossdb_backup.sh >> /star_db/backup/log.rman
--每隔30分钟归档日志备份
15,45****/star_db/backup/bossdb_backup_arch.sh>>/star_db/backup/archive_log.rman
11.脚本内容
文件:backup.rman
report obsolete;
delete noprompt obsolete;
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
allocate channel d5 type disk;
backup filesperset 20 database tag gsbossdb include current controlfile format '/rmanbackup/bossdb%d%U.dbf.%T';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup filesperset 200 format '/rmanbackup/bossdblog_t%t_s%s_p%p' archivelog all;
backup current controlfile format '/rmanbackup/controlfile%d%U.dbf.%T';
release channel d1;
release channel d2;
release channel d3;
release channel d4;
release channel d5;
}
delete archivelog until time 'sysdate-3';
quit
文件:backup_arch.rman
run{
#crosscheck backup;
Crosscheck archivelog all;
delete noprompt archivelog until time 'SYSDATE-3';
allocate channel d1 type disk;
sql 'alter system archive log current';
sql 'alter system archive log current';
backup filesperset 20 format '/rmanbackup/archlog_t%t_s%s_p%p' archivelog all delete input;
backup current controlfile format '/rmanbackup/controlfile%d%U.dbf.%T';
release channel d1;
}
quit
文件:bossdb_backup.sh
#!/bin/bash
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/gs/product/11.2.0/dbhome_1
export ORACLE_SID=stardb
export ORACLE_TERM=sun5
#NLS_LANG='SIMPLIFIED CHINESE_CHINA'.ZHS16GBK .......
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=zh_CN
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/rdbms/demo:/usr/lib:/usr/openwin/lib:/usr/dt/lib
export PATH=/opt/oracle/gs/product/11.2.0/dbhome_1/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin
/bin:$ORACLE_HOME/bin:$PATH
echo "Single Backup Beginning time:" `date +'%Y-%m-%d %H:%M'`
#env
/opt/oracle/gs/product/11.2.0/dbhome_1/bin/rman target / nocatalog
@/bossdata/backupScripts/backup.rman
cp $ORACLE_HOME/dbs/lkSTARDB* /rmanbackup
cp $ORACLE_HOME/dbs/orapwstardb /rmanbackup
echo "Single Backup End time:" `date +'%Y-%m-%d %H:%M'`
文件bossdb_backup_arch.sh
#!/bin/bash
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/gs/product/11.2.0/dbhome_1
export ORACLE_SID=stardb
export ORACLE_TERM=sun5
#NLS_LANG='SIMPLIFIED CHINESE_CHINA'.ZHS16GBK .......
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=zh_CN
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/rdbms/demo:/usr/lib:/usr/openwin/lib:/usr/dt/lib
export PATH=/opt/oracle/gs/product/11.2.0/dbhome_1/bin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin
echo "Archive Backup Beginning time:" `date +'%Y-%m-%d %H:%M'`
#env
/opt/ora10/product/10.2.0/bin/rman target / nocatalog
@/opt/ora10/product/10.2.0/backup_arch.rman
#cp $ORACLE_HOME/dbs/lkSTARSMS* /rmanbackup/
#cp $ORACLE_HOME/dbs/orapwstarsms /rmanbackup/
echo "Archive Backup End time:" `date +'%Y-%m-%d %H:%M'`