oracle rac重建控制文件

时间:2023-03-10 00:29:39
oracle rac重建控制文件

1.使用sqlplus连接到已经mount或open的rac数据库

sql> alter database backup controlfile to trace noresetlogs;

2.找出对应的trace文件
3.编写脚本control.sql

startup nomount
create controlfile reuse database "orcl" noresetlogs noarchivelog
maxlogfiles 192
maxlogmembers 3
maxdatafiles 1024
maxinstances 32
maxloghistory 292
logfile
group 1 '/ocfs01/rac/redo01.log' size 50m,
group 2 '/ocfs01/rac/redo02.log' size 50m,
group 3 '/ocfs01/rac/redo03.log' size 50m,
group 4 '/ocfs01/rac/redo04.log' size 50m
-- standby logfile
datafile
'/ocfs01/rac/system01.dbf',
'/ocfs01/rac/undotbs01.dbf',
'/ocfs01/rac/sysaux01.dbf',
'/ocfs01/rac/undotbs02.dbf',
'/ocfs01/rac/users01.dbf'
character set we8iso8859p1
recover database
alter database open;
alter tablespace temp add tempfile '/ocfs01/rac/temp01.dbf'
size 167772160 reuse autoextend off; recover database
alter database open;
alter tablespace temp add tempfile '/ocfs01/rac/temp01.dbf'
size 524288000 reuse autoextend on next 655360 maxsize 32767m; -- the next step is optional if gv$thread does not show all the threads:
-- alter database enable public thread 2;
-- repeat for other threads if applicable

4.关闭数据库所有实例

$ srvctl stop database -d orcl -o immediate

5.备份当前的控制文件

6.确保实例设置都是针对thread 1

instance = 1
thread = 1

7.将参数文件中的cluster_database设置为false
如果是使用spfile:

sql> startup nomount
sql> alter system set cluster_database=false scope=spfile;
sql> shutdown

8.运行脚本创建新的控制文件

sqlplus / as sysdba
SQL> @control.sql

9.将参数cluster_database设置为true

sql> alter system set cluster_database=true scope=spfile;

10.关闭数据库

sql> shutdown immediate

11.启动所有实例

$ srvctl start database -d orcl
$ srvctl status database -d orcl

12.备份数据库