單例項備份集恢復到RAC

fanhongjie發表於2010-09-10

//********************************************************************
1、恢復為單例項普通檔案系統
1)rman 備份原資料庫(在mount狀態下做)
RMAN> run{
CONFIGURE DEFAULT DEVICE TYPE TO 'disk';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
backup format='/tmp/database_%d_%s.bak' database plus archivelog;
}
******************************************************************//


[@more@]2)手工建立INITORCL.ORA初始化引數檔案(copy原始檔修改,此時可將
control_files,db_create_file_dest,db_recovery_file_dest(如果啟用flashback),log_archive_dest,各DUMP檔案,audit_file_dest
引數先設好)
audit_file_dest='/oracle/ora10g/admin/ORCL/adump'
background_dump_dest='/oracle/ora10g/admin/ORCL/bdump'
core_dump_dest='/oracle/ora10g/admin/ORCL/cdump'
user_dump_dest='/oracle/ora10g/admin/ORCL/udump'
#control files路徑也可以直接設為'+DATA',但考慮到恢復控制檔案時資料庫處於nomount狀態,ASM自動建立的目錄不會按資料庫名建立,
#會自動建立為DB_UNKNOWN,看起來不太一致,實際不影響使用。此時需手動建立asm目錄(使用asmcmd)。
control_files='+DATA/ORCL/CONTROLFILE/control01.ctl','+DATA/ORCL/CONTROLFILE/control02.ctl','+DATA/ORCL/CONTROLFILE/control03.ctl'
db_create_file_dest='+DATA'
db_name='ORCL'
db_recovery_file_dest='+RECOVERY'


//**********************************************************************************
3)將備份集複製到節點1
RMAN > restore CONTROLFILE from '/install_file/o1_mf_s_728857237_684gdrg2_.bkp';
RMAN > catalog backuppiece "/install_file/database_ORCL_8424.bak";
RMAN > run {
allocate channel d1 device type disk format '/install_file/database_%d_%s.bak';
restore database;
recover database until cancel using backup CONTROLFILE;--如果在MOUNT下備份的則不要恢復。
alter database open resetlogs;
release channel d1;
}

至此單例項普通檔案系統完成並開啟
***********************************************************************************//


對於大資料庫最好能使用NFS直接掛原庫檔案,避免多次傳遞檔案,很耗時。

NFS配置方法:
AIX:
Server端:
#smit mknfs
#smit mknfsexp --指定需要共享的nfs 本地檔案系統路徑
#showmount -e --檢視本地nfs共享是否成功
Client端:
#showmount -e serverIP --檢視遠端nfs共享是否成功
#smit mknfsmnt --掛載共享的nfs檔案系統 --需要編輯伺服器和客戶端的/etc/hosts檔案,做好ip與主機名的一一對應關心。

在192.168.70.50伺服器停止資料庫服務

2、轉換為單例項ASM系統

1)將CONTROL FILE轉到ASM

RMAN> restore CONTROLFILE from '/oracle/oradata/oradata/ORCL/control01.ctl';
--[sql> alter database backup CONTROLFILE to '+DATA/ORCL/CONTROLFILE/control02.ctl';]

有些作業系統會遭遇RMAN + NFS 的 bug,造成不能還原,解決的方法是在初始化引數里加:
event='10298 trace name context forever,level 32'

2)將資料檔案,聯機事務日誌檔案轉到ASM
RMAN> ALTER DATABASE MOUNT;
RMAN> backup as copy database format '+DATA';
RMAN> switch database to copy;
SQL> alter database rename file '/ora10g/oracle/oradata/ORCL/redo01.log' to '+DATA';
SQL> alter database rename file '/ora10g/oracle/oradata/ORCL/redo02.log' to '+DATA';
SQL> alter database rename file '/ora10g/oracle/oradata/ORCL/redo03.log' to '+DATA';
SQL> recover database;
SQL> alter database open RESETLOGS;

3)將臨時表空間轉到ASM,其實就是刪掉重建。
SQL> select tablespace_name,file_name from dba_temp_files;
SQL> alter tablespace temp add tempfile '+DATA';
SQL> alter database tempfile '/oracle/oradata/oradata/ORCL/temp01.dbf' drop;


