设为首页收藏本站

Bo's Oracle Station

续【脚本共享2015】用PXE方法从裸机批量推Oracle 11gR2 RAC成套环境,并用Shell脚本在推出的RAC节点上批量部署32个Oracle 11gR2 RAC备份恢复案例场景的方法

2015-5-10 22:25| 发布者: admin| 查看: 22404| 评论: 0

摘要: 本文前半段介绍:用PXE推送端主机,把原先处于裸机状态的三台一套 PXE被推送端主机批量推成Oracle 11gR2 RAC环境的方法。在每套推出的Oracle 11gR2 RAC环境中,都包含已自动安装并配置好的三台主机:一台共享磁盘主机和两台节点主机。每套推出的Oracle 11gR2 RAC环境中的两台节点主机都已自动挂接上该套环境内部的共享磁盘主机。两台节点主机各配备一个分布式虚拟磁带库,并且做好所有操作系统层面的配置:包括vip、scan-vip、ntp,各种rpm包和操作系统参数等。


8.3 6b_基于cancel的不完全恢复


PXE推送端主机上运行:

[root@server1 ~]# bcl --RACGRID11g13 6b

bcl --RACGRID11g13 6b”之后会自动运行的 “begin-real-post”脚本内容(其他场景无本项):

#!/bin/sh


rm -f /root/tmp/bclcustom.sh

for i in `ls /root/tmp/bclresult*`

do

v_botang_thread=$( grep -A 2 INSTANCE_NUMBER $i | tail -n 1 | tr -d '[:blank:]')

v_botang_currlog=$( grep 'Current log sequence' $i | tail -n 1 | cut -c 29- )

v_botang_currlogplus1=$[ $v_botang_currlog + 1 ]

v_botang_oldestlog=$( grep 'Oldest online log sequence' $i | tail -n 1 | cut -c 29- )

v_botang_oldestlogbefore=$( grep 'Oldest online log sequence' $i | head -n 1 | cut -c 29- )

v_botang_nextlog=$( grep 'Next log sequence to archive' $i | tail -n 1 | cut -c 29- )

v_botang_nextlogbefore=$( grep 'Next log sequence to archive' $i | head -n 1 | cut -c 29- )

v_botang_currlogdest=$( grep 'Archive destination' $i | tail -n 1 | cut -c 29- )

v_botang_ip=$(echo $i | cut -f 2 -d - )

perl -i -pe "s,Oldest online log sequence $v_botang_oldestlog,Oldest online log sequence XXX," $i

perl -i -pe "s,Oldest online log sequence $v_botang_oldestlogbefore,Oldest online log sequence AAA," $i

perl -i -pe "s,Next log sequence to archive$v_botang_nextlog,Next log sequence to archive YYY," $i

perl -i -pe "s,Next log sequence to archive$v_botang_nextlogbefore,Next log sequence to archive BBB," $i

grep -v 'Current log sequence' $i > $i.tmp

rm -f $i

mv $i.tmp $i

cat > /root/tmp/rac.sh <

if [ -f /u01/app/11.2.0/grid/dbs/hc_+ASM1.dat ]

then

su - grid -c "export ORACLE_SID=+ASM1;export ORACLE_HOME=/u01/app/11.2.0/grid;asmcmd"< /home/oracle/asm

find / thread_${v_botang_thread}_seq_${v_botang_currlogplus1}.*

exit

EOF

sleep 15

grep -i '+FRA' /home/oracle/asm | sort -n -k 3 -t . > /home/oracle/asm.tmp

mv /home/oracle/asm.tmp /home/oracle/asm

v_path1=\$(cut -f 2 -d '+' /home/oracle/asm | tail -n 1 | tr -d [:blank:])

v_path2="+"\$v_path1

su - grid -c "export ORACLE_SID=+ASM1;export ORACLE_HOME=/u01/app/11.2.0/grid;asmcmd"<

rm -rf \$v_path2

exit

EOF

fi

EOL

scp -q -o ConnectTimeout=1 -o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 /root/tmp/rac.sh $v_botang_ip:/usr/bin

