Oracle Study之--Oracle RAC重建控制檔案
系統內容:
作業系統: AIX5.3
Cluster: Oracle 10gR2 CRS
Oracle: Oracle 10gR2
在RAC環境下重建控制檔案和在單一實例上類似,只是有些步驟需要注意:
[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
[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)
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
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,然後重建
重建立立控制檔案:
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
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
SQL> alter system set cluster_database =true scope=spfile;
System altered.
啟動所有Instance,如果所有instance啟動成功,則controlfile重建成功。