Migrate database from single instance to Oracle RAC

us_yunleiwang發表於2013-12-05

Migrate database from single instance to Oracle RAC

# Preparation before restore
# Backup database
# check listener
# check ASM disk group free space is sufficient.
# the following steps was completed sucessful on Oracle 10g RAC + Suse Linux 10.

  1. Synopsis:  
  2. source DB : GOBO1 on file system  
  3. Target DB : GOBO1 on RAC +ASM  
  4. Target Instance: GOBO1A, GOBO1B  
  5. Target node: bo2dbp, bo2dbs  
  6. Source Env: Oracle 10g(10.2.0.3) + Suse 10  
  7. Target Env: Oracle 10g(10.2.0.3) RAC + ASM + RAW + Suse 10  
  8.       ORA_CRS_HOME=/u01/oracle/crs  
  9.       ORA_ASM_HOME=/u01/oracle/asm  
  10.       ORACLE_BASE=/u01/oracle  
  11.       ORACLE_HOME=/u01/oracle/db  
  12.   
  13. Step 1  
  14. # restore spfile  
  15.   export ORACLE_SID=GOBO1A  
  16.   rman target /  
  17.   startup nomount;  
  18.   restore spfile to pfile '/u01/oracle/db/dbs/initGOBO1A.ora'  
  19.   from '';  
  20.   shutdown immediate;  
  21.   
  22. Step 2  
  23. # create directory for instance on local file system.(two nodes)  
  24.   export ORACLE_SID=GOBO1  
  25.   mkdir -p /u01/oracle/admin/${ORACLE_SID}/{bdump,cdump,udump,adump}  
  26.   
  27. Step 3  
  28. #Modify pfile  
  29. #Remove original path and or change them to new path on target server.  
  30. #Add new item for cluster   
  31.     cp initGOBO1A.ora initGOBO1A.ora.bak  
  32.     vi initGOBO1A.ora  
  33.   GOBO1.__db_cache_size=230686720  
  34.   GOBO1.__java_pool_size=4194304  
  35.   GOBO1.__large_pool_size=4194304  
  36.   GOBO1.__shared_pool_size=289406976  
  37.   GOBO1.__streams_pool_size=0  
  38.   *.compatible='10.2.0.3.0'  
  39.     
  40.   #*.control_files='/u02/database/GOBO1/controlf/cntl1GOBO1.ctl','/u02/database/GOBO1/controlf/cntl2GOBO1.ctl',  
  41.   #'/u02/database/GOBO1/controlf/cntl3GOBO1.ctl'  
  42.   #*.core_dump_dest='/u02/database/GOBO1/cdump'  
  43.     
  44.   *.db_block_size=8192  
  45.   *.db_domain=''  
  46.   *.db_file_multiblock_read_count=16  
  47.   *.DB_FLASHBACK_RETENTION_TARGET=2880  
  48.   *.db_name='GOBO1'  
  49.     
  50.   #*.db_recovery_file_dest='/u02/database/GOBO1/flash_recovery_area'  
  51.     
  52.   *.db_recovery_file_dest_size=4G  
  53.     
  54.   *.dispatchers='(PROTOCOL=TCP) (SERVICE=GOBO1XDB)'  
  55.   *.job_queue_processes=10  
  56.     
  57.   #*.LOG_ARCHIVE_DEST_1='LOCATION=/u02/database/GOBO1/archive/'  
  58.     
  59.   *.log_archive_format='arch_%r_%t_%s.arc'  
  60.   *.open_cursors=300  
  61.   *.pga_aggregate_target=199229440  
  62.   *.processes=1000  
  63.   *.remote_login_passwordfile='EXCLUSIVE'  
  64.   *.sga_target=512M  
  65.   *.shared_pool_size=256M  
  66.     
  67.   #*.undo_management='AUTO'  
  68.   #*.undo_tablespace='UNDOTBS1'  
  69.   #*.user_dump_dest='/u02/database/GOBO1/udump'  
  70.   #*.UTL_FILE_DIR='/u02/database/GOBO1/udump'  
  71.   #*.background_dump_dest='/u02/database/GOBO1/bdump'  
  72.     
  73.   #Added new dump directory  
  74.   *.core_dump_dest='/u01/oracle/admin/GOBO1/cdump'  
  75.   *.user_dump_dest='/u01/oracle/admin/GOBO1/udump'  
  76.   *.UTL_FILE_DIR='/u01/oracle/admin/GOBO1/udump'  
  77.   *.background_dump_dest='/u01/oracle/admin/GOBO1/bdump'  
  78.   *.audit_file_dest='/u01/oracle/admin/GOBO1/adump'  
  79.     
  80.   *.cluster_database = TRUE   
  81.   *.cluster_database_instances = 2   
  82.   *.undo_management='AUTO'   
  83.   *.control_files='+DG1/GOBO1/controlf/cntl1GOBO1.ctl','+DG1/GOBO1/controlf/cntl2GOBO1.ctl'  
  84.     
  85.   GOBO1A.undo_tablespace='UNDOTBS1'  
  86.   GOBO1A.instance_name=GOBO1A   
  87.   GOBO1A.instance_number=1   
  88.   GOBO1A.thread=1   
  89.   #GOBO1A.local_listener=_  
  90.     
  91.   GOBO1B.undo_tablespace='UNDOTBS2'   
  92.   GOBO1B.instance_name=GOBO1B  
  93.   GOBO1B.instance_number=2   
  94.   #GOBO1B.thread=2   
  95.   #GOBO1B.local_listener=_  
  96.     
  97.   *.db_create_file_dest='+DG2'  
  98.   *.db_recovery_file_dest='+REV'  
  99.   *.log_archive_dest_1='LOCATION=+REV/GOBO1/archivelog'  
  100.   
  101. Step 4  
  102. #Create directory on ASM for new database  
  103. #Currently, seperate different file type to different disk group.  
  104.   
  105.     export ORACLE_SID=+ASM1  
  106.   asmcmd  
  107.   cd +DG1  
  108.   mkdir GOBO1  
  109.   cd GOBO1  
  110.   mkdir controlf parameterf onlinelog  
  111.     
  112.   cd +DG2  
  113.   mkdir GOBO1  
  114.   cd GOBO1  
  115.   mkdir datafile  
  116.     
  117. Step 5  
  118. #Create password on 2 nodes.  
  119.   $ORACLE_HOME/dbs/orapwd file=?/dbs/orapwGOBO1A password=oracle entries=10  
  120.     
  121.   $ORACLE_HOME/dbs/orapwd file=?/dbs/orapwGOBO1B password=oracle entries=10  
  122.       
  123. Step 6  
  124. #Generate spfile from pfile  
  125.   export ORACLE_SID=GOBO1A  
  126.   sqlplus / as sysdba  
  127.   startup nomount;  
  128.   create spfile='+DG1/GOBO1/parameterf/spfileGOBO1.ora' from pfile='/u01/oracle/db/dbs/initGOBO1A.ora'   
  129.   shutdown immediate;  
  130.     
  131.   echo "SPFILE='+DG1/GOBO1/parameterf/spfileGOBO1.ora'" >/u01/oracle/db/dbs/initGOBO1A.ora  # on node A ( two nodes)  
  132.   echo "SPFILE='+DG1/GOBO1/parameterf/spfileGOBO1.ora'" >/u01/oracle/db/dbs/initGOBO1B.ora  # on node B ( two nodes)  
  133.     
  134.   startup nomount;  
  135.   show parameter spfile;  
  136.   
  137. Step 7  
  138. #Restore controlfile from autobackup  
  139.   export ORACLE_SID=GOBO1A  
  140.   $ORACLE_HOME/bin/rman target /  
  141.   restore controlfile from '';  
  142.   sql 'alter database mount';    
  143.     
  144. Step 8  
  145. #Check datafile path and convert to ASM  
  146. #Restore Database  
  147.   sys@GOBO1> select file_id,file_name from dba_data_files order by 1;  
  148.     
  149.      FILE_ID FILE_NAME  
  150.   ---------- ------------------------------------------------------------  
  151.            1 /u02/database/GOBO1/oradata/sysGOBO1.dbf  
  152.            2 /u02/database/GOBO1/undo/undotbsGOBO1.dbf  
  153.            3 /u02/database/GOBO1/oradata/sysauxGOBO1.dbf  
  154.            4 /u02/database/GOBO1/undo/undotbsGOBO12.dbf  
  155.            5 /u02/database/GOBO1/oradata/GOBO1_account_tbl.dbf  
  156.            6 /u02/database/GOBO1/oradata/GOBO1_stock_tbl.dbf  
  157.            7 /u02/database/GOBO1/oradata/GOBO1_stock_l_tbl.dbf  
  158.            8 /u02/database/GOBO1/oradata/GOBO1_tx_tbl.dbf  
  159.            9 /u02/database/GOBO1/oradata/GOBO1_users_tbl.dbf  
  160.           10 /u02/database/GOBO1/oradata/GOBO1_account_idx.dbf  
  161.           11 /u02/database/GOBO1/oradata/GOBO1_stock_idx.dbf  
  162.           12 /u02/database/GOBO1/oradata/GOBO1_stock_l_idx.dbf  
  163.           13 /u02/database/GOBO1/oradata/GOBO1_tx_idx.dbf  
  164.           14 /u02/database/GOBO1/oradata/GOBO1_users_idx.dbf  
  165.           15 /u02/database/GOBO1/oradata/GOBO1_IES_IDX.DBF  
  166.           16 /u02/database/GOBO1/oradata/GOBO1_IES_TBL.DBF  
  167.           17 /u02/database/GOBO1/oradata/GOBO1_import_idx.dbf  
  168.           18 /u02/database/GOBO1/oradata/GOBO1_import_tbl.dbf  
  169.           19 /u02/database/GOBO1/oradata/GOBO1_fix_tx_idx.dbf  
  170.           20 /u02/database/GOBO1/oradata/GOBO1_fix_tx_tbl.dbf  
  171.           21 /u02/database/GOBO1/oradata/GOBO1_fix_users_idx.dbf  
  172.           22 /u02/database/GOBO1/oradata/GOBO1_fix_users_tbl.dbf  
  173.           23 /u02/database/GOBO1/oradata/xxxx_ipo_tbl.dbf  
  174.           24 /u02/database/GOBO1/oradata/xxxx_ipo_idx.dbf  
  175.   catalog start with '/install_source/rman_bak';      
  176.   run {   
  177.   set newname for datafile 1 to   '+DG2/GOBO1/datafile/sysGOBO1.dbf';               
  178.   set newname for datafile 2 to   '+DG2/GOBO1/datafile/undotbsGOBO1.dbf';           
  179.   set newname for datafile 3 to   '+DG2/GOBO1/datafile/sysauxGOBO1.dbf';            
  180.   set newname for datafile 4 to   '+DG2/GOBO1/datafile/undotbsGOBO12.dbf';          
  181.   set newname for datafile 5 to   '+DG2/GOBO1/datafile/GOBO1_account_tbl.dbf';      
  182.   set newname for datafile 6 to   '+DG2/GOBO1/datafile/GOBO1_stock_tbl.dbf';        
  183.   set newname for datafile 7 to   '+DG2/GOBO1/datafile/GOBO1_stock_l_tbl.dbf';      
  184.   set newname for datafile 8 to   '+DG2/GOBO1/datafile/GOBO1_tx_tbl.dbf';           
  185.   set newname for datafile 9 to   '+DG2/GOBO1/datafile/GOBO1_users_tbl.dbf';        
  186.   set newname for datafile 10 to  '+DG2/GOBO1/datafile/GOBO1_account_idx.dbf';      
  187.   set newname for datafile 11 to  '+DG2/GOBO1/datafile/GOBO1_stock_idx.dbf';        
  188.   set newname for datafile 12 to  '+DG2/GOBO1/datafile/GOBO1_stock_l_idx.dbf';      
  189.   set newname for datafile 13 to  '+DG2/GOBO1/datafile/GOBO1_tx_idx.dbf';           
  190.   set newname for datafile 14 to  '+DG2/GOBO1/datafile/GOBO1_users_idx.dbf';        
  191.   set newname for datafile 15 to  '+DG2/GOBO1/datafile/GOBO1_IES_IDX.DBF';          
  192.   set newname for datafile 16 to  '+DG2/GOBO1/datafile/GOBO1_IES_TBL.DBF';          
  193.   set newname for datafile 17 to  '+DG2/GOBO1/datafile/GOBO1_import_idx.dbf';       
  194.   set newname for datafile 18 to  '+DG2/GOBO1/datafile/GOBO1_import_tbl.dbf';       
  195.   set newname for datafile 19 to  '+DG2/GOBO1/datafile/GOBO1_fix_tx_idx.dbf';       
  196.   set newname for datafile 20 to  '+DG2/GOBO1/datafile/GOBO1_fix_tx_tbl.dbf';       
  197.   set newname for datafile 21 to  '+DG2/GOBO1/datafile/GOBO1_fix_users_idx.dbf';    
  198.   set newname for datafile 22 to '+DG2/GOBO1/datafile/GOBO1_fix_users_tbl.dbf';     
  199.   set newname for datafile 23 to  '+DG2/GOBO1/datafile/xxxx_ipo_tbl.dbf';           
  200.   set newname for datafile 24 to  '+DG2/GOBO1/datafile/xxxx_ipo_idx.dbf';           
  201.   restore database;     
  202.   switch datafile all;  
  203.   switch tempfile all;  
  204.   }   
  205.   
  206. Step 9  
  207. #Recover database  
  208.   recover database;  
  209.   
  210. Step 10  
  211. #Handle online redo log  
  212.   sys@GOBO1> select * from v$logfile;  
  213.     
  214.       GROUP# STATUS  TYPE    MEMBER                                                       IS_  
  215.   ---------- ------- ------- ------------------------------------------------------------ ---  
  216.            1         ONLINE  /u02/database/GOBO1/redolog/log1aGOBO1.log                   NO  
  217.            1         ONLINE  /u02/database/GOBO1/redolog/log1bGOBO1.log                   NO  
  218.            3         ONLINE  /u02/database/GOBO1/redolog/log3aGOBO1.log                   NO  
  219.            3         ONLINE  /u02/database/GOBO1/redolog/log3bGOBO1.log                   NO  
  220.            2         ONLINE  /u02/database/GOBO1/redolog/log2aGOBO1.log                   NO  
  221.            2         ONLINE  /u02/database/GOBO1/redolog/log2bGOBO1.log                   NO      
  222.     
  223.   alter database rename file '/u02/database/GOBO1/redolog/log1aGOBO1.log' to '+DG1/GOBO1/onlinelog/log1aGOBO1.log';   
  224.   alter database rename file '/u02/database/GOBO1/redolog/log1bGOBO1.log' to '+DG1/GOBO1/onlinelog/log1bGOBO1.log';   
  225.   alter database rename file '/u02/database/GOBO1/redolog/log3aGOBO1.log' to '+DG1/GOBO1/onlinelog/log3aGOBO1.log';   
  226.   alter database rename file '/u02/database/GOBO1/redolog/log3bGOBO1.log' to '+DG1/GOBO1/onlinelog/log3bGOBO1.log';   
  227.   alter database rename file '/u02/database/GOBO1/redolog/log2aGOBO1.log' to '+DG1/GOBO1/onlinelog/log2aGOBO1.log';   
  228.   alter database rename file '/u02/database/GOBO1/redolog/log2bGOBO1.log' to '+DG1/GOBO1/onlinelog/log2bGOBO1.log';   
  229.     
  230.   #Add online log for instance 2  
  231.   alter database add logfile thread 2 group 4   
  232.     ('+DG1/GOBO1/onlinelog/log4aGOBO1.log','+DG1/GOBO1/onlinelog/log4bGOBO1.log') size 20M;   
  233.   alter database add logfile thread 2 group 5   
  234.     ('+DG1/GOBO1/onlinelog/log5aGOBO1.log','+DG1/GOBO1/onlinelog/log5bGOBO1.log') size 20M;  
  235.   alter database add logfile thread 2 group 6  
  236.     ('+DG1/GOBO1/onlinelog/log6aGOBO1.log','+DG1/GOBO1/onlinelog/log6bGOBO1.log') size 20M;  
  237.     
  238.   
  239. Step 11  
  240. #open the database with resetlogs  
  241.     
  242.   alter database open resetlogs; --&gt if failed, recover database using backup controlfile until cancel by sqlplus;  
  243.   
  244. Step 12  
  245. #modify parameter   
  246.   alter system set thread=1 scope=spfile sid='GOBO1A';  
  247.   alter system set thread=2 scope=spfile sid='GOBO1B';  
  248.   alter database enable thread 2;      
  249.   
  250. Step 13  
  251. #add undo tablspace for instance 2  
  252.   alter system set undo_tablespace='UNDOTBS2' scope=spfile sid='GOBO1B';    
  253.   --&gtif current db has no undotbs2,create it firstly as follows  
  254.   create undo tablespace UNDOTBS2 datafile '+DG2/GOBO1/datafile/undotbs02.dbf' size 500m autoextnd on;   
  255.   
  256. Step 14  
  257. # add temporary tablespace and datafile   
  258.   
  259.   col file_name format a55  
  260.   select file_name,tablespace_name,bytes/1022/1024 from dba_temp_files;  
  261.   alter tablespace temp add tempfile '+DG2/GOBO1/datafile/temp.dbf' size 50m;  
  262.   alter tablespace goex_temp add tempfile '+DG2/GOBO1/datafile/goex_temp.dbf' size 50m;  
  263.   
  264. Step 15  
  265. # check default temporary tablespace for all users. If that are different from orginal database, amend them.  
  266.   
  267.   select username,default_tablespace,temporary_tablespace from dba_users;   
  268.   
  269. Step 16  
  270. #check parameter  
  271.   select * from v$option where parameter = 'Real Application Clusters';  
  272.   show parameter cluster;  
  273.   show parameter thread;  
  274.   show parameter instance_number;  
  275.   
  276. Step 17  
  277. # restart instance 1  
  278. # check alert log file  
  279.   
  280. Step 18  
  281. # start instance 2  
  282. # check alert log file  
  283.   
  284. Step 19  
  285. # check all instance is fine.  
  286.   select instance_number,instance_name,host_name from gv$instance;  
  287.   
  288. Step 20  
  289. #create cluster database specific views within the existing instance  
  290.   
  291.   $ORACLE_HOME/rdbms/admin/catclust.sql  
  292.     
  293. Step 21  
  294. # configure listener   
  295.   by netca  
  296.   ps -ef | grep lsnr  
  297.   crs_stat -t #check listener  
  298.     
  299. Step 22  
  300. #Add configuration to crs  
  301.   srvctl add database -d GOBO1 -o $ORACLE_HOME -p +DG1/GOBO1/parameterf/spfileGOBO1.ora   
  302.   srvctl add instance -d GOBO1 -i GOBO1A -n bo2dbp  
  303.   srvctl add instance -d GOBO1 -i GOBO1B -n bo2dbs  
  304.   
  305.   srvctl modify instance -d GOBO1 -i GOBO1A -s +ASM1  
  306.   srvctl modify instance -d GOBO1 -i GOBO1B -s +ASM2  
  307.   crs_stat -t  
  308.   
  309. Step 23  
  310. #Restart database  
  311. #Author : Robinson  
  312. #Blog : http://blog.csdn.net/robinson_0612  
  313.   
  314.   srvctl start database -d GOBO1    

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

相關文章