NBU备份恢复脚本
#!/bin/bash ORACLE_HOME=$(su - oracle -c 'echo $ORACLE_HOME') rm -rf $ORACLE_HOME/dbs/arch*dbf su - oracle -c "ln -s /usr/openv/netbackup/bin/libobk.so64 $ORACLE_HOME/lib/libobk.so" su - oracle -c "ln -s /usr/openv/netbackup/bin/libobk.so64 $ORACLE_HOME/lib/libobk.so64" sed -i "/ORACLE_SID/d" /home/oracle/.bash_profile && echo "export ORACLE_SID=$ORACLE_SID" >> /home/oracle/.bash_profile mkdir -p /u01/app/oracle/admin/$ORACLE_SID/adump mkdir -p /u01/app/oracle/$ORACLE_SID chown -R oracle:oinstall /u01/app/oracle/admin/ chown oracle:oinstall /u01/app/oracle/$ORACLE_SID echo "" > /home/oracle/recover.log chown oracle:oinstall /home/oracle/recover.log echo "生成参数文件">> /home/oracle/recover.log rm -rf $ORACLE_HOME/dbs/init$ORACLE_SID.ora rm -rf $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora cat > $ORACLE_HOME/dbs/init$ORACLE_SID.ora << EOF *.audit_file_dest='/u01/app/oracle/admin/$ORACLE_SID/adump' *.audit_trail='NONE' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/$ORACLE_SID/control01.ctl' *.db_block_size=8192 *.db_name='$ORACLE_SID' *.memory_target=0 *.pga_aggregate_target=1g *.sga_target=2g *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace='UNDOTBS1' EOF chown oracle:oinstall $ORACLE_HOME/dbs/init$ORACLE_SID.ora echo "关闭数据库">> /home/oracle/recover.log ps -ef|grep ora_smon|grep -v 'grep'|awk '{print $2}'|xargs kill -9 sleep 8 echo "数据库mount">> /home/oracle/recover.log su - oracle -c "source /home/oracle/.bash_profile; sqlplus / as sysdba << EOF startup nomount EOF" >> /home/oracle/recover.log /usr/openv/netbackup/bin/bplist -C client_db -t 4 -R -l / | grep -a 'cntrl' > /tmp/cntrl ctl_file=$(cat /tmp/cntrl |head -n 1|awk '{print $8}'|sed 's/\///') echo "开始恢复,请等候!!!">> /home/oracle/recover.log su - oracle -c "source /home/oracle/.bash_profile; rman target / log /home/oracle/recover.log append << EOF run { allocate channel t1 DEVICE TYPE 'SBT_TAPE'; SEND 'NB_ORA_SERV=nbumaster,NB_ORA_CLIENT=client_db'; restore controlfile from '$ctl_file'; release channel t1; } sql 'alter database mount'; run{ set until time \"to_date('2023-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')\"; allocate channel t2 DEVICE TYPE 'SBT_TAPE'; allocate channel t3 DEVICE TYPE 'SBT_TAPE'; SEND 'NB_ORA_SERV=nbumaster,NB_ORA_CLIENT=client_db'; restore database; recover database; release channel t2; release channel t3; } EOF" su - oracle -c "source /home/oracle/.bash_profile; sqlplus / as sysdba << EOF alter database set standby to maximize performance; alter database open resetlogs; EOF" >> /home/oracle/recover.log echo "恢复完成,数据库已打开!!!">> /home/oracle/recover.log
#curl --connect-timeout 3 -H "Content-Type: application/json" -X POST --data "{\"mes\":\"$ORACLE_SID备份恢复已完成,请查看!\"}" http://xx.xx.12.96:80/interface/getkeepalivedinfo
变量为:client_db和2023-01-01 00:00:00(恢复时间点),调整为实际的nbu客户端名及恢复时间点
SHELL脚本结合数据库平台实现WEB备份恢复
分类:
Oracle 体系结构与日常管理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY