利用RMAN把ORACLE 10G 64位降級爲32位

由於項目需要測試環境,原庫爲ORACLE 10.2.0.4 64位,環境導致需遷移到32位上機器上去,網上有很多32位升級到64位的文章,其實64位降級爲32位大同小異,數據字典的改變而已,可以利用冷備 RMAN等方法進行遷移,本文是利用RMAN進行遷移的,RMAN備份可以參考別的文章。


具體步驟如下。
1、遷移前一天停止RMAN腳本中的DELETE ALL INPUT來停止刪除歸檔日誌文件。
2、全備前使用V$LOG來確定當前的日誌序列號。
3、在當前服務器中新建目錄來保存RMAN備份文件。
4、使用RMAN全備腳本進行完整的RMAN備份,指定目錄到新建的目錄中。同時保存RMAN備份日誌,用來過後確定ORACLE控制文件所在的備份集備份片。
5、在原數據庫中使用CREATE PFILE FROM SPFILE來更新PFILE。
6、在目標服務器中新建數據庫,數據庫的名字和原數據庫一樣。
7、建立完成會刪除所有數據文件,日誌文件,控制文件,同時刪除SPFILE。
8、在目標服務器中新建目錄,此目錄和原服務器中的目錄一樣。
9、 通過FTP傳輸所有備份集備份片到目標服務器中新建的目錄中。
10、修改目標服務器中數據庫的PFILE,要求和原數據庫PFILE一樣。
11、啓動數據庫到NOMOUNT狀態。
12、在目標服務器中新建目錄用來存在恢復的控制文件,參照PFILE中的配置
13、進行控制文件恢復。
14、啓動數據庫到MOUNT狀態。
15、在目標服務器中新建目錄用來存放數據庫文件,建立歸檔目錄用來存放歸檔日誌,
    同時建立各種TRACE文件目錄。
16、通過RESOTRE來進行數據文件還原。
到此準備工作完成,下面的步驟爲進行數據恢復時的步驟
17、提取原庫的對象信息,在遷移完成後方便對比。
18、關閉應用,確定不會再有新的數據寫入到數據庫。
19、進行多次日誌切換,確保所有更改的數據都已經寫入到歸檔日誌,如果日誌文件爲三個進行四次切換即可。
20、通過原數據庫查看V$LOG來確定當前日誌序列,判斷出需要拷貝的歸檔日誌文件,爲了更加安全可以在最早的歸檔以前再多取幾個。
21、通過FTP拷貝原服務器歸檔日誌到目標服務器相應的目錄中。
22、通過RECOVER DATABASE UNTIL 來進行恢復。
23、使用ALTER DATABASE OPEN RESETLOGS來打開數據庫。
24、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
25、使用命令STARTUP MIGRATE啓動數據庫。
26、運行腳本utlirp.sql。
27、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
28、使用命令STARTUP來啓動數據庫。
29、運行腳本utlrp.sql。
30、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
31、使用命令STARTUP來啓動數據庫。
32、提取數據庫對象信息,和原庫的對象信息進行比對。
至此數據遷移完成。



建立好相關目錄 拷貝好所有的備份到與原庫上備份的相同目錄下 我的是/u01/app/oracle/backup


[root@itspf ~]# su - oracle
[oracle@itspf ~]$ cd /u01/app/oracle/
[oracle@itspf oracle]$ ls
oraInventory  product
[oracle@itspf oracle]$ mkdir admin
[oracle@itspf oracle]$ ls
admin  oraInventory  product
[oracle@itspf oracle]$ mkdir flash_recovery_area
[oracle@itspf oracle]$ mkdir archivelog
[oracle@itspf oracle]$ mkdir backup
[oracle@itspf oracle]$ mkdir oradata
[oracle@itspf oracle]$ cd admin
[oracle@itspf admin]$ mkdir itspfdb
[oracle@itspf admin]$ cd itspfdb/
[oracle@itspf itspfdb]$ mkdir adump
[oracle@itspf itspfdb]$ mkdir bdump
[oracle@itspf itspfdb]$ mkdir cdump
[oracle@itspf itspfdb]$ mkdir dpdump
[oracle@itspf itspfdb]$ mkdir pfile
[oracle@itspf itspfdb]$ mkdir udump
[oracle@itspf itspfdb]$ cd ..
[oracle@itspf admin]$ cd ..
[oracle@itspf oracle]$ cd ora
oradata/      oraInventory/ 
[oracle@itspf oracle]$ cd oradata/
[oracle@itspf oradata]$ mkdir itspfdb

從源庫拷貝一個PFLIE到新庫

SQL> startup mount from pfile='/soft/pfile20130710.ora'
ORACLE instance started.

Total System Global Area 1019215872 bytes
Fixed Size                  1271252 bytes
Variable Size             616565292 bytes
Database Buffers          394264576 bytes
Redo Buffers                7114752 bytes
ORA-02231: missing or invalid option to ALTER DATABASE


[root@itspf ~]# su - oracle

SQL> startup nomount pfile='/soft/pfile20130710.ora';

SQL>create spfile='/u01/app/oracle/product/10.2.0/db_1/dbs/spfileitspfdb.ora' from pfile='/soft/pfile20130710.ora';

-- 也可以利用RMAN在備份中恢復參數文件備份
RMAN> restore spfile to pfile '/u01/app/oracle/product/10.2.0/db_1/dbs/inititspfdb.ora' from '/u01/app/oracle/backup/c-4014947212-20130919-01';

-- 恢復控制文件
[oracle@itspf ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Sep 26 00:43:08 2013

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: itspfdb (not mounted)

RMAN> restore controlfile from '/u01/app/oracle/backup/c-4014947212-20130919-01';

RMAN> exit

Recovery Manager complete.

--還原數據庫
[oracle@itspf ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Sep 26 02:09:44 2013

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: itspfdb (not mounted)


RMAN> alter database mount;
RMAN> restore database


--恢復數據庫。

SQL>startup mount;

--在其中可能有需要幾個歸檔文件,可以把原庫當天備份的歸檔文件拷貝過來 選擇AUTO
SQL>recover database using  BACKUP CONTROLFILE until cancel;

SQL>alter database open resetlogs;

SQL>shutdown immediate


-- 進行降級後的操作
SQL>Shutdown immediate
SQL>startup migrate
SQL>@$ORACLE_HOME/rdbms/admin/utlirp.sql;
SQL>Shutdown immediate
SQL>Startup
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql;
SQL>Shutdown immediate
SQL>Startup
 

發佈了33 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章