ssh -q -o ConnectTimeout=1 -o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 $v_botang_ip "chmod +x /usr/bin/rac.sh"

ssh -q -o ConnectTimeout=1 -o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 $v_botang_ip /usr/bin/rac.sh >>$i 2>&1

ssh -q -o ConnectTimeout=1 -o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 $v_botang_ip "rm -rf /usr/bin/rac.sh"

echo "DELETE ARCHIVELOGS SUCCESSFULLY,THE END AGAIN" >> $i

done

场景模拟脚本内容:

. /home/oracle/bclcustom-subprogram

sub_getting 6b 6b_基于cancel的不完全恢复

sub_detecting

sub_creating

sub_shutdowning_normal

sub_destroying "system*"

sub_destroying "undotbs1*"

sub_destroying "undotbs2*"

sub_destroying "sysaux*"

sub_destroying "example*"

sub_destroying "users*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

sub_creating”调用的ctable.sql”内容:

6a_基于log序列号的不完全恢复

恢复要点:

1)归档日志被删除,日志序列号请用asmcmd确认。

2)为了练习cancel语法,本实验在sqlplus进行。

3)启动到mountrman中做一些预备工作:restore那些delete input archivelogrestore database;

4)在sqlplus中恢复:recover database until cancel; alter database open resetlogs;

5srvctl启动其他实例。


8.4 7a_当前控制文件和数据文件完好_日志文件全部损坏_正常关机不完全恢复_数据不丢_不需备份


PXE推送端主机上运行:

[root@server1 ~]# bcl --RACGRID11g13 7a

场景模拟脚本内容:

. /home/oracle/bclcustom-subprogram

sub_getting 7a 7a_当前控制文件和数据文件完好_日志文件全部损坏_正常关机不完全恢复_数据不丢_不需备份

sub_detecting

sub_creating

sub_shutdowning_normal

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

sub_creating”调用的ctable.sql”内容:

1a_users表空间在线损坏

恢复要点:

1)启动到mountsqlplus中恢复:recover database until cancel; alter database open resetlogs;

2srvctl启动其他实例。


8.5 7b_当前控制文件和数据文件完好_日志文件全部损坏_不正常关机不完全恢复


所有被推送端做实验机准备:

由于之前的实验过程中物理删除了一个或多个日志文件,本实验前请务必执行全库备份或者以 oracle用户执行/home/oracle/rever.sh还原实验环境

PXE推送端主机上运行:

[root@server1 ~]# bcl --RACGRID11g13 7b

场景模拟脚本内容:

. /home/oracle/bclcustom-subprogram

sub_getting 7b 7b_当前控制文件和数据文件完好_日志文件全部损坏_不正常关机不完全恢复

sub_detecting

sub_creating

sub_shutdowning_abort

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo 'From then on, catalog your database, but use it or not depends on you when recovering !!!'

echo "THE END"

sub_creating”调用的ctable.sql”内容:

1a_users表空间在线损坏

恢复要点:

1)先按7a做,会失败。失败时会提示在线日志文件current组的sequence号。日志序列号请用asmcmd确认。

2)在rmanrun{}块中恢复:set until sequence 在线日志文件current组的sequence thread x ; restore databaserecover databasealter database open resetlogs;

3srvctl启动其他实例。


8.6 8a_当前控制文件损坏_不完全恢复_用控制文件二进制备份_数据不丢_不需备份


PXE推送端主机上运行:

注意:此编号之后的实验,请准备好catalog。恢复目录存在于一台IP192.168.0.90的主机上,服务名为“rcat.example.com”,监听端口为:“1521”。恢复目录用户名为“u90”,密码为“oracle_4U”。请事先准备好该设备。

[root@server1 ~]# bcl --RACGRID11g13 8a

场景模拟脚本内容:

. /home/oracle/bclcustom-subprogram

sub_getting 8a 8a_当前控制文件损坏_

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

相关阅读

QQ|手机版|Bo's Oracle Station   

GMT+8, 2018-12-26 06:45 , Processed in 0.110013 second(s), 20 queries .