生產系統32BITORACLE10G到64BIT遷移

gaopengtttt發表於2013-08-26

為了達到提升SGAPGA得目的我會調整引數,還由於為了最小化誤操作順利的完成資料遷移工作,我會在各個步驟中給中具體的引數值、命令和需要建立的目錄。這裡說明一下對於新的伺服器經過分析我準備為SGA分配16GB記憶體,PGA分配到3GB,剩餘的5GB來分配給系統使用。

1、遷移前幾天停止現有DATA GUARD,提前安裝好備庫伺服器的系統和資料庫軟體。

2、遷移前一天停止RMAN指令碼中的DELETE ALL INPUT來停止刪除歸檔日誌檔案。

3、全備前使用V$LOG來確定當前的日誌序列號,為確定恢復所需要的歸檔日誌檔案做好準備。

4、在當前伺服器中新建目錄(/??)來儲存RMAN備份檔案

5、使用RMAN全備命令進行完整的RMAN備份,指定目錄到新建的目錄(/??)中。同時儲存RMAN備份日誌,用來過後確定ORACLE控制檔案所在的備份集備份片。

命令如下:

         run {

            backup format "/??/db_%s_%p_%T"

            database plus archivelog

            format "/??/arch_%s_%p_%T";

  }

6、在原資料庫中使用CREATE PFILE FROM SPFILE來更新PFILE,保證所有的引數設定都是最新的

7、在目標伺服器中透過DBCA新建資料庫,資料庫的名字和原資料庫一樣,我們的生產庫就為POMSPRO,但是其他的檔案位置不需要更改,因為這個步驟只是為了建立初始例項(INSTANCE)

8、建立完成後刪除所有資料檔案,日誌檔案,控制檔案,同時刪除SPFILE

9、在目標伺服器中新建目錄,此目錄和原伺服器中的目錄一樣,及和第5步中的目錄一樣(/??),用來存放RMAN全備的備份集備份片。

10、透過FTP傳輸所有備份集備份片到目標伺服器中新建的目錄中及/??目錄中。

11、修改目標伺服器中資料庫的PFILE,要求和原資料庫PFILE一樣。然後修改部分引數,如下:

log_archive_dest_1='LOCATION=/u01/oradata/gelcprod10g

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)'

pga_aggregate_target = 3221225472

sga_max_size= 17179869184

sga_target= 17072495001

data guard 引數

    12、啟動資料庫到NOMOUNT狀態,此時例項已經啟動記憶體已經分配。

    13、在目標伺服器中新建目錄用來存在恢復的控制檔案,參照PFILE中的配置及建立如下目錄

/oradata/gelcprod10g/GELCPRO/

    14、使用命令恢復控制檔案,命令如下

         restore  controlfile from ‘/??/??’

         ??代表的是第5步確定的控制檔案所在的備份片

    15、啟動資料庫到MOUNT狀態,此時資料庫已經載入了控制檔案。

16、在目標伺服器中新建資料檔案目錄,日誌目錄,歸檔目錄,同時建立各種TRACE

檔案目錄。我們需要建立的目錄如下

/u01/oradata/gelcprod10g  歸檔位置

/oradata/gelcprod10g/GELCPRO/ 資料檔案所在位置

/oradata/gelcprod10g/GELCPRO/ 日誌檔案組1所在位置

/u01/oradata/gelcprod10g/GELCPRO/ 日誌檔案組2所在位置

/home/oraprod/admin/GELCPRO/adump

/home/oraprod/admin/GELCPRO/bdump

/home/oraprod/admin/GELCPRO/cbump

/home/oraprod/admin/GELCPRO/udump

/home/oraprod/admin/GELCPRO/dpdump

/home/oraprod/admin/GELCPRO/pfile

這些目錄用來存放各種TRACE

17、透過RESOTRE DATABASE來進行資料檔案還原

到此準備工作完成,下面的步驟需要斷開所有應用,停止所有業務進行操作

18、關閉應用,確定不會再有新的資料寫入到資料庫。

19、遷移前提取原庫的物件資訊,使用命令如下

