本文共 8156 字,大约阅读时间需要 27 分钟。
系统环境:
操作系统: AIX5.3
Cluster: Oracle 10gR2 CRS
Oracle: Oracle 10gR2
在RAC环境下重建控制文件和在单实例上类似,只是有些步骤需要注意:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [oracle@aix211 ~]$cat mkln.sh ln -s /dev/rsystem /u01/app/oracle/oradata/prod/system01.dbf ln -s /dev/rsysaux /u01/app/oracle/oradata/prod/sysaux01.dbf ln -s /dev/rusers /u01/app/oracle/oradata/prod/users01.dbf ln -s /dev/rundotbs1 /u01/app/oracle/oradata/prod/undotbs01.dbf ln -s /dev/rundotbs2 /u01/app/oracle/oradata/prod/undotbs02.dbf ln -s /dev/rtemp /u01/app/oracle/oradata/prod/temp01.dbf ln -s /dev/rcontrol1_1 /u01/app/oracle/oradata/prod/control01.ctl ln -s /dev/rcontrol2_2 /u01/app/oracle/oradata/prod/control02.ctl ln -s /dev/rcontrol3_3 /u01/app/oracle/oradata/prod/control03.ctl ln -s /dev/rredo1_1 /u01/app/oracle/oradata/prod/log11.log ln -s /dev/rredo1_2 /u01/app/oracle/oradata/prod/log12.log ln -s /dev/rredo2_1 /u01/app/oracle/oradata/prod/log21.log ln -s /dev/rredo2_2 /u01/app/oracle/oradata/prod/log22.log ln -s /dev/rindex /u01/app/oracle/oradata/prod/index01.dbf ln -s /dev/rspfile /u01/app/oracle/oradata/prod/spfile01 ln -s /dev/rexample /u01/app/oracle/oradata/prod/example01.dbf |
Database存储在在RAW上。
1、首先在一个节点备份controlfile
1 2 3 4 5 6 7 8 9 10 11 12 13 | [oracle@aix201 ~]$sqlplus '/as sysdba' SQL*Plus: Release 10.2. 0.1. 0 - Production on Mon Mar 23 16 : 16 : 07 2015 Copyright (c) 1982 , 2005 , Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2. 0.1. 0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP and Data Mining options SQL> select status from v$instance; STATUS ------------ OPEN SQL> alter database backup controlfile to trace; Database altered. |
2、查看控制文件的trace备份(udump)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS NOARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/prod/log11.log' SIZE 50M, GROUP 2 '/u01/app/oracle/oradata/prod/log12.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/prod/log21.log' SIZE 50M, GROUP 4 '/u01/app/oracle/oradata/prod/log22.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' , '/u01/app/oracle/oradata/prod/undotbs01.dbf' , '/u01/app/oracle/oradata/prod/sysaux01.dbf' , '/u01/app/oracle/oradata/prod/users01.dbf' , '/u01/app/oracle/oradata/prod/example01.dbf' , '/u01/app/oracle/oradata/prod/undotbs02.dbf' CHARACTER SET ZHS16GBK ; |
3、关闭database,启动其中一个instance到弄mount
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | SQL> startup nomount; ORACLE instance started. Total System Global Area 612368384 bytes Fixed Size 2022832 bytes Variable Size 184549968 bytes Database Buffers 423624704 bytes Redo Buffers 2170880 bytes SQL> @/home/oracle/cr_ctr.sql CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS NOARCHIVELOG * ERROR at line 1 : ORA -01503 : CREATE CONTROLFILE failed ORA -12720 : operation requires database is in EXCLUSIVE mode SQL> show parameter cluster NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cluster_database boolean TRUE cluster_database_instances integer 2 cluster_interconnects string ---创建失败,原因是在RAC下控制文件时处于共享(share)模式,需启动到独立( exclusive )模式,才能重建;修改cluster_database 为 false ,然后重建 |
重新建立控制文件:
1 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | SQL> alter system set cluster_database = false scope=spfile; System altered. SQL> startup nomount ORACLE instance started. Total System Global Area 612368384 bytes Fixed Size 2022832 bytes Variable Size 184549968 bytes Database Buffers 423624704 bytes Redo Buffers 2170880 bytes SQL> show parameter cluster NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cluster_database boolean FALSE cluster_database_instances integer 1 cluster_interconnects string SQL> @/home/oracle/cr_ctr.sql Control file created. 告警日志: alter.log: Mon Mar 23 16 : 41 : 00 2015 CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS NOARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/prod/log11.log' SIZE 50M, GROUP 2 '/u01/app/oracle/oradata/prod/log12.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/prod/log21.log' SIZE 50M, GROUP 4 '/u01/app/oracle/oradata/prod/log22.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' , '/u01/app/oracle/oradata/prod/undotbs01.dbf' , '/u01/app/oracle/oradata/prod/sysaux01.dbf' , '/u01/app/oracle/oradata/prod/users01.dbf' , '/u01/app/oracle/oradata/prod/example01.dbf' , '/u01/app/oracle/oradata/prod/undotbs02.dbf' CHARACTER SET ZHS16GBK Mon Mar 23 16 : 41 : 00 2015 WARNING: Default Temporary Tablespace not specified in CREATE DATABASE command Default Temporary Tablespace will be necessary for a locally managed database in future release WARNING: You are creating/reusing datafile /u01/app/oracle/oradata/prod/control01.ctl. WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details. WARNING: You are creating/reusing datafile /u01/app/oracle/oradata/prod/control01.ctl. WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details. WARNING: You are creating/reusing datafile /u01/app/oracle/oradata/prod/control02.ctl. WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details. WARNING: You are creating/reusing datafile /u01/app/oracle/oradata/prod/control02.ctl. WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details. Setting recovery target incarnation to 1 Mon Mar 23 16 : 41 : 05 2015 Successful mount of redo thread 1 , with mount id 286981148 Mon Mar 23 16 : 41 : 05 2015 Completed: CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS NOARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/prod/log11.log' SIZE 50M, GROUP 2 '/u01/app/oracle/oradata/prod/log12.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/prod/log21.log' SIZE 50M, GROUP 4 '/u01/app/oracle/oradata/prod/log22.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' , '/u01/app/oracle/oradata/prod/undotbs01.dbf' , '/u01/app/oracle/oradata/prod/sysaux01.dbf' , '/u01/app/oracle/oradata/prod/users01.dbf' , '/u01/app/oracle/oradata/prod/example01.dbf' , '/u01/app/oracle/oradata/prod/undotbs02.dbf' CHARACTER SET ZHS16GBK |
4、重建成功,启动到open
1 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 | SQL> select status from v$instance; STATUS ------------ MOUNTED SQL> alter database open; Database altered. 添加临时表空间数据文件: SQL> select name from v$tempfile; no rows selected SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME ------------------------------ SYSTEM UNDOTBS1 SYSAUX TEMP USERS UNDOTBS2 EXAMPLE 7 rows selected. SQL> alter tablespace temp add 2 tempfile '/u01/app/oracle/oradata/prod/temp01.dbf' size 100m reuse; Tablespace altered. SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/prod/temp01.dbf |
5、修改cluster_database参数,启动所有instance
1 2 | SQL> alter system set cluster_database = true scope=spfile; System altered. |
启动所有Instance,如果所有instance启动成功,则controlfile重建成功。