//*****************************************************************
4)將聯機事務日誌檔案轉到ASM
SQL> select * from v$logfile;
SQL> select group#,status from v$log;
SQL> alter database add logfile group 4 size 100m;
SQL> alter database add logfile group 5 size 100m;
SQL> alter database add logfile group 6 size 100m;
SQL> alter system switch logfile;
--alter system checkpoint;
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;

********************************************************************//

5)將spfile轉到ASM,注意修改PFILE
SQL> create spfile='+DATA' from pfile;
$ cp SPFILEORCL.ORA SPFILEORCL.ORA.bak --備份原來的pfile
$ echo "SPFILE="+data/orcl/parameterfile/spfile.270.729184569"" > /oracle10g/product/db/dbs/initORCL.ora

3、轉換為RAC系統
1)修改相關引數,併為例項2建立獨立的undo,redo檔案
SQL> select * from v$option where parameter like 'Real%';
SQL> show parameter cluster
SQL> alter system set cluster_database=true scope=spfile;
SQL> alter system set cluster_database_instances=2 scope=spfile;
SQL> alter system set instance_number=1 scope=spfile sid='ORCL1';
SQL> alter system set instance_number=2 scope=spfile sid='ORCL2';
SQL> alter system set thread=1 scope=spfile sid='ORCL1';
SQL> alter system set thread=2 scope=spfile sid='ORCL2';

SQL> create undo tablespace undotbs2 datafile '+DATA' size 16m;
SQL> alter system set undo_tablespace='undotbs1' scope=spfile sid='ORCL1';
SQL> alter system set undo_tablespace='undotbs2' scope=spfile sid='ORCL2';

SQL> alter database add logfile thread 2 group 4 '+DATA' size 10m;
SQL> alter database add logfile thread 2 group 5 '+DATA' size 10m;
SQL> alter database add logfile thread 2 group 6 '+DATA' size 10m;

SQL> alter database enable thread 2;


2)在2個節點上分別建初始化引數檔案initORCL1.ora 和 initORCL2.ora,檔案內容很簡單為SPFILE="+data/orcl/parameterfile/spfile.270.729184569",這個和initORCL.ora一樣。
shutdown immediate,關閉資料庫,分別startup ORCL1、ORCL2例項。

3)檢查2個例項
SQL> select instance_number,instance_name,host_name from v$instance;
SQL> select instance_number,instance_name,host_name from gv$instance;

4)現在已經是叢集的資料庫了,整個恢復工作基本完成。

5)建立金鑰檔案
rac1$ orapwd file=$ORACLE_HOME/dbs/orapwORCL1 password=infowms2010
rac2$ orapwd file=$ORACLE_HOME/dbs/orapwORCL2 password=infowms2010


6)不過這時候透過crs_stat -t檢視的時候,還看不到新建立的ORCL資料庫資訊,這是正常的,因為手動恢復資料庫,其配置資訊並沒有維護到crs中,需要手動處理,操作如下:
$ srvctl add database -d ORCL -o $ORACLE_HOME -n ORCL -p +data/orcl/parameterfile/spfile.270.729184569
$ srvctl add instance -d ORCL -i ORCL1 -n wasdb01
$ srvctl add instance -d ORCL -i ORCL2 -n wasdb02

7)上述3條命令分別配置了資料庫和兩個例項,此時3項服務剛剛配置完成,crs中尚未同步其狀態,因此需要執行一下srvctl start database,然後再透過crs_stat即可檢視正確的狀態了:
$ srvctl start database -d ORCL


8)剩下的比如修改監聽、配置網路服務名等操作

分別在rac的兩臺節點上,新增下列內容到tnsnames.ora中

WASAPP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.38)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.40)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WASAPP)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)


9)修改客戶端配置
所有連線到rac資料庫的應用都需要在應用伺服器上新增到上面的內容tnsnames.ora中。
並在應用伺服器的hosts檔案中新增下列內容:
192.168.70.37 wasdb01
192.168.70.38 wasdb01-vip
192.168.70.39 wasdb02
192.168.70.40 wasdb02-vip

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/73920/viewspace-1038154/,如需轉載,請註明出處,否則將追究法律責任。

相關文章