【ASM學習】普通資料庫向ASM例項的遷移(二)

楊奇龍發表於2010-08-27
--接著rman的做 在rman恢復時,資料庫是mount狀態的,這裡需要將資料開啟!
ORCL>conn system/yang[@]orcl as sysdba
已連線。
ORCL>alter database open;
資料庫已更改。
--將日誌檔案遷移到ASM 磁碟組中。在ASM中建立3組新的redo log
ORCL>alter database add logfile group 4 '+SYS_DATA/redo04.log' size 50m;
資料庫已更改。
ORCL>alter database add logfile group 5 '+SYS_DATA/redo05.log' size 50m;
資料庫已更改。
ORCL>alter database add logfile group 6 '+SYS_DATA/redo06.log' size 50m;
資料庫已更改。
---檢視源資料庫的redo log的狀態,要將group 1 2 3全部歸檔並替換為上一步建立的log
ORCL>select group#,status from v$log;
    GROUP# STATUS                                                               
---------- ----------------                                                     
         1 INACTIVE                                                            
         2 CURRENT                                                              
         3 INACTIVE                                                            
         4 UNUSED                                                               
         5 UNUSED                                                               
         6 UNUSED                                                               
已選擇6行。
ORCL>alter system switch logfile;
系統已更改。
ORCL>alter system switch logfile;
系統已更改。
ORCL>alter system switch logfile;
系統已更改。
ORCL>select group#,status from v$log;
    GROUP# STATUS                                                               
---------- ----------------                                                     
         1 INACTIVE                                                            
         2 ACTIVE                                                               
         3 INACTIVE                                                            
         4 ACTIVE                                                               
         5 ACTIVE                                                               
         6 CURRENT                                                              
已選擇6行。
---手工使資料庫產生檢查點,讓lgwr 寫redo到磁碟!
ORCL>alter system checkpoint;
系統已更改。
ORCL>select group#,status from v$log;
    GROUP# STATUS                                                               
---------- ----------------                                                     
         1 INACTIVE                                                            
         2 INACTIVE                                                            
         3 INACTIVE                                                            
         4 INACTIVE                                                            
         5 INACTIVE                                                            
         6 CURRENT                                                              
已選擇6行。
---刪掉不用的redo log
ORCL>alter database drop logfile group 1;
資料庫已更改。
ORCL>alter database drop logfile group 2;
資料庫已更改。
ORCL>alter database drop logfile group 3;
資料庫已更改。
---遷移時,rman沒有把臨時表空間遷移到ASM中,所以,向ASM中遷移TEMPFILE
ORCL>select file_name,tablespace_name from dba_temp_files;
FILE_NAME                               TABLESPACE_NAME                                                                 
---------------------------------       ---------------
F:\ORACL\ORADATA\ORCL\TEMP01.DBF        TEMP                                                                           
                                                                                
ORCL>alter tablespace temp add tempfile '+SYS_DATA';
表空間已更改。
ORCL>select member from v$logfile;
MEMBER                                                                          
--------------------------------------------------------------------------------
+SYS_DATA/redo04.log                                                            
+SYS_DATA/redo05.log                                                            
+SYS_DATA/redo06.log  ---這裡沒有考慮到分散日誌分佈的問題,實際應用中,要考慮的!
                                                         
ORCL>select file_name,tablespace_name from dba_temp_files;
FILE_NAME                                     TABLESPACE_NAME                                                                 
------------------------------                ---------------            
+SYS_DATA/orcl/tempfile/temp.265.727923505    TEMP                                                                            F:\ORACL\ORADATA\ORCL\TEMP01.DBF              TEMP                                                                           
                                                                                
ORCL>alter tablespace temp drop tempfile 'F:\ORACL\oradata\orcl\temp01.dbf';
表空間已更改。

--修改db_create_file_dest,db_recovery_file_dest,db_recovery_file_dest_size 的值!
ORCL>alter system set db_create_file_dest='+SYS_DATA\ORCL\ORADATA' scope=spfile;
系統已更改。
ORCL>alter system set db_recovery_file_dest='+FLASH_DATA' scope=spfile;
系統已更改。
ORCL>alter system set db_recovery_file_dest_size=1 G scope=spfile;
系統已更改。

再次向ASM磁碟中新增控制檔案!(遷移時,只有一個控制檔案)
ORCL>alter database backup controlfile to '+SYS_DATA\ORCL\ORADATA';
alter database backup controlfile to '+SYS_DATA\ORCL\ORADATA'
*
第 1 行出現錯誤:
ORA-01580: 建立控制備份檔案 +SYS_DATA\ORCL\ORADATA 時出錯
ORA-17502: ksfdcre: 4 未能建立檔案 +SYS_DATA\ORCL\ORADATA
ORA-15005: name "ORCL/ORADATA" is already used by an existing alias  
---當指定磁碟組的具體目錄時,會報錯!所以直接指定磁碟組就好了!
ORCL>alter database backup controlfile to '+SYS_DATA';
資料庫已更改。
ORCL>show parameter control
NAME                                 TYPE        VALUE                          
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7                              
control_files                        string      +SYS_DATA/orcl/oradata/control
                                                 01.ctl                        
control_management_pack_access       string      DIAGNOSTIC+TUNING              

---修改引數檔案中
ORCL>alter system set control_files='+SYS_DATA/ORCL/ORADATA/CONTROL01.CTL','+SYS_DATA/ORCL/ORADATA/CONTROL02.CTL' scope= spfile;
系統已更改。
ORCL>create pfile ='f:\asm_pfile.txt' from spfile;
檔案已建立。
ORCL>shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

-----------------------    備註       ----------------------------------
網上也有其他方法的,中間對於遷移日誌和temp 檔案的方法不太一樣!
--遷移redo log
透過SQL*Plus連入資料庫例項,將控制檔案裡記錄的聯機日誌檔案的路徑修改為磁碟組SYS_DATA。
SQL> alter database rename file 'F:\ORACL\ORADATA\ORCL\redo01.log' to '+SYS_DATA';
SQL> alter database rename file 'F:\ORACL\ORADATA\ORCL\redo02.log' to '+SYS_DATA';
SQL> alter database rename file 'F:\ORACL\ORADATA\ORCL\redo03.log' to '+SYS_DATA';
--遷移tempfile 透過rman 手工遷移!

RMAN> run{
2> switch tempfile 1 to '+SYS_DATA';
3> }

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

相關文章