首页 > Linux操作系统 > Linux操作系统 > 恢复之RAC数据库RECOVER
模拟RAC环境崩溃,在新的服务器上恢复RAC数据库的过程。
这一篇描述数据库的RECOVER过程。
恢复之RAC数据库RESTORE:http://yangtingkun.itpub.net/post/468/470912
下面可以进行恢复,不过在恢复之前首先需要修改日志文件文件的位置,将原始的裸设备的位置修改为ASM磁盘组中的位置。
由于数据库还没有打开,因此无法在rman中直接调用SQL对日志文件进行修改操作,如果直接修改会报错如下:
RMAN> sql "alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo1_1_1_1g' to '+DATA/RAC11G/rac11g_redo1_1_1_1g'";
sql statement: alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo1_1_1_1g' to '+DATA/RAC11G/rac11g_redo1_1_1_1g'
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of sql command on default channel at 09/05/2008 15:50:15
RMAN-10015: error compiling PL/SQL program
下面还是先借助SQLPLUS来修改LOGFILE的位置:
RMAN> host;
$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Fri Sep 5 15:53:29 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo1_1_1_1g' to '+DATA/RAC11G/rac11g_redo1_1_1_1g';
Database altered.
SQL> alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo1_2_1_1g' to '+DATA/RAC11G/rac11g_redo1_2_1_1g';
Database altered.
SQL> alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo2_2_2_1g' to '+DATA/RAC11G/rac11g_redo2_2_2_1g';
Database altered.
SQL> alter database rename file '/dev/vx/rdsk/datavg/rac11g_redo2_2_1_1g' to '+DATA/RAC11G/rac11g_redo2_2_1_1g';
Database altered.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
$ exit
host command complete
RMAN>
下面可以开始恢复过程了:
RMAN> recover database;
Starting recover at 05-SEP-08
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 528 is already on disk as file +DATA/rac11g/rac11g_redo1_2_1_1g
archived log for thread 1 with sequence 529 is already on disk as file +DATA/rac11g/rac11g_redo1_1_1_1g
archived log for thread 2 with sequence 193 is already on disk as file +DATA/rac11g/rac11g_redo2_2_1_1g
archived log for thread 2 with sequence 194 is already on disk as file +DATA/rac11g/rac11g_redo2_2_2_1g
archived log file name=+DATA/rac11g/rac11g_redo1_2_1_1g thread=1 sequence=528
archived log file name=+DATA/rac11g/rac11g_redo2_2_1_1g thread=2 sequence=193
archived log file name=+DATA/rac11g/rac11g_redo1_1_1_1g thread=1 sequence=529
archived log file name=+DATA/rac11g/rac11g_redo2_2_2_1g thread=2 sequence=194
Finished recover at 05-SEP-08
恢复完成后,尝试打开数据库:
RMAN> alter database open resetlogs;
database opened
下面可以退出RMAN用sqlplus来管理数据库,首先是通过本地的PFILE建立一个ASM上面存储的共享SPFILE:
RMAN> exit
Recovery Manager complete.
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Fri Sep 5 16:10:05 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> create spfile='+DATA/RAC11G/spfilerac11g.ora' from pfile='/export/home/oracle/initrac11g1.ora';
File created.
从两个节点分别编辑一个初始化文件,指向ASM中的SPFILE:
vi /data/oracle/product/11.1/database/dbs/initrac11g2.ora
"/data/oracle/product/11.1/database/dbs/initrac11g2.ora" [New file]
spfile=+DATA/RAC11G/spfilerac11g.ora
下面登陆数据库,尝试启动实例2:
$ env|grep ORACLE_SID
ORACLE_SID=rac11g2
$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期五 9月 5 16:12:39 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3612855936 bytes
Database Buffers 1.3489E+10 bytes
Redo Buffers 4431872 bytes
数据库装载完毕。
数据库已经打开。
最后重新设置TEMP表空间:
SQL> alter database rename file '/dev/vx/rdsk/datavg/rac11g_temp_1_4g' to '+DATA/RAC11G/rac11g_temp_1_4g';
Database altered.
SQL> alter database tempfile '+DATA/RAC11G/rac11g_temp_1_4g' drop;
Database altered.
SQL> alter tablespace temp add tempfile '+DATA/RAC11G/rac11g_temp_1_4g' size 4096m;
Tablespace altered.
进行一些检查,检查数据库是否可以正常访问。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
rac11g1
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
rac11g1
rac11g2
在另一个节点进行检查:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
rac11g2
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
rac11g2
rac11g1
最后检查数据文件和日志文件:
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;
FILE_NAME
-----------------------------------------------------------------------------------
+DATA/rac11g/rac11g_system_1_1g
+DATA/rac11g/rac11g_sysaux_1_1g
+DATA/rac11g/rac11g_undotbs1_1_4g
+DATA/rac11g/rac11g_undotbs2_1_4g
+DATA/rac11g/rac11g_users_1_4g
+DATA/rac11g/rac11g_ndmain_1_32g
+DATA/rac11g/rac11g_ndmain_2_32g
+DATA/rac11g/rac11g_ndmain_3_32g
+DATA/rac11g/rac11g_ndmain_4_32g
+DATA/rac11g/rac11g_ndmain_5_32g
+DATA/rac11g/rac11g_ndmain_6_32g
+DATA/rac11g/rac11g_undotbs1_2_32g
+DATA/rac11g/rac11g_undotbs2_2_32g
+DATA/rac11g/rac11g_perfstat_1_8g
已选择14行。
SQL> SELECT FILE_NAME FROM DBA_TEMP_FILES;
FILE_NAME
---------------------------------------------------------------------------------------
+DATA/rac11g/rac11g_temp_1_4g
SQL> SELECT MEMBER FROM V$LOGFILE;
MEMBER
--------------------------------------------------------------------------------------
+DATA/rac11g/rac11g_redo1_1_1_1g
+DATA/rac11g/rac11g_redo1_2_1_1g
+DATA/rac11g/rac11g_redo2_2_1_1g
+DATA/rac11g/rac11g_redo2_2_2_1g
至此RAC数据库成功进行了恢复。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-450255/ ,如需转载,请注明出处,否则将追究法律责任。