select count(*) from user_tables;

       select count(*) from user_indexes;

       select count(*) from user_views;

       select count(*) from user_synonyms;

       select OBJECT_TYPE, count(*)

       from user_objects

       group by OBJECT_TYPE

having OBJECT_TYPE not in ('TABLE', 'INDEX', 'VIEW','SYNONYM');

       select count(*) from dba_users;

       select count(*) from dba_db_links;

       select count(*) from user_jobs;

 

20、進行多次日誌切換,確保所有更改的資料都已經寫入到歸檔日誌,我們的日誌組為3組所以進行4-6次切換保證所有的資料都進入了歸檔日誌,使用日下命令 ALTER SYSTEM SWITCH LOGFILE

21、透過在原資料庫檢視V$LOG來確定當前日誌序列(SEQUENCE#,判斷出需要複製的歸檔日誌檔案,為了更加安全可以在最早的歸檔以前再多取幾個。

22、透過FTP複製原伺服器歸檔日誌到目標伺服器相應的目錄中,及複製到目錄/u01/oradata/gelcprod10g中。

23、透過應用歸檔日誌檔案進行恢復。命令如下

    recover database until logseq **

    **代表最後一個歸檔日誌檔案的SEQUENCE#

24、使用ALTER DATABASE OPEN RESETLOGS來開啟資料庫。

25、使用命令SHUTDOWN IMMEDIATE來關閉資料庫。

26、使用命令STARTUP MIGRATE啟動資料庫。

27、執行rdbms/admin 下的utlirp.sql指令碼

28、使用命令SHUTDOWN IMMEDIATE來關閉資料庫。

29、使用命令STARTUP來啟動資料庫。

30、執行rdbms/admin 下的utlrp.sql指令碼

31、使用命令SHUTDOWN IMMEDIATE來關閉資料庫。

32、使用命令STARTUP來啟動資料庫。

到此資料遷移工作完成,下面的步驟進行IP切換和監聽配置,此時需要關閉原庫並且禁用網路服務,避免IP衝突

33、關閉原生產伺服器網路服務使用命令如下

    service network stop

34、修改/etc/sysconfig/network-scripts/ ifcfg-eth0引數如下

    DEVICE=eth0

BOOTPROTO=static

BROADCAST=192.168.8.255

IPADDR=192.168.8.9

NETMASK=255.255.255.0

NETWORK=192.168.8.0

ONBOOT=yes

TYPE=Ethernet

35、修改/etc/hosts中主機名所對應的IP 192.168.8.9

36、使用命令重啟網路服務,命令如下

    service network restart

37、透過FTP複製原資料庫的listener.oratnsnames.ora檔案到目標伺服器的network/admin目錄下

38、透過命令來重啟ORACLE監聽器,命令如下

    Lsnrctl stop

    Lsnrctl start

到此IP切換工作完成,下面的步驟是進行物件的驗證,作為DBA只能對資料庫中的各種物件進行驗證,而不會對具體的資料進行驗證

39、驗證使用者所擁有的表數量,使用如下命令

select count(*) from user_table;

40、驗證使用者所擁有的索引數量,使用如下命令

select count(*) from user_indexes;

41、驗證使用者所擁有的檢視數量,使用如下命令

select count(*) from user_views;

42、驗證使用者所擁有的同義詞數量,使用如下命令

select count(*) from user_synonyms;

43、驗證其他一些物件,包括過程,函式,觸發器等,使用如下命令

select OBJECT_TYPE, count(*)

from user_objects

group by OBJECT_TYPE

having OBJECT_TYPE not in ('TABLE', 'INDEX', 'VIEW');

    44、驗證所有使用者使用如下命令

         select count(*) from dba_users;

    45、驗證所用Dblink使用如下命令

select count(*) from dba_db_links;

    46、驗證使用者擁有的JOB使用如下命令

select count(*) from user_jobs;

         至此我們DBA所能做的資料驗證結束,需要開發人員進行詳細的資料抽樣驗證,等到資料驗證完成我們就可以啟動應用。

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

相關文章