作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、
高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem\_db
QQ交流群:587159446
公众号:IT邦德
文章目录
前言
今天这里小编大家介绍一下无备份,控制文件丢失,如何恢复Oracle RAC.
1.重建控制文件文本
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '+data/rac/redo01.log' SIZE 50M,
GROUP 2 '+data/rac/redo02.log' SIZE 50M,
GROUP 3 '+data/rac/redo03.log' SIZE 50M,
GROUP 4 '+data/rac/redo04.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'+data/rac/system01.dbf',
'+data/rac/undotbs01.dbf',
'+data/rac/sysaux01.dbf',
'+data/rac/undotbs02.dbf',
'+data/rac/users01.dbf'
CHARACTER SET UTF8
RECOVER DATABASE
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '+data/rac/temp01.dbf'
SIZE 167772160 REUSE AUTOEXTEND OFF;
RECOVER DATABASE
ALTER DATABASE OPEN;
2.启动单节点
确保在实例1到nomount阶段,并保证在实例1执行
startup nomount
alter system set cluster_database=false scope=spfile;
shutdown
3.重建控制文件
sqlplus / as sysdba
SQL> @create_control.sql
这一步一定记住要备份数据文件和当前的在线日志
4.启动数据库
--修改参数,将单节点变为集群
SQL> alter system set cluster_database=true scope=spfile;
SQL> shutdown immediate
--重新启动集群
$ srvctl start database -d orcl
$ srvctl status database -d orcl
5.备份控制文件
alter database backup controlfile to trace noresetlogs;
6.开归档备份数据库
1.创建目录
[oracle@OEL7 ~]$ mkdir -p /u01/dbbak/script
[oracle@OEL7 ~]$ cd /u01/dbbak
[oracle@OEL7 ~]$ chown -R oracle:oinstall script
[oracle@OEL7 ~]$ mkdir -p /u01/dbbak/db
[oracle@OEL7 ~]$ mkdir -p /u01/dbbak/arch
[oracle@OEL7 ~]$ cd /u01/dbbak
[oracle@OEL7 ~]$ chown -R oracle:oinstall db
[oracle@OEL7 ~]$ chown -R oracle:oinstall arch
2.编辑脚本
[oracle@OEL7 ~]$ vi /u01/dbbak/script/rman_full.sh
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=prod
dt=`date '+%Y%m%d_%H%M%S'`
/u01/app/oracle/product/19.3.0/dbhome_1/bin/rman target / cmdfile=/u01/dbbak/script/backup.sh log=/u01/dbbak/log/log_$dt.log append
[oracle@OEL7 ~]$ vi /u01/dbbak/script/backup.sh
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset database format '/u01/dbbak/db/DB%U.bkp' plus archivelog format '/u01/dbbak/arch/ARCH%U.bkp' delete all input;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
report obsolete;
crosscheck copy;
crosscheck archivelog all;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
}
quit;
EOF
3.脚本授权
[oracle@OEL7 ~]$ chmod 775 /u01/dbbak/script/backup.sh
[oracle@OEL7 ~]$ chmod 775 /u01/dbbak/script/rman_full.sh
4.定时任务
crontab -e 为编辑窗口
[oracle@OEL7 ~]$ crontab -l
0 2 * * * /u01/dbbak/script/rman_full.sh
5.备份策略
[oracle@OEL7 ~]$ rman target /
RMAN> show all;
--备份策略调整,备份保留7天
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




